make_coupler.m
(POLAIR)


#
# makefile for POLAIR's COUPLER code 
#

#
# parameters passed in:
#
#   C_COMPILER...       c compiler 
#   CPP...              c preprocessor passed into fortran 90
#   DEBUGER...          debug options
#   F_COMPILER...       fortran 90 compiler 
#   LINKER...           linker options
#   OPEN_MP...          openmp options
#   OPTIMIZER...        optimizer options
#   PROFILER...         profiler options
#
# note: (1) libraries of other models are built elsewhere
#       (2) all compiling performed in scratch directory
#

#
# list, SOURCES objects for COUPLER routines
#

 COUPLER_SOURCES_OBJECTS =           \
                                     \
     ./c_boundary.o                  \
     ./c_coriolis.o                  \
     ./c_cpu_usage.o                 \
     ./c_message.o                   \
     ./c_dimensions_calculate.o      \
     ./c_driver_polair.o             \
     ./c_dynamic_allocate.o          \
     ./c_euler_rotation.o            \
     ./c_external_functions.o        \
     ./c_fill_undef_2d.o             \
     ./c_fill_undef_2d_laplace.o     \
     ./c_fill_undef_3d.o             \
     ./c_fill_poles.o                \
     ./c_get_direct.o                \
     ./c_grads_control.o             \
     ./c_grads_control_header.o      \
     ./c_grads_control_interval.o    \
     ./c_grads_control_time_series.o \
     ./c_grads_disk_storage.o        \
     ./c_grads_forcing.o             \
     ./c_grads_put.o                 \
     ./c_grads_results.o             \
     ./c_grads_time_series.o         \
     ./c_increment_time_series.o     \
     ./c_indicies_weights.o          \
     ./c_init.o                      \
     ./c_interp.o                    \
     ./c_interp_1d.o                 \
     ./c_interp_2d.o                 \
     ./c_interp_3d.o                 \
     ./c_interp_4d.o                 \
     ./c_interp_weights.o            \
     ./c_iofiles.o                   \
     ./c_iofiles_grads.o             \
     ./c_julian_day.o                \
     ./c_leap_year.o                 \
     ./c_legal.o                     \
     ./c_legal_context.o             \
     ./c_legal_other.o               \
     ./c_make_xy.o                   \
     ./c_millennium.o                \
     ./c_model_time.o                \
     ./c_namelist.o                  \
     ./c_notify.o                    \
     ./c_orography.o                 \
     ./c_orography_bogus.o           \
     ./c_orography_etopo5.o          \
     ./c_orography_ibcao.o           \
     ./c_orography_masks.o           \
     ./c_orography_scripps.o         \
     ./c_orography_tune.o            \
     ./c_put_direct.o                \
     ./c_restart_control.o           \
     ./c_restart_get.o               \
     ./c_restart_put.o               \
     ./c_rotate_domain.o             \
     ./c_seed_random.o               \
     ./c_shift.o                     \
     ./c_smoothing.o                 \
     ./c_stop.o                      \
     ./c_vis5d_orography.o
   
#    c_vis5d_binio.o  \
#    c_grads_time.o   \
#    c_odb_clang.o    \
#    c_odb_flang.o    \

#
# list, MODULES objects for COUPLER routines
# (important to specify non-inclusive order,
#  achive this by breaking into pieces A,B,C)
#

 COUPLER_MODULES_OBJECTS_A =        \
                                    \
     ./c_module_selected_kinds.o

 COUPLER_MODULES_OBJECTS_B =        \
                                    \
     ./c_module_dimensions.o        \
     ./c_module_mach_consts.o       \
     ./c_module_phys_consts.o       \
     ./c_module_switches.o

 COUPLER_MODULES_OBJECTS_C =       \
                                   \
     ./c_module_byte.o             \
     ./c_module_checker_board.o    \
     ./c_module_coordinates.o      \
     ./c_module_euler_rotation.o   \
     ./c_module_experiment.o       \
     ./c_module_grads.o            \
     ./c_module_grid.o             \
     ./c_module_lateral_stess.o    \
     ./c_module_legal_setup.o      \
     ./c_module_model_time.o       \
     ./c_module_orography.o        \
     ./c_module_parallel.o         \
     ./c_module_restart.o          \
     ./c_module_time_series.o      \
     ./c_module_wall_time.o        \
     ./c_module_walls_relax.o

#    c_module_grid_utility.o       \

#
# list, INCLUDES for COUPLER routines
#

 COUPLER_INCLUDES = ./c_include.h          \
                    ./c_include_nofnxs.h   \
                    ./c_include_trailer.h  \
                    ./c_interface.h

#
# target, for entire polair system 
# (exact name dependent on particular expt and id number)
#

 ${EXECUTABLE} :        ${POLAIR_LIB_MODULES}  \
                        ${POLAIR_LIB_SOURCES}  \
                        ./c_driver_polair.o
	/bin/rm -f      ${EXECUTABLE}
	${LINKER}  -o   ${EXECUTABLE}          \
                        ${OPEN_MP}             \
                        ${OPTIMIZER}           \
                        ${PROFILER}            \
                        ${DEBUGER}             \
                        ./c_driver_polair.o    \
                        ${POLAIR_LIB}          \
                        ${MPI_LIB}             \
                        ${NETCDF_LIB}
 
#
# target, for SOURCES library of COUPLER 
#
                       
 lib_c_sources.a :     ./lib_c_modules.a           \
                       ${COUPLER_SOURCES_OBJECTS}
	/bin/rm -f     ./lib_c_sources.a
	${ARCHIVE} -r  ./lib_c_sources.a ./c_*.o
	${ARCHIVE} -d  ./lib_c_sources.a ./c_driver_polair.o

