[MITgcm-devel] planning to change external_forcing.F

Jean-Michel Campin jmc at ocean.mit.edu
Sat Jul 5 22:01:44 EDT 2014


Hi,

I am going to make some changes in external_forcing.F
that will result in adding all forcing in local 2-D arrays
(instead of directly in global common block variables
gU,gV,gT,gS ); this will facilitate forcing time-stepping options
(e.g., forcing part of Adams-Bashforth or outside AB) and
diagnostics of forcing terms.

Since some users have a customized version of external_forcing.F
with specific forcing added there (in fact the argument list of the
4 S/R in external_forcing.F has not changed since march 2001),
I was thinking of providing a backward compatibility option (through
a CPP option, e.g.  USE_OLD_EXTERNAL_FORCING) to enable to use the old 
external_forcing.F subroutines; this involve having an other (new) version 
of external_forcing.F with new S/R names (suggest "apply_forcing.F")
and only use external_forcing.F if the backward compat CPP option 
(USE_OLD_EXTERNAL_FORCING) is defined. 

I was not going to duplicate all the different pkg routines that are 
called from external_forcing.F, and going directly to update them (step.1)
If, for some reasons, you think we should have also an 
USE_OLD_EXTERNAL_FORCING version of one of these routines,
(but duplicate version are tricky to maintained) would be good to know 
this quickly.

Later on (step.2), planning to add new file "apply_forcing.F" containing all 
the code previously in external_forcing.F, but with new argument list; but in 
case USE_OLD_EXTERNAL_FORCING is defined, each of the 4 apply_forcing S/R 
(_U,_V,_T,_S) would just call the corresponding external_forcing S/R.
And finally (step.3), the real true changes involving simplification of
forcing time-stepping code (forcing_In_AB) and forcing diagnostics.

The list of files affected by step.1 is: external_forcing.F and
 aim_tendency_apply.F
 atm_phys_tendency_apply.F
 bbl_tendency_apply.F
 fizhi_tendency_apply.F
 frazil_tendency_apply.F
 gchem_add_tendency.F
 icefront_tendency_apply.F
 mypackage_tendency_apply.F
 obcs_sponge.F
 ptracers_forcing.F  (renamed to: ptracers_apply_forcing.F)
 ptracers_integrate.F
 rbcs_add_tendency.F
 salt_plume_tendency_apply_s.F
 salt_plume_tendency_apply_t.F
 shelfice_forcing.F
 taueddy_external_forcing.F (renamed to: taueddy_tendency_apply.F)
If you have any "ready to check-in" modifications in the pipeline
for any of these routines, let me know (in case it would be easier 
to get these modifications first).

Cheers,
Jean-Michel

PS: I don't expect any changes in the results from step.1, but 
 step.2 (if USE_OLD_EXTERNAL_FORCING is defined) or step.3 could
introduce some machine truncation differences in the results. 



More information about the MITgcm-devel mailing list