Changes and cleanups to enable compiling without physics
and without ioipsl.
IOIPSL related cleanups:
- bibio/writehist.F encapsulate the routine (which needs IOIPSL to function)
with #ifdef IOIPSL flag.
- dyn3d/abort_gcm.F, dyn3dpar/abort_gcm.F and dyn3dpar/getparam.F90:
use ioipsl_getincom module when not compiling with IOIPSL library,
in order to always be able to use getin() routine.
- removed unused "use IOIPSL" in dyn3dpar/guide_p_mod.F90
- calendar related issue: Initialize day_ref and annee_ref in iniacademic.F
(i.e. when they are not read from start.nc file)
Earth-specific programs/routines/modules:
create_etat0.F, fluxstokenc.F, limit_netcdf.F, startvar.F
(versions in dyn3d and dyn3dpar)
These routines and modules, which by design and porpose are made to function with
Earth physics are encapsulated with #CPP_EARTH cpp flag.
Earth-specific instructions:
- calls to qminimum (specific treatment of first 2 tracers, i.e. water) in
dyn3d/caladvtrac.F, dyn3d/integrd.F, dyn3dpar/caladvtrac_p.F,
dyn3dpar/integrd_p.F only if (planet_type == 'earth')
Interaction with parallel physics:
- routine dyn3dpar/parallel.F90 uses "surface_data" module (which is in the
physics ...) to know value of "type_ocean" . Encapsulated that with
#ifdef CPP_EARTH and set to a default type_ocean="dummy" otherwise.
- So far, only Earth physics are parallelized, so all the interaction between
parallel dynamics and parallel physics are encapsulated with #ifdef CCP_EARTH
(this way we can run parallel without any physics).
The (dyn3dpar) routines which contains such interaction are:
bands.F90, gr_dyn_fi_p.F, gr_fi_dyn_p.F, mod_interface_dyn_phys.F90
This should later (when improving dyn/phys interface) be encapsulated
with a more general and appropriate #ifdef CPP_PHYS cpp flag.
I checked that these changes do not alter results (on the simple
32x24x11 bench) on Ciclad (seq & mpi), Brodie (seq, mpi & omp) and
Vargas (seq, mpi & omp).
EM
|