Ignore:
Timestamp:
Sep 19, 2012, 8:26:55 PM (12 years ago)
Author:
aslmd
Message:

LMDZ.GENERIC. (Sorry for long text but this is a quite major commit)

Paving the path for parallel computations. And moving towards a more flexible code.

Automatic allocation is used within all routines in phystd. No further mention to ngridmx and nqmx.

  1. ngridmx and nqmx are still used in LMDZ.GENERIC in the dyn3d part
  2. if the LMDZ4/LMDZ5 dynamical core is used, there is no more fixed dimensions ngridmx and nqmx --> a fully flexible parallel implementation is now possible (e.g. no need to recompile when changing numbers of processors)

The important stuff :

  • Compilation checked with ifort. OK with and without debug mode. No errors. Checked for: gcm, newstart, rcm1d, kcm1d
  • RUN GCM: Running an Earth test case. Comparison with previous revision --> debug mode : perfect match. bit by bit (diff command). checked with plots --> O1 mode : close match (checked with plots) --> O2 mode : sometimes up to 0.5 K departure.... BUT in this new version O2 and O1 are quite close while in previous version O1 and O2 differed by about, well, typically 0.5 K (pictures available on request)
  • RUN NEWSTART : perfect match (bit-by-bit) in either debug or normal mode.
  • RUN RCM1D : perfect match in normal mode.
  • RUN KCM1D : not tested (I don't know what is the use of kcm1d)

List of main changes :

  • Additional arguments to some subroutines (ngrid and nq)
  • F77 include strategy is obsolete and replaced by F90 module strategy In this new strategy arrays are allocatable and allocated once at first use This has to be done for all common featuring arrays defined with ngridmx or nqmx

surfdat.h >> surfdat_h.F90
tracer.h >> tracer_h.F90
comsaison.h >> comsaison_h.F90
comgeomfi.h >> comgeomfi_h.F90
comsoil.h >> comsoil_h.F90
comdiurn.h >> comdiurn_h.F90
fisice.h >> DELETED. was not used. probably a fossil.
watercap.h >> DELETED. variable put in surfdat_h.F90

  • F77 'save' strategy is obsolete and replaced by F90 'allocatable save' strategy (see previous point and e.g. new version of physiq.F90)
  • Suppressing any mention to advtrac.h which is a common in the dynamics and needs nqmx This was easily solved by adding an argument with tracer names, coming from the dynamics This is probably not a definitive solution, ... but this allows for generic physics to work easily with either LMDZ.GENERIC or LMDZ dynamical cores
  • Removing consistency tests between nq and nqmx ; and ngrid and ngridmx. No use now!
  • Adaptation of rcm1d, kcm1d, newstart given above-mentioned changes

A note on phyetat0 and soil_setting:

  • Now written so that a slice of horizontal size 'ngrid' starting at grid point 'cursor' is read in startfi.nc 'cursor' is defined in dimphys.h and initialized by inifis (or in newstart) this is useful for parallel computations. default behavior is the usual one : sequential runs, cursor is 1, size ngrid is the whole global domain

A note on an additional change :

  • nueffrad is now an argument to callcorrk as is the case for reffrad both are saved in physiq this is for consistency and lisibility (previously nueffrad was saved in callcorrk) ... but there is a call to a function which modifies nueffrad in physiq ... previously this was not modifying nueffrad (although it was quite cumbersome to detect this) ... to be conservative I kept this behaviour and highlighted it with an array nueffrad_dummy ... I added a comment because someone might want to change this
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r786 r787  
    769769- Correction in soil_setting to allow change of the number of subsurface layers
    770770
     771== 19/09/2012 == AS
     772
     773(Sorry for long text but this is a quite major commit)
     774
     775Paving the path for parallel computations. And moving towards a more flexible code.
     776
     777Automatic allocation is used within all routines in phystd. No further mention to ngridmx and nqmx.
     778
     7791. ngridmx and nqmx are still used in LMDZ.GENERIC in the dyn3d part
     7802. if the LMDZ4/LMDZ5 dynamical core is used, there is no more fixed dimensions ngridmx and nqmx
     781   --> a fully flexible parallel implementation is now possible (e.g. no need to recompile when changing numbers of processors)
     782
     783The important stuff :
     784- Compilation checked with ifort. OK with and without debug mode. No errors.
     785  Checked for: gcm, newstart, rcm1d, kcm1d
     786- RUN GCM: Running an Earth test case. Comparison with previous revision
     787  --> debug mode : perfect match. bit by bit (diff command). checked with plots
     788  --> O1 mode : close match (checked with plots)
     789  --> O2 mode : sometimes up to 0.5 K departure....
     790  BUT in this new version O2 and O1 are quite close while in previous version O1 and O2 differed by about, well, typically 0.5 K
     791  (pictures available on request)
     792- RUN NEWSTART : perfect match (bit-by-bit) in either debug or normal mode.
     793- RUN RCM1D : perfect match in normal mode.
     794- RUN KCM1D : not tested (I don't know what is the use of kcm1d)
     795
     796List of main changes :
     797- Additional arguments to some subroutines (ngrid and nq)
     798- F77 include strategy is obsolete and replaced by F90 module strategy
     799  In this new strategy arrays are allocatable and allocated once at first use
     800  This has to be done for all common featuring arrays defined with ngridmx or nqmx
     801    surfdat.h >> surfdat_h.F90
     802    tracer.h >> tracer_h.F90
     803    comsaison.h >> comsaison_h.F90
     804    comgeomfi.h >> comgeomfi_h.F90   
     805    comsoil.h >> comsoil_h.F90
     806    comdiurn.h >> comdiurn_h.F90
     807    fisice.h >> DELETED. was not used. probably a fossil.
     808    watercap.h >> DELETED. variable put in surfdat_h.F90
     809- F77 'save' strategy is obsolete and replaced by F90 'allocatable save' strategy
     810  (see previous point and e.g. new version of physiq.F90)
     811- Suppressing any mention to advtrac.h which is a common in the dynamics and needs nqmx
     812  This was easily solved by adding an argument with tracer names, coming from the dynamics
     813  This is probably not a definitive solution,
     814  ... but this allows for generic physics to work easily with either LMDZ.GENERIC or LMDZ dynamical cores
     815- Removing consistency tests between nq and nqmx ; and ngrid and ngridmx. No use now!
     816- Adaptation of rcm1d, kcm1d, newstart given above-mentioned changes
     817
     818A note on phyetat0 and soil_setting:
     819- Now written so that a slice of horizontal size 'ngrid' starting at grid point 'cursor' is read in startfi.nc
     820  'cursor' is defined in dimphys.h and initialized by inifis (or in newstart)
     821  this is useful for parallel computations.
     822  default behavior is the usual one : sequential runs, cursor is 1, size ngrid is the whole global domain
     823
     824A note on an additional change :
     825- nueffrad is now an argument to callcorrk as is the case for reffrad
     826  both are saved in physiq
     827  this is for consistency and lisibility (previously nueffrad was saved in callcorrk)
     828  ... but there is a call to a function which modifies nueffrad in physiq
     829  ... previously this was not modifying nueffrad (although it was quite cumbersome to detect this)
     830  ... to be conservative I kept this behaviour and highlighted it with an array nueffrad_dummy
     831  ... I added a comment because someone might want to change this
Note: See TracChangeset for help on using the changeset viewer.