# Purpose # ------- # Makefile for the CSIRO Mk3L climate system model. # # Usage # ----- # 'make' builds the model # 'make clean' tidies up afterwards # # History # ------- # 2006 May 16 Steven Phipps Original version # 2006 Jun 22 Steven Phipps -fpe0 added to the compiler options for # ac.apac.edu.au and lc.apac.edu.au # 2007 May 31 Steven Phipps (1) Modified to enable the new ocean model grid # (2) Removed redundant configuration # information for sc.apac.edu.au # 2007 Jun 2 Steven Phipps Removed redundant source file dencal.f # 2007 Jun 4 Steven Phipps Modified for the replacement of the OCEAN_DBL # preprocessor macro with OCEAN_LOW # 2007 Jun 20 Steven Phipps Added occoup1.f; removed tracer1.f # 2007 Oct 8 Steven Phipps Updated the libraries on ac.apac.edu.au to # version 9.1 of the Intel Fortran compiler # 2007 Dec 20 Steven Phipps Added conserve_fw2.f, downscale.f; removed # step0.f # 2008 Feb 3 Steven Phipps Added read_real_3d.f90 # 2008 Feb 4 Steven Phipps Removed r2fcfld.f # 2008 Feb 5 Steven Phipps Added read_int_2d.f90, read_real_2d.f90 # 2008 Mar 8 Steven Phipps Added oflux_read.f, oflux_write.f, # orest_read.f, orest_write.f; removed ocemon.f, # odam.f # 2008 Nov 10 Steven Phipps Macro definitions extracted to separate file # 2008 Nov 20 Steven Phipps Updated for conversion of hstring.c to Fortran; # merged with Makefile_low # 2009 Jan AJA the makefile components for CABLE are added # 2009 Apr 8 Steven Phipps Added m2003.f90 # 2009 May 11 Steven Phipps Added ocemon.f; tidied up list of object files # 2009 Aug 6 Steven Phipps Added hose.f ######################### # Macro definitions # ######################### include ../../bld/macros ####################### # Compile options # ####################### ifeq ($(OCEAN_LOW), yes) CPPFLAGS := $(CPPFLAGS) -DOCEAN_LOW endif #################### # Object files # #################### # Atmosphere model ATM = aplota.o aploti.o assel.o ateday.o atemon.o atstart.o atstep.o \ bvnfcalc.o c_aero.o checkl.o cldblk.o clddia.o cldset.o clo89.o \ cloud.o cloud2.o cloudm.o co2_read.o collst.o collstx.o comb_l.o \ conserve.o conserve_fw.o conserve_fw2.o conv.o convukmo.o cvmix.o \ datard.o diffn.o downscale.o dtogcray.o dynm.o dynmnl.o dynmst.o \ dynmvo.o e1e288.o e3v88.o ecread.o energy.o errcheck.o esbda.o \ esibda.o extend.o filerd.o filest.o filewr.o finterp.o fst88.o \ ftospec.o ftospec2.o gauleg.o gaussv.o gwdrag.o hadvect.o \ hconst.o hinterp.o hist_acc.o hist_cld.o hist_save.o hist_wlat.o \ hkuo.o hmread.o hsflux.o hstring.o hvertmx.o icecon.o icefhx.o \ icestat.o icefall.o icetau.o inital.o initax.o initfs.o \ initice.o jmcgslt.o just_fm.o landrun.o lgndre.o linear.o \ lwr88.o main.o matinv.o matset.o mfftga.o mfftma.o mmtx.o \ mtxmtx.o ncinit.o ncput.o nestarc.o newcloud.o newrain.o \ ngwdrag.o o3_read.o o3blk.o o3read_amip.o o3set.o o3set_amip.o \ ocforce.o ocicurr.o ocntau.o ocsave1.o openfl.o openhist.o \ orbpar.o ordleg.o phys.o physgm.o prdaily.o prmlomap.o progcld.o \ prsmap.o prtcd.o prtcl.o prtt.o przav.o ptogcray.o radcoupl.o \ radfs.o radh_l.o radhyb.o radin.o radrhs.o rads_l.o radsgrg.o \ radslab.o radstres.o radvars.o rainda.o read_int_2d.o \ read_real_2d.o read_real_3d.o readnml1.o reset.o seaice.o \ semiis.o setqcld.o solargh.o source.o spa88.o specam.o \ surfdiag.o surfset.o surfa.o surfupa.o surfb.o surfupb.o \ surfupl.o swr89.o table.o timet.o tmread.o traceout.o tracera.o \ transf.o trim.o trim3x.o ukall.o uvharm.o uvreal.o vadvect.o \ vinterp.o xtchemie.o xtemiss.o xtsink.o xtwetdep.o zenith.o \ zerogi.o zerost.o hose.o # Sea ice model ICE = advect.o cavit.o cavit2.o dynice.o flatme.o flatset.o icebound.o \ icediag.o icedrive.o icefree.o icesetup.o ltoh.o ltou.o \ polefilt.o timefilt.o wrapu.o # Ocean model OCE = clinic.o filter.o findex.o m2003.o matrix.o occoup1.o ocdatra.o \ ocdatro.o ocean.o ocemon.o ocend.o ocfinal.o ocinit.o \ oflux_read.o oflux_write.o orest_read.o orest_write.o relax.o \ state.o step.o tracer.o \ csiro_obgc.o chem.o ocmip_chem.o obgc_write.o # CABLE CABLE = cable_define_dimensions.o cable_math_constants.o \ cable_physical_constants.o cable_photosynthetic_constants.o \ cable_other_constants.o cable_iovars.o cable_define_types.o \ cable_abort.o casa_variable.o casa_cable.o casa_cnp.o casa_inout.o \ cable_soilsnow.o cable_carbon.o cable_radiation.o cable_air.o \ cable_albedo.o cable_roughness.o cable_parameters.o \ cable_read.o cable_checks.o cable_initialise.o cable_canopy.o \ cable_cbm.o cable_input.o cable_write.o cable_output.o CABLE_Mk3L.o # Coupled model OBJ = $(ATM) $(ICE) $(OCE) $(CABLE) ############################################ # Source files requiring preprocessing # ############################################ F_IN := $(wildcard *.F) F_OUT := $(F_IN:.F=.f) F90_IN := $(wildcard *.F90) F90_OUT := $(F90_IN:.F90=.f90) #################################### # Rules for building the model # #################################### model : PARAMS.f OPARAMS.f $(OBJ) $(FC) $(FFLAGS) $(OBJ) $(LIB) -traceback -fpe0 -lnetcdf -lnetcdff -L/home/mat236/opt/lib -lrfftw -L/home/mat236/opt/lib -lfftw -o model # $(FC) $(FFLAGS) $(OBJ) $(LIB) -ldrfftw -lfftw -lnetcdf -lnetcdff -o model # $(FC) $(FFLAGS) $(OBJ) $(LIB) -lrfftw -lfftw -lnetcdf -ltvheap_64 -o model clean : /bin/rm $(F_OUT) $(F90_OUT) *.o *.mod realclean : /bin/rm $(F_OUT) $(F90_OUT) *.o *.mod model .SUFFIXES : .f .F .f90 .F90 .o .F.f : $(CPP) $(CPPFLAGS) $< > $*.f # $(FC) $(FFLAGS) -c $(INC) $*.f .f.o : $(FC) $(FFLAGS) -c $(INC) $< .F90.f90 : $(CPP) $(CPPFLAGS) $< > $*.f90 # $(F90) $(F90FLAGS) -c $(INC) $*.f90 .f90.o : $(F90) $(F90FLAGS) -c $(INC) $< PARAMS.f : PARAMS.F $(CPP) $(CPPFLAGS) PARAMS.F PARAMS.f OPARAMS.f : OPARAMS.F $(CPP) $(CPPFLAGS) OPARAMS.F OPARAMS.f bvnfcalc.o : bvnfcalc.f90 $(F90) $(FIXEDFLAGS) -c $(INC) bvnfcalc.f90 ngwdrag.o : ngwdrag.f90 $(F90) $(FIXEDFLAGS) -c $(INC) ngwdrag.f90 o3read_amip.o : o3read_amip.f90 $(F90) $(FIXEDFLAGS) -c $(INC) o3read_amip.f90 o3set_amip.o : o3set_amip.f90 $(F90) $(FIXEDFLAGS) -c $(INC) o3set_amip.f90 clinic.o : clinic.f $(AUTO) $(AUTOFLAGS) -c $(INC) clinic.f state.o : state.f $(AUTO) $(AUTOFLAGS) -c $(INC) state.f step.o : step.f $(AUTO) $(AUTOFLAGS) -c $(INC) step.f tracer.o : tracer.F $(CPP) $(CPPFLAGS) tracer.F > tracer.f $(AUTO) $(AUTOFLAGS) -c $(INC) tracer.f # start of the CABLE part cable_define_dimensions.o: CABLE/cable_define_dimensions.f90 $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_define_dimensions.f90 cable_math_constants.o: CABLE/cable_math_constants.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_math_constants.f90 cable_physical_constants.o: CABLE/cable_physical_constants.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_physical_constants.f90 cable_photosynthetic_constants.o: CABLE/cable_photosynthetic_constants.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_photosynthetic_constants.f90 cable_other_constants.o: CABLE/cable_other_constants.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_other_constants.f90 cable_iovars.o: CABLE/cable_iovars.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_iovars.f90 cable_define_types.o: CABLE/cable_define_types.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_define_types.f90 cable_abort.o: CABLE/cable_abort.f90 $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_abort.f90 cable_soilsnow.o: CABLE/cable_soilsnow.f90 cable_define_types.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_soilsnow.f90 cable_carbon.o: CABLE/cable_carbon.f90 cable_define_types.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_carbon.f90 cable_radiation.o: CABLE/cable_radiation.f90 cable_define_types.o cable_math_constants.o cable_physical_constants.o cable_other_constants.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_radiation.f90 cable_air.o: CABLE/cable_air.f90 cable_physical_constants.o cable_define_types.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_air.f90 cable_albedo.o: CABLE/cable_albedo.f90 cable_define_types.o cable_other_constants.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_albedo.f90 cable_roughness.o: CABLE/cable_roughness.f90 cable_physical_constants.o cable_define_types.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_roughness.f90 cable_parameters.o: CABLE/cable_parameters.f90 cable_define_types.o cable_iovars.o cable_abort.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_parameters.f90 cable_read.o: CABLE/cable_read.f90 cable_iovars.o cable_abort.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_read.f90 cable_checks.o: CABLE/cable_checks.f90 cable_radiation.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_checks.f90 cable_initialise.o: CABLE/cable_initialise.f90 cable_read.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_initialise.f90 cable_canopy.o: CABLE/cable_canopy.f90 cable_radiation.o cable_air.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_canopy.f90 cable_cbm.o: CABLE/cable_cbm.f90 cable_canopy.o cable_roughness.o cable_carbon.o cable_soilsnow.o cable_albedo.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_cbm.f90 cable_input.o: CABLE/cable_input.f90 cable_initialise.o cable_checks.o cable_parameters.o cable_iovars.o cable_read.o cable_abort.o cable_radiation.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_input.f90 cable_write.o: CABLE/cable_write.f90 cable_iovars.o cable_abort.o cable_define_types.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_write.f90 cable_output.o: CABLE/cable_output.f90 cable_checks.o cable_write.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/cable_output.f90 CABLE_Mk3L.o: CABLE/CABLE_Mk3L.f90 cable_write.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/CABLE_Mk3L.f90 casa_variable.o: CABLE/casa_variable.f90 cable_define_dimensions.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/casa_variable.f90 casa_cable.o: CABLE/casa_cable.f90 cable_define_dimensions.o cable_define_types.o casa_variable.o cable_carbon.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/casa_cable.f90 casa_cnp.o: CABLE/casa_cnp.f90 cable_define_dimensions.o cable_define_types.o casa_variable.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/casa_cnp.f90 casa_inout.o: CABLE/casa_inout.f90 cable_define_dimensions.o cable_define_types.o casa_variable.o cable_iovars.o $(FC) $(CABLEFLAGS) -c $(INC) CABLE/casa_inout.f90