#
# target, for MODULES library of COUPLER
#

 lib_c_modules.a :    ${COUPLER_MODULES_OBJECTS_A} \
                      ${WAIT_DMAKE}                \
                      ${COUPLER_MODULES_OBJECTS_B} \
                      ${WAIT_DMAKE}                \
                      ${COUPLER_MODULES_OBJECTS_C}
	 /bin/rm -f     ./lib_c_modules.a
	 ${ARCHIVE} -r  ./lib_c_modules.a c_module_*.o
	 ${ARCHIVE} -r  ./lib_c_modules.a ${C_MODULE_CASE}*.${MODULE_EXT}

#
# dependency, for SOURCES objects (and driver)
#

 ${COUPLER_SOURCES_OBJECTS} : ./lib_c_modules.a     \
                              ${COUPLER_INCLUDES}

#
# dependency, for MODULES objects (is null)
#

 ${COUPLER_MODULES_OBJECTS_A} :
 ${COUPLER_MODULES_OBJECTS_B} :
 ${COUPLER_MODULES_OBJECTS_C} :

#
# dependency, .WAIT is null rule 
#  (for backward compatability of dmake to make)
# 

 .WAIT:

#
# dependency, for INCLUDE files
#  (includes have no dependencies)
#

 ${COUPLER_INCLUDES}:

#
# generic rule, for compiling 
#

.f.o:
	${F_COMPILER} ${OPEN_MP}     \
                      ${OPTIMIZER}   \
                      ${LISTING}     \
                      ${DEBUGER}     \
                      ${CPP}         \
                    ./$*.f
          
#
# specific rule, for compiling (e.g. no optimizing)
#

 c_grads_control.o:
	${F_COMPILER} ${NOT_OPTIMIZER}        \
                      ${LISTING}             \
                      ${DEBUGER}             \
                      ${CPP}                 \
                      ./c_grads_control.f
 
 c_grads_control_header.o:
	${F_COMPILER} ${NOT_OPTIMIZER}           \
                      ${LISTING}                 \
                      ${DEBUGER}                 \
                      ${CPP}                     \
                      ./c_grads_control_header.f
 
 c_grads_forcing.o:
	${F_COMPILER} ${NOT_OPTIMIZER}        \
                      ${LISTING}             \
                      ${DEBUGER}             \
                      ${CPP}                 \
                      ./c_grads_forcing.f
 c_grads_results.o:
	${F_COMPILER} ${NOT_OPTIMIZER}        \
                      ${LISTING}              \
                      ${DEBUGER}              \
                      ${CPP}                  \
                      ./c_grads_results.f

 c_interp.o:
	${F_COMPILER} ${NOT_OPTIMIZER} \
                      ${LISTING}       \
                      ${DEBUGER}       \
                      ${CPP}           \
                      ./c_interp.f

 c_restart_get.o:
	${F_COMPILER} ${NOT_OPTIMIZER} \
                      ${LISTING}       \
                      ${DEBUGER}       \
                      ${CPP}           \
                      ./c_restart_get.f

 c_restart_put.o:
	${F_COMPILER} ${NOT_OPTIMIZER}   \
                      ${LISTING}         \
                      ${DEBUGER}         \
                      ${CPP}             \
                      ./c_restart_put.f

 c_seed_random.o:
	${F_COMPILER} ${NOT_OPTIMIZER}  \
                      ${LISTING}        \
                      ${DEBUGER}        \
                      ${CPP}            \
                      ./c_seed_random.f

#
# specific rule, for compiling (senya's odb interface)
#

 c_odb_clang.o:
	${C_COMPILER} ./c_odb_clang.c

 c_odb_flang.o:
	${F_COMPILER} ./c_odb_flang.f

#
# target, compile cleanup the lot of source code
#  (using a recursive delete ... caution)
#

#delete_sources:
#cd ${POLAIR_CODE_LOCAL}
#/bin/rm -r ${POLAIR_CODE_LOCAL}

#echo 'LISTING OF CODE DIRECTORY ...'
#ls -al ${POLAIR_CODE_LOCAL}

#
# target, compile cleanup the lot of binaries
#  (never use a recursive delete)
#

 delete_binaries:
	cd ${DATA_BIN_LOCAL}
	/bin/rm ${DATA_BIN_LOCAL}/*.e
	/bin/rm ${DATA_BIN_LOCAL}/*.a
	/bin/rm ${DATA_BIN_LOCAL}/*.{mod,kmo}
	/bin/rm ${DATA_BIN_LOCAL}/a_*.o
	/bin/rm ${DATA_BIN_LOCAL}/a_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/c_*.o
	/bin/rm ${DATA_BIN_LOCAL}/c_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/d_*.o
	/bin/rm ${DATA_BIN_LOCAL}/d_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/g_*.o
	/bin/rm ${DATA_BIN_LOCAL}/g_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/i_*.o
	/bin/rm ${DATA_BIN_LOCAL}/i_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/l_*.o
	/bin/rm ${DATA_BIN_LOCAL}/l_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/m_*.o
	/bin/rm ${DATA_BIN_LOCAL}/m_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/o_*.o
	/bin/rm ${DATA_BIN_LOCAL}/o_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/x_*.o
	/bin/rm ${DATA_BIN_LOCAL}/x_*.{l,L}
	/bin/rm ${DATA_BIN_LOCAL}/*
	
	echo 'LISTING OF BIN DIRECTORY ...'
	ls -al ${DATA_BIN_LOCAL}

#
# eof: makefile POLAIR's COUPLER code
#
.
© David Holland.
All Rights Reserved.
If you would like further information
concerning any of the above topics
please send email
.