Changeset 9169


Ignore:
Timestamp:
2017-12-26T17:32:56+01:00 (3 years ago)
Author:
gm
Message:

dev_merge_2017: all SRC: finalize the removal of useless warning when reading namelist_cfg + remove all nn_closea + nn_msh replaced by a logical

Location:
branches/2017/dev_merge_2017/NEMOGCM
Files:
108 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r9019 r9169  
    3939   nn_bathy    =    0      !  compute (=0) or read (=1) the bathymetry file 
    4040   rn_bathy    = 4198.     !  value of the bathymetry. if (=0) bottom flat at jpkm1 
    41    nn_msh      =    0      !  create (=1) a mesh file or not (=0) 
     41   ! 
    4242   rn_rdt      =  360.     !  time step for the dynamics  
    4343   ppglam0     =    -150.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r9019 r9169  
    3737!----------------------------------------------------------------------- 
    3838   ln_linssh   = .true.    !  =T  linear free surface  ==>>  model level are fixed in time 
    39    ! 
    40    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
    4139   ! 
    4240   rn_rdt      = 7200.     !  time step for the dynamics (and tracer if nn_acc=0) 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r9019 r9169  
    3737!----------------------------------------------------------------------- 
    3838   ln_linssh   = .true.    !  =T  linear free surface  ==>>  model level are fixed in time 
    39    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
     39   ! 
    4040   rn_rdt      = 7200.     !  time step for the dynamics (and tracer if nn_acc=0) 
    4141/ 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/1_namelist_cfg

    r9063 r9169  
    2323!-----------------------------------------------------------------------   
    2424   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    25    nn_closea   =    0      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    2625   ! 
    2726   rn_rdt      = 2880.     !  time step for the dynamics (and tracer if nn_acc=0) 
    28    ! 
    2927/ 
    3028!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_cfg

    r9061 r9169  
    2121!----------------------------------------------------------------------- 
    2222   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    23    ! 
    24    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
    25    ! 
    2623/ 
    2724!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/IDL_scripts/README

    r7732 r9169  
    1919wget --recursive -l2 --no-directories --no-parent -A.nc -erobots=off http://dodsp.idris.fr/reee512/NEMO_OUT/ORCA2_LIM/ 
    2020 
    21 You will aslo need the meshmask file (set nn_msh = 1 or nn_msh = 7 in your namelist and run the model for at least 1 time step). 
     21You will aslo need the meshmask file (set ln_meshmask = TRUE in your namelist and run the model for at least 1 time step). 
    2222 
    2323#---------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/ORCA2_SAS_LIM3/EXP00/namelist_cfg

    r9019 r9169  
    2222!----------------------------------------------------------------------- 
    2323   ln_linssh   = .true.   !  =T  linear free surface  ==>>  model level are fixed in time 
    24    ! 
    25    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
    26    ! 
    2724/ 
    2825!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/SHARED/namelist_ref

    r9168 r9169  
    9292!----------------------------------------------------------------------- 
    9393   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    94    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
    95    rn_isfhmin  =    1.00   !  treshold (m) to discriminate grounding ice to floating ice 
     94   rn_isfhmin  =    1.00   !  treshold [m] to discriminate grounding ice from floating ice 
    9695   ! 
    9796   rn_rdt      = 5760.     !  time step for the dynamics and tracer 
     
    9998   ! 
    10099   ln_crs      = .false.   !  Logical switch for coarsening module      (T => fill namcrs) 
     100   ! 
     101   ln_meshmask = .false.   !  =T create a mesh file 
    101102/ 
    102103!----------------------------------------------------------------------- 
     
    134135                           !  1, coarse grid is binned with centering at the equator 
    135136                           !    Symmetry with nn_facty being odd-numbered. Asymmetry with even-numbered nn_facty. 
    136    nn_msh_crs  = 1         !  create (=1) a mesh file or not (=0) 
     137   ln_msh_crs  = .false.   ! =T create a mesh & mask file 
    137138   nn_crs_kz   = 0         ! 0, MEAN of volume boxes 
    138139                           ! 1, MAX of boxes 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/ISOMIP/EXP00/namelist_cfg

    r9135 r9169  
    4040   ln_linssh   = .false.    !  =T  linear free surface  ==>>  model level are fixed in time 
    4141   ! 
    42    nn_msh      =    0      !  create (>0) a mesh file or not (=0) 
    43    ! 
    4442   rn_rdt      = 1800.     !  time step for the dynamics (and tracer if nn_acc=0) 
     43   ! 
     44   ln_meshmask = .false.   !  =T create a mesh file 
    4545/ 
    4646!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_cen2_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_ubs_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_eenH_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_een_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ene_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ens_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_cen2_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_ubs_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_eenH_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_een_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ene_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ens_cfg

    r9019 r9169  
    3232!----------------------------------------------------------------------- 
    3333   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    34    nn_closea   =    1      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    35    ! 
    36    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     34   ! 
    3735   rn_isfhmin  =    0.00   !  treshold (m) to discriminate grounding ice to floating ice 
    3836   ! 
     
    4139   ! 
    4240   ln_crs      = .false.   !  Logical switch for coarsening module 
     41   ! 
     42   ln_meshmask = .false.   !  =T create a mesh file 
    4343/ 
    4444!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/1_namelist_cfg

    r9060 r9169  
    2929   ln_linssh   = .true.   !  =T  linear free surface  ==>>  model level are fixed in time 
    3030   ! 
    31    nn_msh      =    1     !  create (>0) a mesh file or not (=0) 
    32    ! 
    3331   rn_rdt      = 400.     !  time step for the dynamics (and tracer if nn_acc=0) 
     32   ! 
     33   ln_meshmask = .true.   !  =T  create a mesh file 
    3434/ 
    3535!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/namelist_cfg

    r9019 r9169  
    2929   ln_linssh   = .true.    !  =T  linear free surface  ==>>  model level are fixed in time 
    3030   ! 
    31    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
    32    ! 
    3331   rn_rdt      = 1200.     !  time step for the dynamics (and tracer if nn_acc=0) 
     32   ! 
     33   ln_meshmask = .true.   !  =T  create a mesh file 
    3434/ 
    3535!----------------------------------------------------------------------- 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/EXP00/namelist_cfg

    r9024 r9169  
    1515   cn_exp      =  "WAD"    !  experience name 
    1616   nn_it000    =       1   !  first time step 
    17    nn_itend    =      3840  !  last  time step 
    18    !nn_itend    =         6  !  last  time step 
     17   nn_itend    =     3840  !  last  time step 
     18   !nn_itend   =       6   !  last  time step 
    1919   nn_leapy    =      30   !  Leap year calendar (1) or not (0) 
    2020   nn_stock    =    48000  !  frequency of creation of a restart file (modulo referenced to 1) 
     
    3636   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    3737   ! 
    38    nn_msh      =    1      !  create (>0) a mesh file or not (=0) 
     38   ln_meshmask = .true.    !  create (>0) a mesh file or not (=0) 
    3939   rn_rdt      =    18.    !  time step for the dynamics  
    4040/ 
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/domain.F90

    r9168 r9169  
    3030   USE trc_oce        ! shared ocean & passive tracers variab 
    3131   USE phycst         ! physical constants 
    32    USE usrdef_closea  ! closed seas 
     32   USE closea         ! closed seas 
    3333   USE domhgr         ! domain: set the horizontal mesh 
    3434   USE domzgr         ! domain: set the vertical mesh 
     
    3737   USE domvvl         ! variable volume 
    3838   USE c1d            ! 1D configuration 
    39    USE domc1d         ! 1D configuration: column location 
    4039   USE dyncor_c1d     ! 1D configuration: Coriolis term    (cor_c1d routine) 
    4140   USE wet_dry        ! wetting and drying 
     
    7170      !!                         and scale factors, and the coriolis factor 
    7271      !!              - dom_zgr: define the vertical coordinate and the bathymetry 
    73       !!              - dom_wri: create the meshmask file if nn_msh=1 
     72      !!              - dom_wri: create the meshmask file (ln_meshmask=T) 
    7473      !!              - 1D configuration, move Coriolis, u and v at T-point 
    7574      !!---------------------------------------------------------------------- 
     
    9493         WRITE(numout,cform) '       ' ,'   jpij    : ', jpij 
    9594         WRITE(numout,*)     '      mpp local domain info (mpp):' 
    96          WRITE(numout,*)     '              jpni    : ', jpni, '   jpreci  : ', jpreci 
    97          WRITE(numout,*)     '              jpnj    : ', jpnj, '   jprecj  : ', jprecj 
     95         WRITE(numout,*)     '              jpni    : ', jpni, '   nn_hls  : ', nn_hls 
     96         WRITE(numout,*)     '              jpnj    : ', jpnj, '   nn_hls  : ', nn_hls 
    9897         WRITE(numout,*)     '              jpnij   : ', jpnij 
    9998         WRITE(numout,*)     '      lateral boundary of the Global domain : jperio  = ', jperio 
     
    106105         CASE( 5 )   ;   WRITE(numout,*) '         (i.e. north fold with F-point pivot)' 
    107106         CASE( 6 )   ;   WRITE(numout,*) '         (i.e. cyclic east-west and north fold with F-point pivot)' 
    108          CASE( 7 )   ;   WRITE(numout,*) '         (i.e. cyclic north-south (jpnij=1 only))' 
     107         CASE( 7 )   ;   WRITE(numout,*) '         (i.e. cyclic east-west and north-south)' 
    109108         CASE DEFAULT 
    110109            CALL ctl_stop( 'jperio is out of range' ) 
    111110         END SELECT 
    112111         WRITE(numout,*)     '      Ocean model configuration used:' 
    113          WRITE(numout,*)     '              cn_cfg = ', cn_cfg 
    114          WRITE(numout,*)     '              nn_cfg = ', nn_cfg 
    115       ENDIF 
    116       ! 
    117       !       
    118 !!gm  This should be removed with the new configuration interface 
    119       IF( lk_c1d .AND. ln_c1d_locpt )  CALL dom_c1d( rn_lat1d, rn_lon1d ) 
    120 !!gm end 
     112         WRITE(numout,*)     '         cn_cfg = ', TRIM( cn_cfg ), '   nn_cfg = ', nn_cfg 
     113      ENDIF 
    121114      ! 
    122115      !           !==  Reference coordinate system  ==! 
     
    124117      CALL dom_glo                     ! global domain versus local domain 
    125118      CALL dom_nam                     ! read namelist ( namrun, namdom ) 
    126       CALL dom_clo( cn_cfg, nn_cfg )   ! Closed seas and lake 
    127119      CALL dom_hgr                     ! Horizontal mesh 
    128120      CALL dom_zgr( ik_top, ik_bot )   ! Vertical mesh and bathymetry 
    129       IF( nn_closea == 0 )   CALL clo_bat( ik_top, ik_bot )    !==  remove closed seas or lakes  ==! 
    130121      CALL dom_msk( ik_top, ik_bot )   ! Masks 
     122      IF( ln_closea ) CALL dom_clo     ! ln_closea=T : closed seas included in the simulation 
     123                                       ! Read in masks to define closed seas and lakes  
    131124      ! 
    132125      DO jj = 1, jpj                   ! depth of the iceshelves 
     
    182175      IF( lk_c1d         )   CALL cor_c1d       ! 1D configuration: Coriolis set at T-point 
    183176      ! 
    184       IF( nn_msh > 0 .AND. .NOT. ln_iscpl )                         CALL dom_wri      ! Create a domain file 
    185       IF( nn_msh > 0 .AND.       ln_iscpl .AND. .NOT. ln_rstart )   CALL dom_wri      ! Create a domain file 
    186       IF( .NOT.ln_rstart )   CALL dom_ctl       ! Domain control 
    187       ! 
    188        
     177      IF( ln_meshmask .AND. .NOT.ln_iscpl )                        CALL dom_wri     ! Create a domain file 
     178      IF( ln_meshmask .AND.      ln_iscpl .AND. .NOT.ln_rstart )   CALL dom_wri     ! Create a domain file 
     179      IF(                                       .NOT.ln_rstart )   CALL dom_ctl     ! Domain control 
     180      ! 
     181      IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
     182      ! 
    189183      IF(lwp) THEN 
    190184         WRITE(numout,*) 
    191          WRITE(numout,*) 'dom_init : end of domain initialization nn_msh=', nn_msh 
     185         WRITE(numout,*) 'dom_init :   ==>>>   END of domain initialization' 
     186         WRITE(numout,*) '~~~~~~~~' 
    192187         WRITE(numout,*)  
    193188      ENDIF 
    194       ! 
    195       IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
    196189      ! 
    197190   END SUBROUTINE dom_init 
     
    240233         IF( nn_print >= 1 ) THEN 
    241234            WRITE(numout,*) 
    242             WRITE(numout,*) '          conversion local  ==> global i-index domain' 
     235            WRITE(numout,*) '          conversion local  ==> global i-index domain (mig)' 
    243236            WRITE(numout,25)              (mig(ji),ji = 1,jpi) 
    244237            WRITE(numout,*) 
    245238            WRITE(numout,*) '          conversion global ==> local  i-index domain' 
    246             WRITE(numout,*) '             starting index' 
     239            WRITE(numout,*) '             starting index (mi0)' 
    247240            WRITE(numout,25)              (mi0(ji),ji = 1,jpiglo) 
    248             WRITE(numout,*) '             ending index' 
     241            WRITE(numout,*) '             ending index (mi1)' 
    249242            WRITE(numout,25)              (mi1(ji),ji = 1,jpiglo) 
    250243            WRITE(numout,*) 
    251             WRITE(numout,*) '          conversion local  ==> global j-index domain' 
     244            WRITE(numout,*) '          conversion local  ==> global j-index domain (mjg)' 
    252245            WRITE(numout,25)              (mjg(jj),jj = 1,jpj) 
    253246            WRITE(numout,*) 
    254247            WRITE(numout,*) '          conversion global ==> local  j-index domain' 
    255             WRITE(numout,*) '             starting index' 
     248            WRITE(numout,*) '             starting index (mj0)' 
    256249            WRITE(numout,25)              (mj0(jj),jj = 1,jpjglo) 
    257             WRITE(numout,*) '             ending index' 
     250            WRITE(numout,*) '             ending index (mj1)' 
    258251            WRITE(numout,25)              (mj1(jj),jj = 1,jpjglo) 
    259252         ENDIF 
     
    275268      !!---------------------------------------------------------------------- 
    276269      USE ioipsl 
     270      !! 
     271      INTEGER  ::   ios   ! Local integer 
     272      ! 
    277273      NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list,                 & 
    278274         &             nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     & 
     
    280276         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
    281277         &             ln_cfmeta, ln_iscpl 
    282       NAMELIST/namdom/ ln_linssh, nn_closea, nn_msh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs 
     278      NAMELIST/namdom/ ln_linssh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
    283279#if defined key_netcdf4 
    284280      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
    285281#endif 
    286       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    287       !!---------------------------------------------------------------------- 
     282      !!---------------------------------------------------------------------- 
     283      ! 
     284      IF(lwp) THEN 
     285         WRITE(numout,*) 
     286         WRITE(numout,*) 'dom_nam  : domain initialization through namelist read' 
     287         WRITE(numout,*) '~~~~~~~ ' 
     288      ENDIF 
    288289      ! 
    289290      REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    290291      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
    291292901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namrun in reference namelist', lwp ) 
    292       ! 
    293293      REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
    294294      READ  ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 
     
    297297      ! 
    298298      IF(lwp) THEN                  ! control print 
    299          WRITE(numout,*) 
    300          WRITE(numout,*) 'dom_nam  : domain initialization through namelist read' 
    301          WRITE(numout,*) '~~~~~~~ ' 
    302          WRITE(numout,*) '   Namelist namrun' 
    303          WRITE(numout,*) '      job number                      nn_no      = ', nn_no 
    304          WRITE(numout,*) '      experiment name for output      cn_exp     = ', cn_exp 
    305          WRITE(numout,*) '      file prefix restart input       cn_ocerst_in= ', cn_ocerst_in 
    306          WRITE(numout,*) '      restart input directory         cn_ocerst_indir= ', cn_ocerst_indir 
    307          WRITE(numout,*) '      file prefix restart output      cn_ocerst_out= ', cn_ocerst_out 
    308          WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', cn_ocerst_outdir 
    309          WRITE(numout,*) '      restart logical                 ln_rstart  = ', ln_rstart 
    310          WRITE(numout,*) '      start with forward time step    nn_euler   = ', nn_euler 
    311          WRITE(numout,*) '      control of time step            nn_rstctl  = ', nn_rstctl 
    312          WRITE(numout,*) '      number of the first time step   nn_it000   = ', nn_it000 
    313          WRITE(numout,*) '      number of the last time step    nn_itend   = ', nn_itend 
    314          WRITE(numout,*) '      initial calendar date aammjj    nn_date0   = ', nn_date0 
    315          WRITE(numout,*) '      initial time of day in hhmm     nn_time0   = ', nn_time0 
    316          WRITE(numout,*) '      leap year calendar (0/1)        nn_leapy   = ', nn_leapy 
    317          WRITE(numout,*) '      initial state output            nn_istate  = ', nn_istate 
     299         WRITE(numout,*) '   Namelist : namrun' 
     300         WRITE(numout,*) '      job number                      nn_no           = ', nn_no 
     301         WRITE(numout,*) '      experiment name for output      cn_exp          = ', TRIM( cn_exp           ) 
     302         WRITE(numout,*) '      file prefix restart input       cn_ocerst_in    = ', TRIM( cn_ocerst_in     ) 
     303         WRITE(numout,*) '      restart input directory         cn_ocerst_indir = ', TRIM( cn_ocerst_indir  ) 
     304         WRITE(numout,*) '      file prefix restart output      cn_ocerst_out   = ', TRIM( cn_ocerst_out    ) 
     305         WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', TRIM( cn_ocerst_outdir ) 
     306         WRITE(numout,*) '      restart logical                 ln_rstart       = ', ln_rstart 
     307         WRITE(numout,*) '      start with forward time step    nn_euler        = ', nn_euler 
     308         WRITE(numout,*) '      control of time step            nn_rstctl       = ', nn_rstctl 
     309         WRITE(numout,*) '      number of the first time step   nn_it000        = ', nn_it000 
     310         WRITE(numout,*) '      number of the last time step    nn_itend        = ', nn_itend 
     311         WRITE(numout,*) '      initial calendar date aammjj    nn_date0        = ', nn_date0 
     312         WRITE(numout,*) '      initial time of day in hhmm     nn_time0        = ', nn_time0 
     313         WRITE(numout,*) '      leap year calendar (0/1)        nn_leapy        = ', nn_leapy 
     314         WRITE(numout,*) '      initial state output            nn_istate       = ', nn_istate 
    318315         IF( ln_rst_list ) THEN 
    319             WRITE(numout,*) '      list of restart dump times      nn_stocklist   =', nn_stocklist 
     316            WRITE(numout,*) '      list of restart dump times      nn_stocklist    =', nn_stocklist 
    320317         ELSE 
    321             WRITE(numout,*) '      frequency of restart file       nn_stock   = ', nn_stock 
     318            WRITE(numout,*) '      frequency of restart file       nn_stock        = ', nn_stock 
    322319         ENDIF 
    323          WRITE(numout,*) '      frequency of output file        nn_write   = ', nn_write 
    324          WRITE(numout,*) '      mask land points                ln_mskland = ', ln_mskland 
    325          WRITE(numout,*) '      additional CF standard metadata ln_cfmeta  = ', ln_cfmeta 
    326          WRITE(numout,*) '      overwrite an existing file      ln_clobber = ', ln_clobber 
    327          WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz = ', nn_chunksz 
    328          WRITE(numout,*) '      IS coupling at the restart step ln_iscpl   = ', ln_iscpl 
     320         WRITE(numout,*) '      frequency of output file        nn_write        = ', nn_write 
     321         WRITE(numout,*) '      mask land points                ln_mskland      = ', ln_mskland 
     322         WRITE(numout,*) '      additional CF standard metadata ln_cfmeta       = ', ln_cfmeta 
     323         WRITE(numout,*) '      overwrite an existing file      ln_clobber      = ', ln_clobber 
     324         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz      = ', nn_chunksz 
     325         WRITE(numout,*) '      IS coupling at the restart step ln_iscpl        = ', ln_iscpl 
    329326      ENDIF 
    330327 
     
    341338      nwrite = nn_write 
    342339      neuler = nn_euler 
    343       IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
    344          WRITE(ctmp1,*) 'ln_rstart =.FALSE., nn_euler is forced to 0 ' 
    345          CALL ctl_warn( ctmp1 ) 
     340      IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
     341         IF(lwp) WRITE(numout,*)   
     342         IF(lwp) WRITE(numout,*)'   ==>>>   Start from rest (ln_rstart=F)' 
     343         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : nn_euler is forced to 0 '    
    346344         neuler = 0 
    347345      ENDIF 
    348346      !                             ! control of output frequency 
    349       IF ( nstock == 0 .OR. nstock > nitend ) THEN 
     347      IF( nstock == 0 .OR. nstock > nitend ) THEN 
    350348         WRITE(ctmp1,*) 'nstock = ', nstock, ' it is forced to ', nitend 
    351349         CALL ctl_warn( ctmp1 ) 
     
    379377      READ  ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 
    380378903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 
    381       ! 
    382379      REWIND( numnam_cfg )              ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 
    383380      READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 
    384381904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 
    385       IF(lwm) WRITE ( numond, namdom ) 
     382      IF(lwm) WRITE( numond, namdom ) 
    386383      ! 
    387384      IF(lwp) THEN 
    388385         WRITE(numout,*) 
    389          WRITE(numout,*) '   Namelist namdom : space & time domain' 
    390          WRITE(numout,*) '      linear free surface (=T)              ln_linssh  = ', ln_linssh 
    391          WRITE(numout,*) '      suppression of closed seas (=0)       nn_closea  = ', nn_closea 
    392          WRITE(numout,*) '      create mesh/mask file(s)              nn_msh     = ', nn_msh 
    393          WRITE(numout,*) '           = 0   no file created           ' 
    394          WRITE(numout,*) '           = 1   mesh_mask                 ' 
    395          WRITE(numout,*) '           = 2   mesh and mask             ' 
    396          WRITE(numout,*) '           = 3   mesh_hgr, msh_zgr and mask' 
    397          WRITE(numout,*) '      treshold to open the isf cavity       rn_isfhmin = ', rn_isfhmin, ' (m)' 
    398          WRITE(numout,*) '      ocean time step                       rn_rdt     = ', rn_rdt 
    399          WRITE(numout,*) '      asselin time filter parameter         rn_atfp    = ', rn_atfp 
    400          WRITE(numout,*) '      online coarsening of dynamical fields ln_crs     = ', ln_crs 
    401       ENDIF 
    402        
    403       call flush( numout ) 
    404       ! 
    405 !     !          ! conversion DOCTOR names into model names (this should disappear soon) 
    406       atfp      = rn_atfp 
    407       rdt       = rn_rdt 
     386         WRITE(numout,*) '   Namelist : namdom   ---   space & time domain' 
     387         WRITE(numout,*) '      linear free surface (=T)                ln_linssh   = ', ln_linssh 
     388         WRITE(numout,*) '      create mesh/mask file                   ln_meshmask = ', ln_meshmask 
     389         WRITE(numout,*) '      treshold to open the isf cavity         rn_isfhmin  = ', rn_isfhmin, ' [m]' 
     390         WRITE(numout,*) '      ocean time step                         rn_rdt      = ', rn_rdt 
     391         WRITE(numout,*) '      asselin time filter parameter           rn_atfp     = ', rn_atfp 
     392         WRITE(numout,*) '      online coarsening of dynamical fields   ln_crs      = ', ln_crs 
     393      ENDIF 
     394      ! 
     395      !          ! conversion DOCTOR names into model names (this should disappear soon) 
     396      atfp = rn_atfp 
     397      rdt  = rn_rdt 
    408398 
    409399#if defined key_netcdf4 
     
    412402      READ  ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 
    413403907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 
    414       ! 
    415404      REWIND( numnam_cfg )              ! Namelist namnc4 in configuration namelist : NETCDF 
    416405      READ  ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 
     
    421410         WRITE(numout,*) 
    422411         WRITE(numout,*) '   Namelist namnc4 - Netcdf4 chunking parameters' 
    423          WRITE(numout,*) '      number of chunks in i-dimension      nn_nchunks_i  = ', nn_nchunks_i 
    424          WRITE(numout,*) '      number of chunks in j-dimension      nn_nchunks_j  = ', nn_nchunks_j 
    425          WRITE(numout,*) '      number of chunks in k-dimension      nn_nchunks_k  = ', nn_nchunks_k 
    426          WRITE(numout,*) '      apply netcdf4/hdf5 chunking & compression ln_nc4zip = ', ln_nc4zip 
     412         WRITE(numout,*) '      number of chunks in i-dimension             nn_nchunks_i = ', nn_nchunks_i 
     413         WRITE(numout,*) '      number of chunks in j-dimension             nn_nchunks_j = ', nn_nchunks_j 
     414         WRITE(numout,*) '      number of chunks in k-dimension             nn_nchunks_k = ', nn_nchunks_k 
     415         WRITE(numout,*) '      apply netcdf4/hdf5 chunking & compression   ln_nc4zip    = ', ln_nc4zip 
    427416      ENDIF 
    428417 
     
    586575      !                       ! ============================= ! 
    587576      !          
    588       clnam = 'domcfg_out'  ! filename (configuration information) 
     577      clnam = cn_domcfg_out  ! filename (configuration information) 
    589578      CALL iom_open( TRIM(clnam), inum, ldwrt = .TRUE., kiolib = jprstlib ) 
    590579       
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90

    r9124 r9169  
    193193      REWIND( numnam_ice_ref )              ! Namelist namalb in reference namelist : Albedo parameters 
    194194      READ  ( numnam_ice_ref, namalb, IOSTAT = ios, ERR = 901) 
    195 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namalb in reference namelist', lwp ) 
    196  
     195901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namalb in reference namelist', lwp ) 
    197196      REWIND( numnam_ice_cfg )              ! Namelist namalb in configuration namelist : Albedo parameters 
    198197      READ  ( numnam_ice_cfg, namalb, IOSTAT = ios, ERR = 902 ) 
    199 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namalb in configuration namelist', lwp ) 
    200       IF(lwm) WRITE ( numoni, namalb ) 
     198902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namalb in configuration namelist', lwp ) 
     199      IF(lwm) WRITE( numoni, namalb ) 
    201200      ! 
    202201      IF(lwp) THEN                      ! Control print 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90

    r9124 r9169  
    180180      REWIND( numnam_ice_ref )      ! Namelist namdia in reference namelist : Parameters for ice 
    181181      READ  ( numnam_ice_ref, namdia, IOSTAT = ios, ERR = 901) 
    182 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdia in reference namelist', lwp ) 
    183  
     182901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdia in reference namelist', lwp ) 
    184183      REWIND( numnam_ice_cfg )      ! Namelist namdia in configuration namelist : Parameters for ice 
    185184      READ  ( numnam_ice_cfg, namdia, IOSTAT = ios, ERR = 902 ) 
    186 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdia in configuration namelist', lwp ) 
     185902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namdia in configuration namelist', lwp ) 
    187186      IF(lwm) WRITE ( numoni, namdia ) 
    188187      ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn.F90

    r9124 r9169  
    219219      REWIND( numnam_ice_ref )         ! Namelist namdyn in reference namelist : Ice dynamics 
    220220      READ  ( numnam_ice_ref, namdyn, IOSTAT = ios, ERR = 901) 
    221 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn in reference namelist', lwp ) 
    222       ! 
     221901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdyn in reference namelist', lwp ) 
    223222      REWIND( numnam_ice_cfg )         ! Namelist namdyn in configuration namelist : Ice dynamics 
    224223      READ  ( numnam_ice_cfg, namdyn, IOSTAT = ios, ERR = 902 ) 
    225 902   IF( ios >  0 ) CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp ) 
    226       IF(lwm) WRITE ( numoni, namdyn ) 
     224902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp ) 
     225      IF(lwm) WRITE( numoni, namdyn ) 
    227226      ! 
    228227      IF(lwp) THEN                     ! control print 
     
    234233         WRITE(numout,*) '      No ridge/raft & No cor (rhg + adv)                      ln_dynRHGADV = ', ln_dynRHGADV 
    235234         WRITE(numout,*) '      Advection only         (rn_uvice + adv)                 ln_dynADV    = ', ln_dynADV 
    236          WRITE(numout,*) '           with prescribed velocity given by ' 
    237          WRITE(numout,*) '               a uniform field               (u,v)_ice = (rn_uice,rn_vice) = (', rn_uice,',', rn_vice,')' 
     235         WRITE(numout,*) '         with prescribed velocity given by   (u,v)_ice = (rn_uice,rn_vice) = (', rn_uice,',', rn_vice,')' 
    238236         WRITE(numout,*) '      lateral boundary condition for sea ice dynamics         rn_ishlat    = ', rn_ishlat 
    239237         WRITE(numout,*) '      Landfast: param (T or F)                                ln_landfast  = ', ln_landfast 
     
    241239         WRITE(numout,*) '         maximum bottom stress per unit area of contact       rn_icebfr    = ', rn_icebfr 
    242240         WRITE(numout,*) '         relax time scale (s-1) to reach static friction      rn_lfrelax   = ', rn_lfrelax 
     241         WRITE(numout,*) 
    243242      ENDIF 
    244243      !                             !== set the choice of ice dynamics ==! 
     
    260259      ENDIF 
    261260      !                                      !--- NO Landfast ice : set to zero once for all 
    262       IF( .NOT. ln_landfast )   tau_icebfr(:,:) = 0._wp 
     261      IF( .NOT.ln_landfast )   tau_icebfr(:,:) = 0._wp 
    263262      ! 
    264263      CALL ice_dyn_rdgrft_init          ! set ice ridging/rafting parameters 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv.F90

    r9124 r9169  
    138138      REWIND( numnam_ice_ref )         ! Namelist namdyn_adv in reference namelist : Ice dynamics 
    139139      READ  ( numnam_ice_ref, namdyn_adv, IOSTAT = ios, ERR = 901) 
    140 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in reference namelist', lwp ) 
    141       ! 
     140901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdyn_adv in reference namelist', lwp ) 
    142141      REWIND( numnam_ice_cfg )         ! Namelist namdyn_adv in configuration namelist : Ice dynamics 
    143142      READ  ( numnam_ice_cfg, namdyn_adv, IOSTAT = ios, ERR = 902 ) 
    144 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in configuration namelist', lwp ) 
    145       IF(lwm) WRITE ( numoni, namdyn_adv ) 
     143902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namdyn_adv in configuration namelist', lwp ) 
     144      IF(lwm) WRITE( numoni, namdyn_adv ) 
    146145      ! 
    147146      IF(lwp) THEN                     ! control print 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rdgrft.F90

    r9124 r9169  
    891891      REWIND( numnam_ice_ref )              ! Namelist namicetdme in reference namelist : Ice mechanical ice redistribution 
    892892      READ  ( numnam_ice_ref, namdyn_rdgrft, IOSTAT = ios, ERR = 901) 
    893 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rdgrft in reference namelist', lwp ) 
    894       ! 
     893901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdyn_rdgrft in reference namelist', lwp ) 
    895894      REWIND( numnam_ice_cfg )              ! Namelist namdyn_rdgrft in configuration namelist : Ice mechanical ice redistribution 
    896895      READ  ( numnam_ice_cfg, namdyn_rdgrft, IOSTAT = ios, ERR = 902 ) 
    897 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rdgrft in configuration namelist', lwp ) 
     896902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namdyn_rdgrft in configuration namelist', lwp ) 
    898897      IF(lwm) WRITE ( numoni, namdyn_rdgrft ) 
    899898      ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rhg.F90

    r9124 r9169  
    114114      READ  ( numnam_ice_ref, namdyn_rhg, IOSTAT = ios, ERR = 901) 
    115115901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rhg in reference namelist', lwp ) 
    116       ! 
    117116      REWIND( numnam_ice_cfg )         ! Namelist namdyn_rhg in configuration namelist : Ice dynamics 
    118117      READ  ( numnam_ice_cfg, namdyn_rhg, IOSTAT = ios, ERR = 902 ) 
     
    124123         WRITE(numout,*) 'ice_dyn_rhg_init: ice parameters for ice dynamics ' 
    125124         WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    126          WRITE(numout,*) '   Namelist namdyn_rhg:' 
     125         WRITE(numout,*) '   Namelist : namdyn_rhg:' 
    127126         WRITE(numout,*) '      rheology EVP (icedyn_rhg_evp)                        ln_rhg_EVP = ', ln_rhg_EVP 
    128127         WRITE(numout,*) '         use adaptive EVP (aEVP)                           ln_aEVP    = ', ln_aEVP 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rhg_evp.F90

    r9049 r9169  
    875875               CALL iom_get( numrir, jpdom_autoglo, 'stress12_i', stress12_i ) 
    876876            ELSE                                     ! start rheology from rest 
    877                IF(lwp) WRITE(numout,*) '   ==>>   previous run without rheology, set stresses to 0' 
     877               IF(lwp) WRITE(numout,*) 
     878               IF(lwp) WRITE(numout,*) '   ==>>>   previous run without rheology, set stresses to 0' 
    878879               stress1_i (:,:) = 0._wp 
    879880               stress2_i (:,:) = 0._wp 
     
    881882            ENDIF 
    882883         ELSE                                   !* Start from rest 
    883             IF(lwp) WRITE(numout,*) '   ==>>   start from rest: set stresses to 0' 
     884            IF(lwp) WRITE(numout,*) 
     885            IF(lwp) WRITE(numout,*) '   ==>>>   start from rest: set stresses to 0' 
    884886            stress1_i (:,:) = 0._wp 
    885887            stress2_i (:,:) = 0._wp 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90

    r9124 r9169  
    5252      !!              utau_ice, vtau_ice : surface ice stress (U- & V-points) [N/m2] 
    5353      !!------------------------------------------------------------------- 
    54       INTEGER, INTENT(in) ::   kt      ! ocean time step 
    55       INTEGER, INTENT(in) ::   ksbc    ! type of sbc flux ( 1 = user defined formulation,  
    56                                        !                    3 = bulk formulation, 
    57                                        !                    4 = Pure Coupled formulation) 
    58       REAL(wp), DIMENSION(jpi,jpj), INTENT(out) ::   utau_ice, vtau_ice  
     54      INTEGER                     , INTENT(in   ) ::   kt                   ! ocean time step 
     55      INTEGER                     , INTENT(in   ) ::   ksbc                 ! type of sbc flux 
     56      REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) ::   utau_ice, vtau_ice   ! air-ice stress   [N/m2] 
    5957      !! 
    6058      INTEGER  ::   ji, jj                 ! dummy loop index 
    6159      REAL(wp), DIMENSION(jpi,jpj) ::   zutau_ice, zvtau_ice  
    6260      !!------------------------------------------------------------------- 
    63  
     61      ! 
    6462      IF( ln_timing )   CALL timing_start('ice_forcing') 
    65  
     63      ! 
    6664      IF( kt == nit000 .AND. lwp ) THEN 
    6765         WRITE(numout,*) 
     
    6967         WRITE(numout,*)'~~~~~~~~~~~~~~~' 
    7068      ENDIF 
    71  
     69      ! 
    7270      SELECT CASE( ksbc ) 
    7371         CASE( jp_usr     )   ;    CALL usrdef_sbc_ice_tau( kt )                 ! user defined formulation 
     
    7573         CASE( jp_purecpl )   ;    CALL sbc_cpl_ice_tau( utau_ice , vtau_ice )   ! Coupled      formulation 
    7674      END SELECT 
    77  
     75      ! 
    7876      IF( ln_mixcpl) THEN                                                        ! Case of a mixed Bulk/Coupled formulation 
    7977                                   CALL sbc_cpl_ice_tau( zutau_ice , zvtau_ice ) 
     
    8684         CALL lbc_lnk_multi( utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
    8785      ENDIF 
    88  
     86      ! 
    8987      IF( ln_timing )   CALL timing_stop('ice_forcing') 
    9088      ! 
     
    255253   END SUBROUTINE ice_flx_dist 
    256254 
     255 
    257256   SUBROUTINE ice_forcing_init 
    258257      !!------------------------------------------------------------------- 
    259258      !!                  ***  ROUTINE ice_forcing_init  *** 
    260259      !! 
    261       !! ** Purpose : Physical constants and parameters linked to the ice 
    262       !!      dynamics 
    263       !! 
    264       !! ** Method  :  Read the namforcing namelist and check the ice-dynamic 
    265       !!       parameter values called at the first timestep (nit000) 
     260      !! ** Purpose :   Physical constants and parameters linked to the ice dynamics 
     261      !!       
     262      !! ** Method  :   Read the namforcing namelist and check the ice-dynamic 
     263      !!              parameter values called at the first timestep (nit000) 
    266264      !! 
    267265      !! ** input   :   Namelist namforcing 
    268266      !!------------------------------------------------------------------- 
    269       INTEGER ::   ios, ioptio   ! Local integer output status for namelist read 
     267      INTEGER ::   ios, ioptio   ! Local integer 
    270268      !! 
    271269      NAMELIST/namforcing/ rn_cio, rn_blow_s, nn_flxdist, nice_jules 
     
    274272      REWIND( numnam_ice_ref )         ! Namelist namforcing in reference namelist : Ice dynamics 
    275273      READ  ( numnam_ice_ref, namforcing, IOSTAT = ios, ERR = 901) 
    276 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namforcing in reference namelist', lwp ) 
    277       ! 
     274901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namforcing in reference namelist', lwp ) 
    278275      REWIND( numnam_ice_cfg )         ! Namelist namforcing in configuration namelist : Ice dynamics 
    279276      READ  ( numnam_ice_cfg, namforcing, IOSTAT = ios, ERR = 902 ) 
    280 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namforcing in configuration namelist', lwp ) 
    281       IF(lwm) WRITE ( numoni, namforcing ) 
     277902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namforcing in configuration namelist', lwp ) 
     278      IF(lwm) WRITE( numoni, namforcing ) 
    282279      ! 
    283280      IF(lwp) THEN                     ! control print 
    284281         WRITE(numout,*) 
    285282         WRITE(numout,*) 'ice_forcing_init: ice parameters for ice dynamics ' 
    286          WRITE(numout,*) '~~~~~~~~~~~~~~~' 
     283         WRITE(numout,*) '~~~~~~~~~~~~~~~~' 
    287284         WRITE(numout,*) '   Namelist namforcing:' 
    288285         WRITE(numout,*) '      drag coefficient for oceanic stress              rn_cio     = ', rn_cio 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceistate.F90

    r9019 r9169  
    512512      REWIND( numnam_ice_ref )              ! Namelist namini in reference namelist : Ice initial state 
    513513      READ  ( numnam_ice_ref, namini, IOSTAT = ios, ERR = 901) 
    514 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namini in reference namelist', lwp ) 
    515       ! 
     514901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namini in reference namelist', lwp ) 
    516515      REWIND( numnam_ice_cfg )              ! Namelist namini in configuration namelist : Ice initial state 
    517516      READ  ( numnam_ice_cfg, namini, IOSTAT = ios, ERR = 902 ) 
    518 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namini in configuration namelist', lwp ) 
     517902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namini in configuration namelist', lwp ) 
    519518      IF(lwm) WRITE ( numoni, namini ) 
    520519      ! 
     
    522521      slf_i(jp_ati) = sn_ati  ;  slf_i(jp_tsu) = sn_tsu 
    523522      slf_i(jp_tmi) = sn_tmi  ;  slf_i(jp_smi) = sn_smi 
    524       ! 
    525523      ! 
    526524      IF(lwp) THEN                          ! control print 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90

    r9019 r9169  
    657657      REWIND( numnam_ice_ref )      ! Namelist namitd in reference namelist : Parameters for ice 
    658658      READ  ( numnam_ice_ref, namitd, IOSTAT = ios, ERR = 901) 
    659 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namitd in reference namelist', lwp ) 
    660       ! 
     659901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namitd in reference namelist', lwp ) 
    661660      REWIND( numnam_ice_cfg )      ! Namelist namitd in configuration namelist : Parameters for ice 
    662661      READ  ( numnam_ice_cfg, namitd, IOSTAT = ios, ERR = 902 ) 
    663 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namitd in configuration namelist', lwp ) 
    664       IF(lwm) WRITE ( numoni, namitd ) 
     662902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namitd in configuration namelist', lwp ) 
     663      IF(lwm) WRITE( numoni, namitd ) 
    665664      ! 
    666665      IF(lwp) THEN                  ! control print 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90

    r9124 r9169  
    281281      !! ** input   :   Namelist nampar 
    282282      !!------------------------------------------------------------------- 
    283       INTEGER  ::   ios                 ! Local integer output status for namelist read 
     283      INTEGER  ::   ios                 ! Local integer 
     284      !! 
    284285      NAMELIST/nampar/ jpl, nlay_i, nlay_s, nn_virtual_itd, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s,  & 
    285286         &             cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir 
     
    288289      REWIND( numnam_ice_ref )      ! Namelist nampar in reference namelist : Parameters for ice 
    289290      READ  ( numnam_ice_ref, nampar, IOSTAT = ios, ERR = 901) 
    290 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampar in reference namelist', lwp ) 
    291  
     291901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nampar in reference namelist', lwp ) 
    292292      REWIND( numnam_ice_cfg )      ! Namelist nampar in configuration namelist : Parameters for ice 
    293293      READ  ( numnam_ice_cfg, nampar, IOSTAT = ios, ERR = 902 ) 
    294 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampar in configuration namelist', lwp ) 
    295       IF(lwm) WRITE ( numoni, nampar ) 
     294902   IF( ios > 0 )  CALL ctl_nam ( ios , 'nampar in configuration namelist', lwp ) 
     295      IF(lwm) WRITE( numoni, nampar ) 
    296296      ! 
    297297      IF(lwp) THEN                  ! control print 
    298298         WRITE(numout,*) 
    299          WRITE(numout,*) 'par_init: ice parameters shared among all the routines' 
    300          WRITE(numout,*) ' ~~~~~~~' 
    301          WRITE(numout,*) '   Namelist nampar: ' 
    302          WRITE(numout,*) '      number of ice  categories                              jpl    = ', jpl 
    303          WRITE(numout,*) '      number of ice  layers                                  nlay_i = ', nlay_i 
    304          WRITE(numout,*) '      number of snow layers                                  nlay_s = ', nlay_s 
    305          WRITE(numout,*) '      virtual ITD param for jpl=1 (1-3) or not (0)   nn_virtual_itd = ', nn_virtual_itd 
    306          WRITE(numout,*) '      Ice dynamics       (T) or not (F)                   ln_icedyn = ', ln_icedyn 
    307          WRITE(numout,*) '      Ice thermodynamics (T) or not (F)                   ln_icethd = ', ln_icethd 
    308          WRITE(numout,*) '      maximum ice concentration for NH                              = ', rn_amax_n  
    309          WRITE(numout,*) '      maximum ice concentration for SH                              = ', rn_amax_s 
     299         WRITE(numout,*) '   par_init: ice parameters shared among all the routines' 
     300         WRITE(numout,*) '   ~~~~~~~~' 
     301         WRITE(numout,*) '      Namelist nampar: ' 
     302         WRITE(numout,*) '         number of ice  categories                           jpl       = ', jpl 
     303         WRITE(numout,*) '         number of ice  layers                               nlay_i    = ', nlay_i 
     304         WRITE(numout,*) '         number of snow layers                               nlay_s    = ', nlay_s 
     305         WRITE(numout,*) '         virtual ITD param for jpl=1 (1-3) or not (0)   nn_virtual_itd = ', nn_virtual_itd 
     306         WRITE(numout,*) '         Ice dynamics       (T) or not (F)                   ln_icedyn = ', ln_icedyn 
     307         WRITE(numout,*) '         Ice thermodynamics (T) or not (F)                   ln_icethd = ', ln_icethd 
     308         WRITE(numout,*) '         maximum ice concentration for NH                              = ', rn_amax_n  
     309         WRITE(numout,*) '         maximum ice concentration for SH                              = ', rn_amax_s 
    310310      ENDIF 
    311       ! 
    312311      !                                        !--- check consistency 
    313312      IF ( jpl > 1 .AND. nn_virtual_itd == 1 ) THEN 
     
    323322      IF( ln_bdy .AND. ln_icediachk )   CALL ctl_warn('par_init: online conservation check does not work with BDY') 
    324323      ! 
    325       rdt_ice   = REAL(nn_fsbc) * rdt          !--- sea-ice timestep and inverse 
     324      rdt_ice   = REAL(nn_fsbc) * rdt          !--- sea-ice timestep and its inverse 
    326325      r1_rdtice = 1._wp / rdt_ice 
    327       IF( lwp ) WRITE(numout,*) '   ice timestep rdt_ice = ', rdt_ice 
     326      IF(lwp) WRITE(numout,*) 
     327      IF(lwp) WRITE(numout,*) '      ice timestep rdt_ice = nn_fsbc*rdt = ', rdt_ice 
    328328      ! 
    329329      r1_nlay_i = 1._wp / REAL( nlay_i, wp )   !--- inverse of nlay_i and nlay_s 
     
    356356         h_s_b(:,:,:) = 0._wp 
    357357      END WHERE 
    358        
     358      ! 
    359359      ! ice velocities & total concentration 
    360360      at_i_b(:,:)  = SUM( a_i_b(:,:,:), dim=3 ) 
     
    412412      tau_icebfr(:,:)   = 0._wp   ! landfast ice param only (clem: important to keep the init here) 
    413413      cnd_ice   (:,:,:) = 0._wp   ! initialisation of the effective conductivity at the top of ice/snow (Jules coupling) 
    414        
     414      ! 
    415415   END SUBROUTINE diag_set0 
    416416 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90

    r9124 r9169  
    564564      REWIND( numnam_ice_ref )              ! Namelist namthd in reference namelist : Ice thermodynamics 
    565565      READ  ( numnam_ice_ref, namthd, IOSTAT = ios, ERR = 901) 
    566 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd in reference namelist', lwp ) 
    567  
     566901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd in reference namelist', lwp ) 
    568567      REWIND( numnam_ice_cfg )              ! Namelist namthd in configuration namelist : Ice thermodynamics 
    569568      READ  ( numnam_ice_cfg, namthd, IOSTAT = ios, ERR = 902 ) 
    570 902   IF( ios >  0 ) CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp ) 
    571       IF(lwm) WRITE ( numoni, namthd ) 
    572       ! 
     569902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp ) 
     570      IF(lwm) WRITE( numoni, namthd ) 
    573571      ! 
    574572      IF(lwp) THEN                          ! control print 
     573         WRITE(numout,*) 
    575574         WRITE(numout,*) 'ice_thd_init: Ice Thermodynamics' 
    576575         WRITE(numout,*) '~~~~~~~~~~~~' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_da.F90

    r9019 r9169  
    1010   !!   'key_lim3'                                       ESIM sea-ice model 
    1111   !!---------------------------------------------------------------------- 
    12    !!   ice_thd_da        : sea ice lateral melting 
    13    !!   ice_thd_da_init   : sea ice lateral melting initialization 
     12   !!   ice_thd_da      : sea ice lateral melting 
     13   !!   ice_thd_da_init : sea ice lateral melting initialization 
    1414   !!---------------------------------------------------------------------- 
    1515   USE par_oce        ! ocean parameters 
     
    2828   PUBLIC   ice_thd_da_init   ! called by icestp.F90 
    2929 
    30    ! ** namelist (namthd_da) ** 
    31    REAL(wp) ::   rn_beta     ! coef. beta for lateral melting param. 
    32    REAL(wp) ::   rn_dmin     ! minimum floe diameter for lateral melting param. 
     30   !                      !!** namelist (namthd_da) ** 
     31   REAL(wp) ::   rn_beta   ! coef. beta for lateral melting param. 
     32   REAL(wp) ::   rn_dmin   ! minimum floe diameter for lateral melting param. 
    3333 
    3434   !!---------------------------------------------------------------------- 
     
    118118      ! 
    119119      zastar = 1._wp / ( 1._wp - (rn_dmin / zdmax)**(1._wp/rn_beta) ) 
     120      ! 
    120121      DO ji = 1, npti    
    121122         ! --- Calculate reduction of total sea ice concentration --- ! 
     
    157158   END SUBROUTINE ice_thd_da 
    158159 
     160 
    159161   SUBROUTINE ice_thd_da_init 
    160162      !!----------------------------------------------------------------------- 
     
    169171      !! ** input   :   Namelist namthd_da 
    170172      !!------------------------------------------------------------------- 
    171       INTEGER  ::   ios   ! Local integer output status for namelist read 
     173      INTEGER  ::   ios   ! Local integer 
    172174      !! 
    173175      NAMELIST/namthd_da/ rn_beta, rn_dmin 
     
    176178      REWIND( numnam_ice_ref )              ! Namelist namthd_da in reference namelist : Ice thermodynamics 
    177179      READ  ( numnam_ice_ref, namthd_da, IOSTAT = ios, ERR = 901) 
    178 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in reference namelist', lwp ) 
    179  
     180901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_da in reference namelist', lwp ) 
    180181      REWIND( numnam_ice_cfg )              ! Namelist namthd_da in configuration namelist : Ice thermodynamics 
    181182      READ  ( numnam_ice_cfg, namthd_da, IOSTAT = ios, ERR = 902 ) 
    182 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in configuration namelist', lwp ) 
    183       IF(lwm) WRITE ( numoni, namthd_da ) 
    184       ! 
     183902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namthd_da in configuration namelist', lwp ) 
     184      IF(lwm) WRITE( numoni, namthd_da ) 
    185185      ! 
    186186      IF(lwp) THEN                          ! control print 
     187         WRITE(numout,*) 
    187188         WRITE(numout,*) 'ice_thd_da_init: Ice lateral melting' 
    188189         WRITE(numout,*) '~~~~~~~~~~~~~~~' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_do.F90

    r9019 r9169  
    3939   PUBLIC   ice_thd_do_init   ! called by ice_stp 
    4040 
    41    ! ** namelist (namthd_do) ** 
    42    REAL(wp) ::   rn_hinew         ! thickness for new ice formation (m) 
    43    LOGICAL  ::   ln_frazil        ! use of frazil ice collection as function of wind (T) or not (F) 
    44    REAL(wp) ::   rn_maxfraz       ! maximum portion of frazil ice collecting at the ice bottom 
    45    REAL(wp) ::   rn_vfraz         ! threshold drift speed for collection of bottom frazil ice 
    46    REAL(wp) ::   rn_Cfraz         ! squeezing coefficient for collection of bottom frazil ice 
     41   !                          !!** namelist (namthd_do) ** 
     42   REAL(wp) ::   rn_hinew      ! thickness for new ice formation (m) 
     43   LOGICAL  ::   ln_frazil     ! use of frazil ice collection as function of wind (T) or not (F) 
     44   REAL(wp) ::   rn_maxfraz    ! maximum portion of frazil ice collecting at the ice bottom 
     45   REAL(wp) ::   rn_vfraz      ! threshold drift speed for collection of bottom frazil ice 
     46   REAL(wp) ::   rn_Cfraz      ! squeezing coefficient for collection of bottom frazil ice 
    4747 
    4848   !!---------------------------------------------------------------------- 
     
    7878      !!               update h_s_1d, h_i_1d       
    7979      !!------------------------------------------------------------------------ 
    80       INTEGER  ::   ji,jj,jk,jl      ! dummy loop indices 
     80      INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices 
    8181      INTEGER  ::   iter     !   -       - 
    8282      REAL(wp) ::   ztmelts, zfrazb, zweight, zde                          ! local scalars 
    8383      REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf                     !   -      - 
    8484      REAL(wp) ::   ztenagm, zvfry, zvgy, ztauy, zvrel2, zfp, zsqcd , zhicrit   !   -      - 
    85  
     85      ! 
    8686      REAL(wp) ::   zQm          ! enthalpy exchanged with the ocean (J/m2, >0 towards ocean) 
    8787      REAL(wp) ::   zEi          ! sea ice specific enthalpy (J/kg) 
    8888      REAL(wp) ::   zEw          ! seawater specific enthalpy (J/kg) 
    8989      REAL(wp) ::   zfmdt        ! mass flux x time step (kg/m2, >0 towards ocean) 
    90       
     90      ! 
    9191      REAL(wp) ::   zv_newfra 
    92    
     92      ! 
    9393      INTEGER , DIMENSION(jpij) ::   jcat        ! indexes of categories where new ice grows 
    9494      REAL(wp), DIMENSION(jpij) ::   zswinew     ! switch for new ice or not 
    95  
     95      ! 
    9696      REAL(wp), DIMENSION(jpij) ::   zv_newice   ! volume of accreted ice 
    9797      REAL(wp), DIMENSION(jpij) ::   za_newice   ! fractional area of accreted ice 
     
    104104      REAL(wp), DIMENSION(jpij) ::   zv_frazb    ! accretion of frazil ice at the ice bottom 
    105105      REAL(wp), DIMENSION(jpij) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
    106  
     106      ! 
    107107      REAL(wp), DIMENSION(jpij,jpl) ::   zv_b      ! old volume of ice in category jl 
    108108      REAL(wp), DIMENSION(jpij,jpl) ::   za_b      ! old area of ice in category jl 
    109  
     109      ! 
    110110      REAL(wp), DIMENSION(jpij,nlay_i,jpl) ::   ze_i_2d !: 1-D version of e_i 
    111  
     111      ! 
    112112      REAL(wp), DIMENSION(jpi,jpj) ::   zvrel     ! relative ice / frazil velocity 
    113  
     113      ! 
    114114      REAL(wp) :: zcai = 1.4e-3_wp                     ! ice-air drag (clem: should be dependent on coupling/forcing used) 
    115115      !!-----------------------------------------------------------------------! 
    116116 
    117       IF( ln_icediachk )   CALL ice_cons_hsm(0, 'icethd_do', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) 
     117      IF( ln_icediachk )   CALL ice_cons_hsm( 0, 'icethd_do', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft ) 
    118118 
    119119      CALL ice_var_agg(1) 
     
    141141 
    142142      IF( ln_frazil ) THEN 
    143  
     143         ! 
    144144         !-------------------- 
    145145         ! Physical constants 
    146146         !-------------------- 
    147147         ht_i_new(:,:) = 0._wp 
    148  
     148         ! 
    149149         zhicrit = 0.04 ! frazil ice thickness 
    150150         ztwogp  = 2. * rau0 / ( grav * 0.3 * ( rau0 - rhoic ) ) ! reduced grav 
    151151         zsqcd   = 1.0 / SQRT( 1.3 * zcai ) ! 1/SQRT(airdensity*drag) 
    152152         zgamafr = 0.03 
    153  
     153         ! 
    154154         DO jj = 2, jpjm1 
    155155            DO ji = 2, jpim1 
     
    204204                     iter = iter + 1 
    205205                  END DO 
    206  
     206                  ! 
    207207               ENDIF ! end of selection of pixels where ice forms 
    208  
     208               ! 
    209209            END DO  
    210210         END DO  
     
    222222      !------------------------------------- 
    223223      ! This occurs if open water energy budget is negative (cooling) and there is no landfast ice 
    224       npti = 0 ; nptidx(:) = 0 
     224      npti = 0   ;  nptidx(:) = 0 
    225225      DO jj = 1, jpj 
    226226         DO ji = 1, jpi 
     
    431431               h_i_old (ji,nlay_i+1) = zv_newfra 
    432432               eh_i_old(ji,nlay_i+1) = ze_newice(ji) * zv_newfra 
    433             ENDDO 
     433            END DO 
    434434            ! --- Ice enthalpy remapping --- ! 
    435435            CALL ice_thd_ent( ze_i_2d(1:npti,:,jl) )  
    436          ENDDO 
     436         END DO 
    437437 
    438438         !----------------- 
     
    474474      ! 
    475475   END SUBROUTINE ice_thd_do 
     476 
    476477 
    477478   SUBROUTINE ice_thd_do_init 
     
    487488      !! ** input   :   Namelist namthd_do 
    488489      !!------------------------------------------------------------------- 
    489       INTEGER  ::   ios   ! Local integer output status for namelist read 
     490      INTEGER  ::   ios   ! Local integer  
    490491      !! 
    491492      NAMELIST/namthd_do/ rn_hinew, ln_frazil, rn_maxfraz, rn_vfraz, rn_Cfraz 
     
    494495      REWIND( numnam_ice_ref )              ! Namelist namthd_do in reference namelist : Ice thermodynamics 
    495496      READ  ( numnam_ice_ref, namthd_do, IOSTAT = ios, ERR = 901) 
    496 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_do in reference namelist', lwp ) 
    497  
     497901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_do in reference namelist', lwp ) 
    498498      REWIND( numnam_ice_cfg )              ! Namelist namthd_do in configuration namelist : Ice thermodynamics 
    499499      READ  ( numnam_ice_cfg, namthd_do, IOSTAT = ios, ERR = 902 ) 
    500 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_do in configuration namelist', lwp ) 
    501       IF(lwm) WRITE ( numoni, namthd_do ) 
    502       ! 
     500902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namthd_do in configuration namelist', lwp ) 
     501      IF(lwm) WRITE( numoni, namthd_do ) 
    503502      ! 
    504503      IF(lwp) THEN                          ! control print 
     504         WRITE(numout,*) 
    505505         WRITE(numout,*) 'ice_thd_do_init: Ice growth in open water' 
    506506         WRITE(numout,*) '~~~~~~~~~~~~~~~' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_pnd.F90

    r9019 r9169  
    1212   !!   'key_lim3' :                                     ESIM sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   ice_thd_pnd_init      : some initialization and namelist read 
    15    !!   ice_thd_pnd           : main calling routine 
     14   !!   ice_thd_pnd_init : some initialization and namelist read 
     15   !!   ice_thd_pnd      : main calling routine 
    1616   !!---------------------------------------------------------------------- 
    1717   USE phycst         ! physical constants 
     
    3232   PUBLIC   ice_thd_pnd         ! routine called by icestp.F90 
    3333 
    34    INTEGER ::              nice_pnd   ! choice of the type of pond scheme 
    35    !                                               ! associated indices: 
     34   INTEGER ::              nice_pnd    ! choice of the type of pond scheme 
     35   !                                   ! associated indices: 
    3636   INTEGER, PARAMETER ::   np_pndNO  = 0   ! No pond scheme 
    3737   INTEGER, PARAMETER ::   np_pndCST = 1   ! Constant pond scheme 
     
    5454      !!                 
    5555      !! ** Method  :   brut force 
    56       !! 
    57       !! ** Action  : -  
    58       !!              -  
    59       !!------------------------------------------------------------------- 
    60  
     56      !!------------------------------------------------------------------- 
     57      ! 
    6158      SELECT CASE ( nice_pnd ) 
    62  
    63       CASE (np_pndCST) 
    64          !                             !-------------------------------! 
    65          CALL pnd_CST                  ! Constant melt ponds           ! 
    66          !                             !-------------------------------! 
    67       CASE (np_pndH12) 
    68          !                             !-------------------------------! 
    69          CALL pnd_H12                  ! Holland et al 2012 melt ponds ! 
    70          !                             !-------------------------------! 
     59      ! 
     60      CASE (np_pndCST)   ;   CALL pnd_CST    !==  Constant melt ponds  ==! 
     61         ! 
     62      CASE (np_pndH12)   ;   CALL pnd_H12    !==  Holland et al 2012 melt ponds  ==! 
     63         ! 
    7164      END SELECT 
    72  
     65      ! 
    7366   END SUBROUTINE ice_thd_pnd  
    7467 
     68 
    7569   SUBROUTINE pnd_CST  
    7670      !!------------------------------------------------------------------- 
    7771      !!                ***  ROUTINE pnd_CST  *** 
    7872      !! 
    79       !! ** Purpose    : Compute melt pond evolution 
    80       !! 
    81       !! ** Method     : Melt pond fraction and thickness are prescribed  
    82       !!                 to non-zero values when t_su = 0C 
     73      !! ** Purpose Compute melt pond evolution 
     74      !! 
     75      !! ** Method  Melt pond fraction and thickness are prescribed  
     76      !!              to non-zero values when t_su = 0C 
    8377      !! 
    8478      !! ** Tunable parameters : pond fraction (rn_apnd), pond depth (rn_hpnd) 
    8579      !!                 
    86       !! ** Note       : Coupling with such melt ponds is only radiative 
    87       !!                 Advection, ridging, rafting... are bypassed 
     80      !! ** Note   : Coupling with such melt ponds is only radiative 
     81      !!         Advection, ridging, rafting... are bypassed 
    8882      !! 
    8983      !! ** References : Bush, G.W., and Trump, D.J. (2017) 
    90       !!     
    9184      !!------------------------------------------------------------------- 
    9285      INTEGER  ::   ji        ! loop indices 
    9386      !!------------------------------------------------------------------- 
    9487      DO ji = 1, npti 
    95           
     88         ! 
    9689         IF( a_i_1d(ji) > 0._wp .AND. t_su_1d(ji) >= rt0 ) THEN 
    9790            a_ip_frac_1d(ji) = rn_apnd 
     
    10396            a_ip_1d(ji)      = 0._wp 
    10497         ENDIF 
    105           
     98         ! 
    10699      END DO 
    107        
     100      ! 
    108101   END SUBROUTINE pnd_CST 
     102 
    109103 
    110104   SUBROUTINE pnd_H12 
     
    130124      !! 
    131125      !! ** References : Holland, M. M. et al (J Clim 2012) 
    132       !!     
    133126      !!------------------------------------------------------------------- 
    134127      REAL(wp), PARAMETER ::   zrmin       = 0.15_wp  ! minimum fraction of available meltwater retained for melt ponding 
    135       REAL(wp), PARAMETER ::   zrmax       = 0.70_wp  ! maximum   ''           ''       ''        ''            '' 
     128      REAL(wp), PARAMETER ::   zrmax       = 0.70_wp  ! maximum     -           -         -         -            - 
    136129      REAL(wp), PARAMETER ::   zpnd_aspect = 0.8_wp   ! pond aspect ratio 
    137130      REAL(wp), PARAMETER ::   zTp         = -2._wp   ! reference temperature 
    138  
     131      ! 
    139132      REAL(wp) ::   zfr_mlt          ! fraction of available meltwater retained for melt ponding 
    140133      REAL(wp) ::   zdv_mlt          ! available meltwater for melt ponding 
     
    143136      REAL(wp) ::   z1_zpnd_aspect   ! inverse pond aspect ratio 
    144137      REAL(wp) ::   zfac, zdum 
    145  
     138      ! 
    146139      INTEGER  ::   ji   ! loop indices 
    147140      !!------------------------------------------------------------------- 
    148       z1_rhofw       = 1. / rhofw  
    149       z1_zpnd_aspect = 1. / zpnd_aspect 
     141      z1_rhofw       = 1._wp / rhofw  
     142      z1_zpnd_aspect = 1._wp / zpnd_aspect 
    150143      z1_Tp          = 1._wp / zTp  
    151144 
     
    162155            !                                                     !--------------------------------! 
    163156            v_ip_1d(ji) = h_ip_1d(ji) * a_ip_1d(ji)   ! record pond volume at previous time step 
    164  
     157            ! 
    165158            ! available meltwater for melt ponding [m, >0] and fraction 
    166159            zdv_mlt = -( dh_i_surf(ji)*rhoic + dh_s_mlt(ji)*rhosn ) * z1_rhofw * a_i_1d(ji) 
    167160            zfr_mlt = zrmin + ( zrmax - zrmin ) * a_i_1d(ji)  ! from CICE doc 
    168161            !zfr_mlt = zrmin + zrmax * a_i_1d(ji)             ! from Holland paper  
    169  
     162            ! 
    170163            !--- Pond gowth ---! 
    171164            ! v_ip should never be negative, otherwise code crashes 
    172165            ! MV: as far as I saw, UM5 can create very small negative v_ip values (not Prather) 
    173166            v_ip_1d(ji) = MAX( 0._wp, v_ip_1d(ji) + zfr_mlt * zdv_mlt ) 
    174  
     167            ! 
    175168            ! melt pond mass flux (<0) 
    176169            IF( ln_pnd_fwb .AND. zdv_mlt > 0._wp ) THEN 
    177170               zfac = zfr_mlt * zdv_mlt * rhofw * r1_rdtice 
    178171               wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac 
    179  
     172               ! 
    180173               ! adjust ice/snow melting flux to balance melt pond flux (>0) 
    181174               zdum = zfac / ( wfx_snw_sum_1d(ji) + wfx_sum_1d(ji) ) 
     
    183176               wfx_sum_1d(ji)     = wfx_sum_1d(ji)     * (1._wp + zdum) 
    184177            ENDIF 
    185  
     178            ! 
    186179            !--- Pond contraction (due to refreezing) ---! 
    187180            v_ip_1d(ji) = v_ip_1d(ji) * EXP( 0.01_wp * MAX( zTp+rt0 - t_su_1d(ji), 0._wp ) * z1_Tp ) 
    188  
     181            ! 
    189182            ! Set new pond area and depth assuming linear relation between h_ip and a_ip_frac 
    190183            !    h_ip = zpnd_aspect * a_ip_frac = zpnd_aspect * a_ip/a_i 
     
    192185            a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 
    193186            h_ip_1d(ji)      = zpnd_aspect * a_ip_frac_1d(ji) 
    194  
     187            ! 
    195188         ENDIF 
    196189      END DO 
    197  
     190      ! 
    198191   END SUBROUTINE pnd_H12 
     192 
    199193 
    200194   SUBROUTINE ice_thd_pnd_init  
     
    210204      !! ** input   :   Namelist namthd_pnd   
    211205      !!------------------------------------------------------------------- 
    212       INTEGER  ::   ios, ioptio                 ! Local integer output status for namelist read 
     206      INTEGER  ::   ios, ioptio   ! Local integer 
     207      !! 
    213208      NAMELIST/namthd_pnd/  ln_pnd_H12, ln_pnd_fwb, ln_pnd_CST, rn_apnd, rn_hpnd, ln_pnd_alb 
    214209      !!------------------------------------------------------------------- 
    215  
     210      ! 
    216211      REWIND( numnam_ice_ref )              ! Namelist namthd_pnd  in reference namelist : Melt Ponds   
    217212      READ  ( numnam_ice_ref, namthd_pnd, IOSTAT = ios, ERR = 901) 
    218 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_pnd  in reference namelist', lwp ) 
    219  
     213901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_pnd  in reference namelist', lwp ) 
    220214      REWIND( numnam_ice_cfg )              ! Namelist namthd_pnd  in configuration namelist : Melt Ponds 
    221215      READ  ( numnam_ice_cfg, namthd_pnd, IOSTAT = ios, ERR = 902 ) 
    222 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_pnd in configuration namelist', lwp ) 
     216902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namthd_pnd in configuration namelist', lwp ) 
    223217      IF(lwm) WRITE ( numoni, namthd_pnd ) 
    224        
     218      ! 
    225219      IF(lwp) THEN                        ! control print 
    226220         WRITE(numout,*) 
     
    242236      IF( ln_pnd_H12 ) THEN   ;   ioptio = ioptio + 1   ;   nice_pnd = np_pndH12    ;   ENDIF 
    243237      IF( ioptio > 1 )   CALL ctl_stop( 'ice_thd_pnd_init: choose one and only one pond scheme (ln_pnd_H12 or ln_pnd_CST)' ) 
    244  
     238      ! 
    245239      SELECT CASE( nice_pnd ) 
    246240      CASE( np_pndNO )          
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90

    r9019 r9169  
    1212   !!   'key_lim3'                                       ESIM sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   ice_thd_sal        : salinity variations in the ice 
    15    !!   ice_thd_sal_init   : initialization 
     14   !!   ice_thd_sal      : salinity variations in the ice 
     15   !!   ice_thd_sal_init : initialization 
    1616   !!---------------------------------------------------------------------- 
    1717   USE dom_oce        ! ocean space and time domain 
     
    3232    
    3333   ! ** namelist (namthd_sal) ** 
    34    REAL(wp) ::   rn_sal_gd        ! restoring salinity for gravity drainage [PSU] 
    35    REAL(wp) ::   rn_time_gd       ! restoring time constant for gravity drainage (= 20 days) [s] 
    36    REAL(wp) ::   rn_sal_fl        ! restoring salinity for flushing [PSU] 
    37    REAL(wp) ::   rn_time_fl       ! restoring time constant for gravity drainage (= 10 days) [s] 
     34   REAL(wp) ::   rn_sal_gd     ! restoring salinity for gravity drainage [PSU] 
     35   REAL(wp) ::   rn_time_gd    ! restoring time constant for gravity drainage (= 20 days) [s] 
     36   REAL(wp) ::   rn_sal_fl     ! restoring salinity for flushing [PSU] 
     37   REAL(wp) ::   rn_time_fl    ! restoring time constant for gravity drainage (= 10 days) [s] 
    3838 
    3939   !!---------------------------------------------------------------------- 
     
    5656      !!--------------------------------------------------------------------- 
    5757      LOGICAL, INTENT(in) ::   ld_sal            ! gravity drainage and flushing or not  
     58      ! 
    5859      INTEGER  ::   ji, jk                       ! dummy loop indices  
    5960      REAL(wp) ::   iflush, igravdr              ! local scalars 
     
    6667      !               !---------------------------------------------! 
    6768      CASE( 2 )       !  time varying salinity with linear profile  ! 
    68       !               !---------------------------------------------! 
     69         !            !---------------------------------------------! 
    6970         z1_time_gd = 1._wp / rn_time_gd * rdt_ice 
    7071         z1_time_fl = 1._wp / rn_time_fl * rdt_ice 
    7172         ! 
    7273         DO ji = 1, npti 
    73  
     74            ! 
    7475            !--------------------------------------------------------- 
    7576            !  Update ice salinity from snow-ice and bottom growth 
     
    8283               s_i_1d(ji) = s_i_1d(ji) + zs_i_bg + zs_i_si 
    8384            ENDIF 
    84  
     85            ! 
    8586            IF( ld_sal ) THEN 
    8687               !--------------------------------------------------------- 
     
    100101            ENDIF 
    101102         END DO 
    102  
     103         ! 
    103104         ! Salinity profile 
    104105         CALL ice_var_salprof1d 
    105106         ! 
    106       !         !---------------------------------------------! 
    107       CASE( 3 ) ! constant salinity with a fixed profile      ! (Schwarzacher (1959) multiyear salinity profile(mean = 2.30) 
    108       !         !---------------------------------------------! 
     107         !             !----------------------------------------! 
     108      CASE( 3 )        ! constant salinity with a fixed profile ! (Schwarzacher (1959) multiyear salinity profile (mean = 2.30) 
     109         !             !----------------------------------------! 
    109110         CALL ice_var_salprof1d 
     111         ! 
     112      END SELECT 
    110113      ! 
    111    END SELECT 
    112    ! 
    113114   END SUBROUTINE ice_thd_sal 
    114115 
     
    125126      !! ** input   :   Namelist namthd_sal 
    126127      !!------------------------------------------------------------------- 
    127       INTEGER  ::   ios                 ! Local integer output status for namelist read 
     128      INTEGER  ::   ios   ! Local integer 
    128129      !! 
    129130      NAMELIST/namthd_sal/ nn_icesal, rn_icesal, rn_sal_gd, rn_time_gd,   & 
     
    133134      REWIND( numnam_ice_ref )              ! Namelist namthd_sal in reference namelist : Ice salinity 
    134135      READ  ( numnam_ice_ref, namthd_sal, IOSTAT = ios, ERR = 901) 
    135 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_sal in reference namelist', lwp ) 
    136       ! 
     136901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_sal in reference namelist', lwp ) 
    137137      REWIND( numnam_ice_cfg )              ! Namelist namthd_sal in configuration namelist : Ice salinity 
    138138      READ  ( numnam_ice_cfg, namthd_sal, IOSTAT = ios, ERR = 902 ) 
    139 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_sal in configuration namelist', lwp ) 
     139902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namthd_sal in configuration namelist', lwp ) 
    140140      IF(lwm) WRITE ( numoni, namthd_sal ) 
    141141      ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf.F90

    r9124 r9169  
    100100      REWIND( numnam_ice_ref )              ! Namelist namthd_zdf in reference namelist : Ice thermodynamics 
    101101      READ  ( numnam_ice_ref, namthd_zdf, IOSTAT = ios, ERR = 901) 
    102 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_zdf in reference namelist', lwp ) 
    103  
     102901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_zdf in reference namelist', lwp ) 
    104103      REWIND( numnam_ice_cfg )              ! Namelist namthd_zdf in configuration namelist : Ice thermodynamics 
    105104      READ  ( numnam_ice_cfg, namthd_zdf, IOSTAT = ios, ERR = 902 ) 
    106 902   IF( ios >  0 ) CALL ctl_nam ( ios , 'namthd_zdf in configuration namelist', lwp ) 
    107       IF(lwm) WRITE ( numoni, namthd_zdf ) 
    108       ! 
     105902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namthd_zdf in configuration namelist', lwp ) 
     106      IF(lwm) WRITE( numoni, namthd_zdf ) 
    109107      ! 
    110108      IF(lwp) THEN                          ! control print 
     109         WRITE(numout,*) 
    111110         WRITE(numout,*) 'ice_thd_zdf_init: Ice vertical heat diffusion' 
    112111         WRITE(numout,*) '~~~~~~~~~~~~~~~~' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_user.F90

    r9167 r9169  
    2424   ! 
    2525   IF( .NOT. Agrif_Root() ) THEN 
    26       jpni = Agrif_Parent(jpni) 
    27       jpnj = Agrif_Parent(jpnj) 
     26      jpni  = Agrif_Parent(jpni) 
     27      jpnj  = Agrif_Parent(jpnj) 
    2828      jpnij = Agrif_Parent(jpnij) 
    29       jpiglo  = nbcellsx + 2 + 2*nbghostcells 
    30       jpjglo  = nbcellsy + 2 + 2*nbghostcells 
    31       jpi     = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 
    32       jpj     = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 
     29      jpiglo = nbcellsx + 2 + 2*nbghostcells 
     30      jpjglo = nbcellsy + 2 + 2*nbghostcells 
     31      jpi    = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 
     32      jpj    = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 
    3333! JC: change to allow for different vertical levels 
    3434!     jpk is already set 
     
    3636!     hold parent grid vertical levels number (set earlier) 
    3737!      jpk     = jpkglo  
    38       jpim1   = jpi-1  
    39       jpjm1   = jpj-1  
    40       jpkm1   = MAX( 1, jpk-1 )                                          
    41       jpij    = jpi*jpj  
    42       nperio  = 0 
    43       jperio  = 0 
     38      jpim1  = jpi-1  
     39      jpjm1  = jpj-1  
     40      jpkm1  = MAX( 1, jpk-1 )                                          
     41      jpij   = jpi*jpj  
     42      nperio = 0 
     43      jperio = 0 
    4444   ENDIF 
    4545   ! 
     
    780780   REWIND( numnam_ref )              ! Namelist namagrif in reference namelist : AGRIF zoom 
    781781   READ  ( numnam_ref, namagrif, IOSTAT = ios, ERR = 901) 
    782 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namagrif in reference namelist', lwp ) 
    783  
     782901 IF( ios /= 0 )   CALL ctl_nam ( ios , 'namagrif in reference namelist', lwp ) 
    784783   REWIND( numnam_cfg )              ! Namelist namagrif in configuration namelist : AGRIF zoom 
    785784   READ  ( numnam_cfg, namagrif, IOSTAT = ios, ERR = 902 ) 
    786 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namagrif in configuration namelist', lwp ) 
     785902 IF( ios >  0 )  CALL ctl_nam ( ios , 'namagrif in configuration namelist', lwp ) 
    787786   IF(lwm) WRITE ( numond, namagrif ) 
    788787   ! 
     
    796795      WRITE(numout,*) '      use special values for dynamics   ln_spc_dyn    = ', ln_spc_dyn 
    797796      WRITE(numout,*) '      check bathymetry                  ln_chk_bathy  = ', ln_chk_bathy 
    798       WRITE(numout,*)  
    799797   ENDIF 
    800798   ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90

    r9125 r9169  
    234234      REWIND( numnam_ref )              ! Namelist namdta_dyn in reference namelist : Offline: init. of dynamical data 
    235235      READ  ( numnam_ref, namdta_dyn, IOSTAT = ios, ERR = 901) 
    236 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdta_dyn in reference namelist', lwp ) 
    237  
     236901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdta_dyn in reference namelist', lwp ) 
    238237      REWIND( numnam_cfg )              ! Namelist namdta_dyn in configuration namelist : Offline: init. of dynamical data 
    239238      READ  ( numnam_cfg, namdta_dyn, IOSTAT = ios, ERR = 902 ) 
    240 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdta_dyn in configuration namelist', lwp ) 
     239902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namdta_dyn in configuration namelist', lwp ) 
    241240      IF(lwm) WRITE ( numond, namdta_dyn ) 
    242241      !                                         ! store namelist information in an array 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90

    r9124 r9169  
    174174      REWIND( numnam_ref )              ! Namelist namctl in reference namelist : Control prints & Benchmark 
    175175      READ  ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 
    176 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    177  
     176901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    178177      REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist : Control prints & Benchmark 
    179178      READ  ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 
    180 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
     179902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
    181180 
    182181      ! 
    183182      REWIND( numnam_ref )              ! Namelist namcfg in reference namelist : Control prints & Benchmark 
    184183      READ  ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 
    185 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    186  
     184903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    187185      REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist : Control prints & Benchmark 
    188186      READ  ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 
    189 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
     187904   IF( ios >  0 )  CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
    190188 
    191189 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r9168 r9169  
    421421            ! keep full control of the configuration namelist 
    422422            READ  ( numnam_cfg, nambdy_index, IOSTAT = ios, ERR = 904 ) 
    423 904         IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) 
     423904         IF( ios /= 0 )   CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) 
    424424            IF(lwm) WRITE ( numond, nambdy_index ) 
    425425 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90

    r9168 r9169  
    5959      REAL(wp) , DIMENSION(jpidta,jpjdta) ::  gphidta, glamdta, zdist ! Global lat/lon 
    6060      !! 
    61       NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   & 
    62          &             rn_atfp     , rn_rdt      ,nn_closea , ln_crs,  jphgr_msh, & 
     61      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, ln_meshmask, rn_hmin,   & 
     62         &             rn_atfp     , rn_rdt , ln_crs,  jphgr_msh, & 
    6363         &             ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 
    6464         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 
     
    6969      READ  ( numnam_ref, namdom, IOSTAT = ios, ERR = 901 ) 
    7070901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 
    71       ! 
    7271      REWIND( numnam_cfg )              ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 
    7372      READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 902 ) 
     
    182181      jpjzoom = iloc(2) + njmpp - 2  ! corner index of the zoom domain. 
    183182 
    184       IF (lwp) THEN 
     183      IF(lwp) THEN 
    185184         WRITE(numout,*) 
    186185         WRITE(numout,*) 'dom_c1d : compute jpizoom & jpjzoom from global mesh and given coordinates' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90

    r9019 r9169  
    122122                                                !: 1 = binning centers at equator (north fold my have artifacts)      
    123123                                                !:    for even reduction factors, equator placed in bin biased south 
    124       INTEGER           :: nn_msh_crs = 1       !: Organization of mesh mask output 
    125                                                 !: 0 = no mesh mask output 
    126                                                 !: 1 = unified mesh mask output 
    127                                                 !: 2 = 2 separate mesh mask output 
    128                                                 !: 3 = 3 separate mesh mask output 
    129       INTEGER           :: nn_crs_kz    =    0       !: type of Kz coarsening ( =0->VOL ; =1->MAX ; =2->MIN)  
    130       LOGICAL           :: ln_crs_wn    = .FALSE.    !: coarsening wn or computation using horizontal divergence  
     124      LOGICAL           :: ln_msh_crs = 1          !: =T Create a meshmask file for CRS 
     125      INTEGER           :: nn_crs_kz    =    0     !: type of Kz coarsening ( =0->VOL ; =1->MAX ; =2->MIN)  
     126      LOGICAL           :: ln_crs_wn    = .FALSE.  !: coarsening wn or computation using horizontal divergence  
    131127      ! 
    132128      INTEGER           :: nrestx, nresty       !: for determining odd or even reduction factor 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90

    r9125 r9169  
    4848      !! ** Output files :   mesh_hgr_crs.nc, mesh_zgr_crs.nc, mesh_mask.nc 
    4949      !!---------------------------------------------------------------------- 
    50       !! 
    51       INTEGER           ::   inum0    ! temprary units for 'mesh_mask.nc' file 
    52       INTEGER           ::   inum1    ! temprary units for 'mesh.nc'      file 
    53       INTEGER           ::   inum2    ! temprary units for 'mask.nc'      file 
    54       INTEGER           ::   inum3    ! temprary units for 'mesh_hgr.nc'  file 
    55       INTEGER           ::   inum4    ! temprary units for 'mesh_zgr.nc'  file 
     50      INTEGER           ::   ji, jj, jk   ! dummy loop indices 
     51      INTEGER           ::   inum         ! local units for 'mesh_mask.nc' file 
    5652      INTEGER           ::   iif, iil, ijf, ijl 
    57       CHARACTER(len=21) ::   clnam0   ! filename (mesh and mask informations) 
    58       CHARACTER(len=21) ::   clnam1   ! filename (mesh informations) 
    59       CHARACTER(len=21) ::   clnam2   ! filename (mask informations) 
    60       CHARACTER(len=21) ::   clnam3   ! filename (horizontal mesh informations) 
    61       CHARACTER(len=21) ::   clnam4   ! filename (vertical   mesh informations) 
    62       INTEGER           ::   ji, jj, jk   ! dummy loop indices 
    63       !                                   !  workspaces 
    64       REAL(wp), DIMENSION(jpi_crs,jpj_crs    ) :: zprt, zprw  
    65       REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk) :: zdepu, zdepv 
    66       REAL(wp), DIMENSION(jpi_crs,jpj_crs    ) :: ze3tp, ze3wp 
    67       !!---------------------------------------------------------------------- 
    68       ! 
    69       ze3tp(:,:) = 0.0 
    70       ze3wp(:,:) = 0.0 
    71  
     53      CHARACTER(len=21) ::   clnam        ! filename (mesh and mask informations) 
     54      !                                   !  workspace 
     55      REAL(wp), DIMENSION(jpi_crs,jpj_crs    ) ::   zprt, zprw  
     56      REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk) ::   zdepu, zdepv 
     57      !!---------------------------------------------------------------------- 
     58      ! 
    7259      ! 
    7360      IF(lwp) WRITE(numout,*) 
    74       IF(lwp) WRITE(numout,*) 'crs_dom_wri : create NetCDF mesh and mask information file(s)' 
    75       IF(lwp) WRITE(numout,*) '~~~~~~~' 
    76        
    77       clnam0 = 'mesh_mask_crs'  ! filename (mesh and mask informations) 
    78       clnam1 = 'mesh_crs'       ! filename (mesh informations) 
    79       clnam2 = 'mask_crs'       ! filename (mask informations) 
    80       clnam3 = 'mesh_hgr_crs'   ! filename (horizontal mesh informations) 
    81       clnam4 = 'mesh_zgr_crs'   ! filename (vertical   mesh informations) 
    82        
    83  
    84       SELECT CASE ( MOD(nn_msh_crs, 3) ) 
    85          !                                  ! ============================ 
    86       CASE ( 1 )                            !  create 'mesh_mask.nc' file 
    87          !                                  ! ============================ 
    88          CALL iom_open( TRIM(clnam0), inum0, ldwrt = .TRUE., kiolib = jprstlib ) 
    89          inum2 = inum0                                            ! put all the informations 
    90          inum3 = inum0                                            ! in unit inum0 
    91          inum4 = inum0 
    92           
    93          !                                  ! ============================ 
    94       CASE ( 2 )                            !  create 'mesh.nc' and  
    95          !                                  !         'mask.nc' files 
    96          !                                  ! ============================ 
    97          CALL iom_open( TRIM(clnam1), inum1, ldwrt = .TRUE., kiolib = jprstlib ) 
    98          CALL iom_open( TRIM(clnam2), inum2, ldwrt = .TRUE., kiolib = jprstlib ) 
    99          inum3 = inum1                                            ! put mesh informations  
    100          inum4 = inum1                                            ! in unit inum1  
    101          !                                  ! ============================ 
    102       CASE ( 0 )                            !  create 'mesh_hgr.nc' 
    103          !                                  !         'mesh_zgr.nc' and 
    104          !                                  !         'mask.nc'     files 
    105          !                                  ! ============================ 
    106          CALL iom_open( TRIM(clnam2), inum2, ldwrt = .TRUE., kiolib = jprstlib ) 
    107          CALL iom_open( TRIM(clnam3), inum3, ldwrt = .TRUE., kiolib = jprstlib ) 
    108          CALL iom_open( TRIM(clnam4), inum4, ldwrt = .TRUE., kiolib = jprstlib ) 
    109          ! 
    110       END SELECT 
     61      IF(lwp) WRITE(numout,*) 'crs_dom_wri : create NetCDF mesh and mask file' 
     62      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
     63       
     64      clnam = 'mesh_mask_crs'  ! filename (mesh and mask informations) 
     65       
     66 
     67      !                            ! ============================ 
     68      !                            !  create 'mesh_mask.nc' file 
     69      !                            ! ============================ 
     70      ! 
     71      CALL iom_open( TRIM(clnam), inum, ldwrt = .TRUE., kiolib = jprstlib ) 
    11172  
    112       !======================================================== 
    113       !                                                         ! masks (inum2)  
    114       CALL iom_rstput( 0, 0, inum2, 'tmask', tmask_crs, ktype = jp_i1 )     !    ! land-sea mask 
    115       CALL iom_rstput( 0, 0, inum2, 'umask', umask_crs, ktype = jp_i1 ) 
    116       CALL iom_rstput( 0, 0, inum2, 'vmask', vmask_crs, ktype = jp_i1 ) 
    117       CALL iom_rstput( 0, 0, inum2, 'fmask', fmask_crs, ktype = jp_i1 ) 
     73      CALL iom_rstput( 0, 0, inum, 'tmask', tmask_crs, ktype = jp_i1 )    ! land-sea mask 
     74      CALL iom_rstput( 0, 0, inum, 'umask', umask_crs, ktype = jp_i1 ) 
     75      CALL iom_rstput( 0, 0, inum, 'vmask', vmask_crs, ktype = jp_i1 ) 
     76      CALL iom_rstput( 0, 0, inum, 'fmask', fmask_crs, ktype = jp_i1 ) 
    11877       
    11978       
     
    147106      ENDIF 
    148107       
    149       CALL iom_rstput( 0, 0, inum2, 'tmaskutil', tmask_i_crs, ktype = jp_i1 ) 
     108      CALL iom_rstput( 0, 0, inum, 'tmaskutil', tmask_i_crs, ktype = jp_i1 ) 
    150109                                   !    ! unique point mask 
    151110      CALL dom_uniq_crs( zprw, 'U' ) 
    152111      zprt = umask_crs(:,:,1) * zprw 
    153       CALL iom_rstput( 0, 0, inum2, 'umaskutil', zprt, ktype = jp_i1 )   
     112      CALL iom_rstput( 0, 0, inum, 'umaskutil', zprt, ktype = jp_i1 )   
    154113      CALL dom_uniq_crs( zprw, 'V' ) 
    155114      zprt = vmask_crs(:,:,1) * zprw 
    156       CALL iom_rstput( 0, 0, inum2, 'vmaskutil', zprt, ktype = jp_i1 )   
     115      CALL iom_rstput( 0, 0, inum, 'vmaskutil', zprt, ktype = jp_i1 )   
    157116      CALL dom_uniq_crs( zprw, 'F' ) 
    158117      zprt = fmask_crs(:,:,1) * zprw 
    159       CALL iom_rstput( 0, 0, inum2, 'fmaskutil', zprt, ktype = jp_i1 )   
     118      CALL iom_rstput( 0, 0, inum, 'fmaskutil', zprt, ktype = jp_i1 )   
    160119      !======================================================== 
    161       !                                                         ! horizontal mesh (inum3) 
    162       CALL iom_rstput( 0, 0, inum3, 'glamt', glamt_crs, ktype = jp_r4 )     !    ! latitude 
    163       CALL iom_rstput( 0, 0, inum3, 'glamu', glamu_crs, ktype = jp_r4 ) 
    164       CALL iom_rstput( 0, 0, inum3, 'glamv', glamv_crs, ktype = jp_r4 ) 
    165       CALL iom_rstput( 0, 0, inum3, 'glamf', glamf_crs, ktype = jp_r4 ) 
    166        
    167       CALL iom_rstput( 0, 0, inum3, 'gphit', gphit_crs, ktype = jp_r4 )     !    ! longitude 
    168       CALL iom_rstput( 0, 0, inum3, 'gphiu', gphiu_crs, ktype = jp_r4 ) 
    169       CALL iom_rstput( 0, 0, inum3, 'gphiv', gphiv_crs, ktype = jp_r4 ) 
    170       CALL iom_rstput( 0, 0, inum3, 'gphif', gphif_crs, ktype = jp_r4 ) 
    171        
    172       CALL iom_rstput( 0, 0, inum3, 'e1t', e1t_crs, ktype = jp_r8 )         !    ! e1 scale factors 
    173       CALL iom_rstput( 0, 0, inum3, 'e1u', e1u_crs, ktype = jp_r8 ) 
    174       CALL iom_rstput( 0, 0, inum3, 'e1v', e1v_crs, ktype = jp_r8 ) 
    175       CALL iom_rstput( 0, 0, inum3, 'e1f', e1f_crs, ktype = jp_r8 ) 
    176        
    177       CALL iom_rstput( 0, 0, inum3, 'e2t', e2t_crs, ktype = jp_r8 )         !    ! e2 scale factors 
    178       CALL iom_rstput( 0, 0, inum3, 'e2u', e2u_crs, ktype = jp_r8 ) 
    179       CALL iom_rstput( 0, 0, inum3, 'e2v', e2v_crs, ktype = jp_r8 ) 
    180       CALL iom_rstput( 0, 0, inum3, 'e2f', e2f_crs, ktype = jp_r8 ) 
    181        
    182       CALL iom_rstput( 0, 0, inum3, 'ff', ff_crs, ktype = jp_r8 )           !    ! coriolis factor 
     120      !                                                         ! horizontal mesh 
     121      CALL iom_rstput( 0, 0, inum, 'glamt', glamt_crs, ktype = jp_r4 )     !    ! latitude 
     122      CALL iom_rstput( 0, 0, inum, 'glamu', glamu_crs, ktype = jp_r4 ) 
     123      CALL iom_rstput( 0, 0, inum, 'glamv', glamv_crs, ktype = jp_r4 ) 
     124      CALL iom_rstput( 0, 0, inum, 'glamf', glamf_crs, ktype = jp_r4 ) 
     125       
     126      CALL iom_rstput( 0, 0, inum, 'gphit', gphit_crs, ktype = jp_r4 )     !    ! longitude 
     127      CALL iom_rstput( 0, 0, inum, 'gphiu', gphiu_crs, ktype = jp_r4 ) 
     128      CALL iom_rstput( 0, 0, inum, 'gphiv', gphiv_crs, ktype = jp_r4 ) 
     129      CALL iom_rstput( 0, 0, inum, 'gphif', gphif_crs, ktype = jp_r4 ) 
     130       
     131      CALL iom_rstput( 0, 0, inum, 'e1t', e1t_crs, ktype = jp_r8 )         !    ! e1 scale factors 
     132      CALL iom_rstput( 0, 0, inum, 'e1u', e1u_crs, ktype = jp_r8 ) 
     133      CALL iom_rstput( 0, 0, inum, 'e1v', e1v_crs, ktype = jp_r8 ) 
     134      CALL iom_rstput( 0, 0, inum, 'e1f', e1f_crs, ktype = jp_r8 ) 
     135       
     136      CALL iom_rstput( 0, 0, inum, 'e2t', e2t_crs, ktype = jp_r8 )         !    ! e2 scale factors 
     137      CALL iom_rstput( 0, 0, inum, 'e2u', e2u_crs, ktype = jp_r8 ) 
     138      CALL iom_rstput( 0, 0, inum, 'e2v', e2v_crs, ktype = jp_r8 ) 
     139      CALL iom_rstput( 0, 0, inum, 'e2f', e2f_crs, ktype = jp_r8 ) 
     140       
     141      CALL iom_rstput( 0, 0, inum, 'ff', ff_crs, ktype = jp_r8 )           !    ! coriolis factor 
    183142 
    184143      !======================================================== 
    185       !                                                         ! vertical mesh (inum4)  
     144      !                                                         ! vertical mesh 
    186145!     ! note that mbkt is set to 1 over land ==> use surface tmask_crs 
    187146      zprt(:,:) = tmask_crs(:,:,1) * REAL( mbkt_crs(:,:) , wp ) 
    188       CALL iom_rstput( 0, 0, inum4, 'mbathy', zprt, ktype = jp_i2 )     !    ! nb of ocean T-points 
    189  
    190       IF( ln_zps ) THEN                       ! z-coordinate - partial steps 
    191  
    192              
    193          IF ( nn_msh_crs <= 6 ) THEN 
    194             CALL iom_rstput( 0, 0, inum4, 'e3t', e3t_crs )       
    195             CALL iom_rstput( 0, 0, inum4, 'e3w', e3w_crs )       
    196             CALL iom_rstput( 0, 0, inum4, 'e3u', e3u_crs )       
    197             CALL iom_rstput( 0, 0, inum4, 'e3v', e3v_crs )       
    198          ELSE 
    199             DO jj = 1,jpj_crs    
    200                DO ji = 1,jpi_crs 
    201                   ze3tp(ji,jj) = e3t_crs(ji,jj,mbkt_crs(ji,jj)) * tmask_crs(ji,jj,1) 
    202                   ze3wp(ji,jj) = e3w_crs(ji,jj,mbkt_crs(ji,jj)) * tmask_crs(ji,jj,1) 
    203                END DO 
    204             END DO 
    205  
    206             CALL crs_lbc_lnk( ze3tp,'T', 1.0 ) 
    207             CALL crs_lbc_lnk( ze3wp,'W', 1.0 ) 
    208    
    209             CALL iom_rstput( 0, 0, inum4, 'e3t_ps', ze3tp )       
    210             CALL iom_rstput( 0, 0, inum4, 'e3w_ps', ze3wp ) 
    211          ENDIF 
    212  
    213          IF ( nn_msh_crs <= 3 ) THEN 
    214             CALL iom_rstput( 0, 0, inum4, 'gdept', gdept_crs, ktype = jp_r4 )  
    215             DO jk = 1,jpk    
    216                DO jj = 1, jpj_crsm1    
    217                   DO ji = 1, jpi_crsm1  ! jes what to do for fs_jpim1??vector opt. 
    218                      zdepu(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji+1,jj  ,jk) ) * umask_crs(ji,jj,jk) 
    219                      zdepv(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji  ,jj+1,jk) ) * vmask_crs(ji,jj,jk) 
    220                   END DO    
    221                END DO    
    222             END DO 
    223  
    224             CALL crs_lbc_lnk( zdepu,'U', 1. )   ;   CALL crs_lbc_lnk( zdepv,'V', 1. )  
    225             CALL iom_rstput( 0, 0, inum4, 'gdepu', zdepu, ktype = jp_r4 ) 
    226             CALL iom_rstput( 0, 0, inum4, 'gdepv', zdepv, ktype = jp_r4 ) 
    227             CALL iom_rstput( 0, 0, inum4, 'gdepw', gdepw_crs, ktype = jp_r4 ) 
    228          ELSE 
    229             DO jj = 1,jpj_crs    
    230                DO ji = 1,jpi_crs 
    231                   zprt(ji,jj) = gdept_0(ji,jj,mbkt(ji,jj)  ) * tmask(ji,jj,1) 
    232                   zprw(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) * tmask(ji,jj,1) 
    233                END DO 
    234             END DO 
    235             CALL iom_rstput( 0, 0, inum4, 'hdept', zprt, ktype = jp_r4 )      
    236             CALL iom_rstput( 0, 0, inum4, 'hdepw', zprw, ktype = jp_r4 )  
    237          ENDIF 
    238  
    239          CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d )     !    ! reference z-coord. 
    240          CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 
    241          CALL iom_rstput( 0, 0, inum4, 'e3t_1d'  , e3t_1d   ) 
    242          CALL iom_rstput( 0, 0, inum4, 'e3w_1d'  , e3w_1d   ) 
    243  
    244          CALL iom_rstput(  0, 0, inum4, 'ocean_volume_t', ocean_volume_crs_t )  
    245          CALL iom_rstput(  0, 0, inum4, 'facvol_t' , facvol_t  )  
    246          CALL iom_rstput(  0, 0, inum4, 'facvol_w' , facvol_w  )  
    247          CALL iom_rstput(  0, 0, inum4, 'facsurfu' , facsurfu  )  
    248          CALL iom_rstput(  0, 0, inum4, 'facsurfv' , facsurfv  )  
    249          CALL iom_rstput(  0, 0, inum4, 'e1e2w_msk', e1e2w_msk )  
    250          CALL iom_rstput(  0, 0, inum4, 'e2e3u_msk', e2e3u_msk )  
    251          CALL iom_rstput(  0, 0, inum4, 'e1e3v_msk', e1e3v_msk ) 
    252          CALL iom_rstput(  0, 0, inum4, 'e1e2w'    , e1e2w_crs )  
    253          CALL iom_rstput(  0, 0, inum4, 'e2e3u'    , e2e3u_crs )  
    254          CALL iom_rstput(  0, 0, inum4, 'e1e3v'    , e1e3v_crs ) 
    255          CALL iom_rstput(  0, 0, inum4, 'bt'       , bt_crs    ) 
    256          CALL iom_rstput(  0, 0, inum4, 'r1_bt'    , r1_bt_crs ) 
    257  
    258          CALL iom_rstput(  0, 0, inum4, 'crs_surfu_wgt', crs_surfu_wgt )  
    259          CALL iom_rstput(  0, 0, inum4, 'crs_surfv_wgt', crs_surfv_wgt )  
    260          CALL iom_rstput(  0, 0, inum4, 'crs_volt_wgt' , crs_volt_wgt  )  
    261  
    262       ENDIF 
    263        
    264      IF( ln_zco ) THEN 
    265          !                                                      ! z-coordinate - full steps 
    266         CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d )     !    ! depth 
    267         CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 
    268         CALL iom_rstput( 0, 0, inum4, 'e3t_1d'  , e3t_1d   )     !    ! scale factors 
    269         CALL iom_rstput( 0, 0, inum4, 'e3w_1d'  , e3w_1d   ) 
    270      ENDIF 
     147      CALL iom_rstput( 0, 0, inum, 'mbathy', zprt, ktype = jp_i2 )     !    ! nb of ocean T-points 
     148      ! 
     149      CALL iom_rstput( 0, 0, inum, 'e3t', e3t_crs )       
     150      CALL iom_rstput( 0, 0, inum, 'e3w', e3w_crs )       
     151      CALL iom_rstput( 0, 0, inum, 'e3u', e3u_crs )       
     152      CALL iom_rstput( 0, 0, inum, 'e3v', e3v_crs )       
     153      ! 
     154      CALL iom_rstput( 0, 0, inum, 'gdept', gdept_crs, ktype = jp_r4 )  
     155      DO jk = 1,jpk    
     156         DO jj = 1, jpj_crsm1    
     157            DO ji = 1, jpi_crsm1  ! jes what to do for fs_jpim1??vector opt. 
     158               zdepu(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji+1,jj  ,jk) ) * umask_crs(ji,jj,jk) 
     159               zdepv(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji  ,jj+1,jk) ) * vmask_crs(ji,jj,jk) 
     160            END DO    
     161         END DO    
     162      END DO 
     163      CALL crs_lbc_lnk( zdepu,'U', 1. )   ;   CALL crs_lbc_lnk( zdepv,'V', 1. )  
     164      ! 
     165      CALL iom_rstput( 0, 0, inum, 'gdepu', zdepu, ktype = jp_r4 ) 
     166      CALL iom_rstput( 0, 0, inum, 'gdepv', zdepv, ktype = jp_r4 ) 
     167      CALL iom_rstput( 0, 0, inum, 'gdepw', gdepw_crs, ktype = jp_r4 ) 
     168      ! 
     169      CALL iom_rstput( 0, 0, inum, 'gdept_1d', gdept_1d )     !    ! reference z-coord. 
     170      CALL iom_rstput( 0, 0, inum, 'gdepw_1d', gdepw_1d ) 
     171      CALL iom_rstput( 0, 0, inum, 'e3t_1d'  , e3t_1d   ) 
     172      CALL iom_rstput( 0, 0, inum, 'e3w_1d'  , e3w_1d   ) 
     173      ! 
     174      CALL iom_rstput(  0, 0, inum, 'ocean_volume_t', ocean_volume_crs_t )  
     175      CALL iom_rstput(  0, 0, inum, 'facvol_t' , facvol_t  )  
     176      CALL iom_rstput(  0, 0, inum, 'facvol_w' , facvol_w  )  
     177      CALL iom_rstput(  0, 0, inum, 'facsurfu' , facsurfu  )  
     178      CALL iom_rstput(  0, 0, inum, 'facsurfv' , facsurfv  )  
     179      CALL iom_rstput(  0, 0, inum, 'e1e2w_msk', e1e2w_msk )  
     180      CALL iom_rstput(  0, 0, inum, 'e2e3u_msk', e2e3u_msk )  
     181      CALL iom_rstput(  0, 0, inum, 'e1e3v_msk', e1e3v_msk ) 
     182      CALL iom_rstput(  0, 0, inum, 'e1e2w'    , e1e2w_crs )  
     183      CALL iom_rstput(  0, 0, inum, 'e2e3u'    , e2e3u_crs )  
     184      CALL iom_rstput(  0, 0, inum, 'e1e3v'    , e1e3v_crs ) 
     185      CALL iom_rstput(  0, 0, inum, 'bt'       , bt_crs    ) 
     186      CALL iom_rstput(  0, 0, inum, 'r1_bt'    , r1_bt_crs ) 
     187      ! 
     188      CALL iom_rstput(  0, 0, inum, 'crs_surfu_wgt', crs_surfu_wgt )  
     189      CALL iom_rstput(  0, 0, inum, 'crs_surfv_wgt', crs_surfv_wgt )  
     190      CALL iom_rstput(  0, 0, inum, 'crs_volt_wgt' , crs_volt_wgt  )  
    271191      !                                     ! ============================ 
    272192      !                                     !        close the files  
    273193      !                                     ! ============================ 
    274       SELECT CASE ( MOD(nn_msh_crs, 3) ) 
    275       CASE ( 1 )                 
    276          CALL iom_close( inum0 ) 
    277       CASE ( 2 ) 
    278          CALL iom_close( inum1 ) 
    279          CALL iom_close( inum2 ) 
    280       CASE ( 0 ) 
    281          CALL iom_close( inum2 ) 
    282          CALL iom_close( inum3 ) 
    283          CALL iom_close( inum4 ) 
    284       END SELECT 
     194      CALL iom_close( inum ) 
    285195      ! 
    286196   END SUBROUTINE crs_dom_wri 
     
    296206      !!                2) check which elements have been changed 
    297207      !!---------------------------------------------------------------------- 
    298       ! 
    299208      CHARACTER(len=1)        , INTENT(in   ) ::   cdgrd   !  
    300209      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   puniq   !  
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90

    r9168 r9169  
    7373      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, ze3w 
    7474 
    75       NAMELIST/namcrs/ nn_factx, nn_facty, nn_binref, nn_msh_crs, nn_crs_kz, ln_crs_wn 
     75      NAMELIST/namcrs/ nn_factx, nn_facty, nn_binref, ln_msh_crs, nn_crs_kz, ln_crs_wn 
    7676      !!---------------------------------------------------------------------- 
    7777      ! 
     
    9696        WRITE(numout,*) '      coarsening factor in j-direction      nn_facty   = ', nn_facty 
    9797        WRITE(numout,*) '      bin centering preference              nn_binref  = ', nn_binref 
    98         WRITE(numout,*) '      create (=1) a mesh file or not (=0)   nn_msh_crs = ', nn_msh_crs 
     98        WRITE(numout,*) '      create a mesh file (=T)               ln_msh_crs = ', ln_msh_crs 
    9999        WRITE(numout,*) '      type of Kz coarsening (0,1,2)         nn_crs_kz  = ', nn_crs_kz 
    100100        WRITE(numout,*) '      wn coarsened or computed using hdivn  ln_crs_wn  = ', ln_crs_wn 
     
    228228     !--------------------------------------------------------- 
    229229 
    230      IF( nn_msh_crs > 0 ) THEN  
     230     IF( ln_msh_crs ) THEN  
    231231        CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
    232232        CALL crs_dom_wri      
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r9168 r9169  
    231231 
    232232   SUBROUTINE dia_hsb_rst( kt, cdrw ) 
    233      !!--------------------------------------------------------------------- 
    234      !!                   ***  ROUTINE dia_hsb_rst  *** 
    235      !!                      
    236      !! ** Purpose :   Read or write DIA file in restart file 
    237      !! 
    238      !! ** Method  :   use of IOM library 
    239      !!---------------------------------------------------------------------- 
    240      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
    241      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
    242      ! 
    243      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    244      !!---------------------------------------------------------------------- 
    245      ! 
    246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    247         IF( ln_rstart ) THEN                   !* Read the restart file 
    248            ! 
    249            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    250            IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    251            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    252            CALL iom_get( numror, 'frc_v', frc_v ) 
    253            CALL iom_get( numror, 'frc_t', frc_t ) 
    254            CALL iom_get( numror, 'frc_s', frc_s ) 
    255            IF( ln_linssh ) THEN 
    256               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
    257               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
    258            ENDIF 
    259            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
    260            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini(:,:) ) 
    261            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini(:,:,:) ) 
    262            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
    263            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
    264            IF( ln_linssh ) THEN 
    265               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
    266               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
    267            ENDIF 
    268        ELSE 
    269           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    270           IF(lwp) WRITE(numout,*) ' dia_hsb at initial state ' 
    271           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    272           surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
    273           ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
    274           DO jk = 1, jpk 
    275              ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
    276              e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
    277              hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
    278              sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
    279           END DO 
    280           frc_v = 0._wp                                           ! volume       trend due to forcing 
    281           frc_t = 0._wp                                           ! heat content   -    -   -    -    
    282           frc_s = 0._wp                                           ! salt content   -    -   -    -         
    283           IF( ln_linssh ) THEN 
    284              IF ( ln_isfcav ) THEN 
    285                 DO ji=1,jpi 
    286                    DO jj=1,jpj 
    287                       ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
    288                       ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
    289                    ENDDO 
    290                 ENDDO 
    291              ELSE 
    292                 ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
    293                 ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
    294              END IF 
    295              frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
    296              frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
    297           ENDIF 
    298        ENDIF 
    299  
    300      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    301         !                                   ! ------------------- 
    302         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    303         IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    304         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    305  
    306         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
    307         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
    308         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
    309         IF( ln_linssh ) THEN 
    310            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
    311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
    312         ENDIF 
    313         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
    314         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:) ) 
    315         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:) ) 
    316         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
    317         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
    318         IF( ln_linssh ) THEN 
    319            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
    320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
    321         ENDIF 
    322         ! 
    323      ENDIF 
    324      ! 
     233      !!--------------------------------------------------------------------- 
     234      !!                   ***  ROUTINE dia_hsb_rst  *** 
     235      !!                      
     236      !! ** Purpose :   Read or write DIA file in restart file 
     237      !! 
     238      !! ** Method  :   use of IOM library 
     239      !!---------------------------------------------------------------------- 
     240      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
     241      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
     242      ! 
     243      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     244      !!---------------------------------------------------------------------- 
     245      ! 
     246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
     247         IF( ln_rstart ) THEN                   !* Read the restart file 
     248            ! 
     249            IF(lwp) WRITE(numout,*) 
     250            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : read hsb restart at it= ', kt,' date= ', ndastp 
     251            IF(lwp) WRITE(numout,*) 
     252            CALL iom_get( numror, 'frc_v', frc_v ) 
     253            CALL iom_get( numror, 'frc_t', frc_t ) 
     254            CALL iom_get( numror, 'frc_s', frc_s ) 
     255            IF( ln_linssh ) THEN 
     256               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
     257               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
     258            ENDIF 
     259            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
     260            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini(:,:) ) 
     261            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini(:,:,:) ) 
     262            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
     263            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
     264            IF( ln_linssh ) THEN 
     265               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
     266               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
     267            ENDIF 
     268          ELSE 
     269            IF(lwp) WRITE(numout,*) 
     270            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : initialise hsb at initial state ' 
     271            IF(lwp) WRITE(numout,*) 
     272            surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
     273            ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
     274            DO jk = 1, jpk 
     275              ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
     276               e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
     277               hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
     278               sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
     279            END DO 
     280            frc_v = 0._wp                                           ! volume       trend due to forcing 
     281            frc_t = 0._wp                                           ! heat content   -    -   -    -    
     282            frc_s = 0._wp                                           ! salt content   -    -   -    -         
     283            IF( ln_linssh ) THEN 
     284               IF( ln_isfcav ) THEN 
     285                  DO ji = 1, jpi 
     286                     DO jj = 1, jpj 
     287                        ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
     288                        ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
     289                     END DO 
     290                   END DO 
     291                ELSE 
     292                  ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
     293                  ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
     294               END IF 
     295               frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
     296               frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
     297            ENDIF 
     298         ENDIF 
     299         ! 
     300      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
     301         !                                   ! ------------------- 
     302         IF(lwp) WRITE(numout,*) 
     303         IF(lwp) WRITE(numout,*) '   dia_hsb_rst : write restart at it= ', kt,' date= ', ndastp 
     304         IF(lwp) WRITE(numout,*) 
     305         ! 
     306         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
     307         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
     308         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
     309         IF( ln_linssh ) THEN 
     310            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
     311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
     312         ENDIF 
     313         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
     314         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:) ) 
     315         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:) ) 
     316         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
     317         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
     318         IF( ln_linssh ) THEN 
     319            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
     320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
     321         ENDIF 
     322         ! 
     323      ENDIF 
     324      ! 
    325325   END SUBROUTINE dia_hsb_rst 
    326326 
     
    338338      !!             - Compute coefficients for conversion 
    339339      !!--------------------------------------------------------------------------- 
    340       INTEGER ::   ierror   ! local integer 
    341       INTEGER ::   ios 
     340      INTEGER ::   ierror, ios   ! local integer 
    342341      !! 
    343342      NAMELIST/namhsb/ ln_diahsb 
    344343      !!---------------------------------------------------------------------- 
    345344      ! 
     345      IF(lwp) THEN 
     346         WRITE(numout,*) 
     347         WRITE(numout,*) 'dia_hsb_init : heat and salt budgets diagnostics' 
     348         WRITE(numout,*) '~~~~~~~~~~~~ ' 
     349      ENDIF 
    346350      REWIND( numnam_ref )              ! Namelist namhsb in reference namelist 
    347351      READ  ( numnam_ref, namhsb, IOSTAT = ios, ERR = 901) 
     
    350354      READ  ( numnam_cfg, namhsb, IOSTAT = ios, ERR = 902 ) 
    351355902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namhsb in configuration namelist', lwp ) 
    352       IF(lwm) WRITE ( numond, namhsb ) 
     356      IF(lwm) WRITE( numond, namhsb ) 
    353357 
    354358      IF(lwp) THEN 
    355          WRITE(numout,*) 
    356          WRITE(numout,*) 'dia_hsb_init : heat and salt budgets diagnostics' 
    357          WRITE(numout,*) '~~~~~~~~~~~~ ' 
    358359         WRITE(numout,*) '   Namelist  namhsb :' 
    359360         WRITE(numout,*) '      check the heat and salt budgets (T) or not (F)       ln_diahsb = ', ln_diahsb 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/closea.F90

    r9161 r9169  
    123123         ENDIF 
    124124      ELSE  
    125          IF( lwp ) WRITE(numout,*) 'closea_mask field not found in domain_cfg file. No closed seas defined.' 
     125         IF( lwp ) WRITE(numout,*) 
     126         IF( lwp ) WRITE(numout,*) '   ==>>>   closea_mask field not found in domain_cfg file.' 
     127         IF( lwp ) WRITE(numout,*) '           No closed seas defined.' 
     128         IF( lwp ) WRITE(numout,*) 
    126129         l_sbc_clo = .false. 
    127130         jncs = 0  
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r9161 r9169  
    3131   !                                   !!* Namelist namdom : time & space domain * 
    3232   LOGICAL , PUBLIC ::   ln_linssh      !: =T  linear free surface ==>> model level are fixed in time 
    33    INTEGER , PUBLIC ::   nn_msh         !: >0  create a mesh-mask file (mesh_mask.nc) 
     33   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc) 
    3434   REAL(wp), PUBLIC ::   rn_isfhmin     !: threshold to discriminate grounded ice to floating ice 
    3535   REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r9168 r9169  
    7070      !!                         and scale factors, and the coriolis factor 
    7171      !!              - dom_zgr: define the vertical coordinate and the bathymetry 
    72       !!              - dom_wri: create the meshmask file if nn_msh=1 
     72      !!              - dom_wri: create the meshmask file (ln_meshmask=T) 
    7373      !!              - 1D configuration, move Coriolis, u and v at T-point 
    7474      !!---------------------------------------------------------------------- 
     
    110110         END SELECT 
    111111         WRITE(numout,*)     '      Ocean model configuration used:' 
    112          WRITE(numout,*)     '              cn_cfg = ', cn_cfg 
    113          WRITE(numout,*)     '              nn_cfg = ', nn_cfg 
     112         WRITE(numout,*)     '         cn_cfg = ', TRIM( cn_cfg ), '   nn_cfg = ', nn_cfg 
    114113      ENDIF 
    115114      ! 
     
    176175      IF( lk_c1d         )   CALL cor_c1d       ! 1D configuration: Coriolis set at T-point 
    177176      ! 
    178       IF( nn_msh > 0 .AND. .NOT. ln_iscpl )                         CALL dom_wri      ! Create a domain file 
    179       IF( nn_msh > 0 .AND.       ln_iscpl .AND. .NOT. ln_rstart )   CALL dom_wri      ! Create a domain file 
    180       IF( .NOT.ln_rstart )   CALL dom_ctl       ! Domain control 
    181       ! 
    182        
     177      IF( ln_meshmask .AND. .NOT.ln_iscpl )                        CALL dom_wri     ! Create a domain file 
     178      IF( ln_meshmask .AND.      ln_iscpl .AND. .NOT.ln_rstart )   CALL dom_wri     ! Create a domain file 
     179      IF(                                       .NOT.ln_rstart )   CALL dom_ctl     ! Domain control 
     180      ! 
     181      IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
     182      ! 
    183183      IF(lwp) THEN 
    184184         WRITE(numout,*) 
    185          WRITE(numout,*) 'dom_init : end of domain initialization nn_msh=', nn_msh 
     185         WRITE(numout,*) 'dom_init :   ==>>>   END of domain initialization' 
     186         WRITE(numout,*) '~~~~~~~~' 
    186187         WRITE(numout,*)  
    187188      ENDIF 
    188       ! 
    189       IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
    190189      ! 
    191190   END SUBROUTINE dom_init 
     
    269268      !!---------------------------------------------------------------------- 
    270269      USE ioipsl 
     270      !! 
     271      INTEGER  ::   ios   ! Local integer 
     272      ! 
    271273      NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list,                 & 
    272274         &             nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     & 
     
    274276         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
    275277         &             ln_cfmeta, ln_iscpl 
    276       NAMELIST/namdom/ ln_linssh, nn_msh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs 
     278      NAMELIST/namdom/ ln_linssh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
    277279#if defined key_netcdf4 
    278280      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
    279281#endif 
    280       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    281       !!---------------------------------------------------------------------- 
     282      !!---------------------------------------------------------------------- 
     283      ! 
     284      IF(lwp) THEN 
     285         WRITE(numout,*) 
     286         WRITE(numout,*) 'dom_nam  : domain initialization through namelist read' 
     287         WRITE(numout,*) '~~~~~~~ ' 
     288      ENDIF 
    282289      ! 
    283290      REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
     
    290297      ! 
    291298      IF(lwp) THEN                  ! control print 
    292          WRITE(numout,*) 
    293          WRITE(numout,*) 'dom_nam  : domain initialization through namelist read' 
    294          WRITE(numout,*) '~~~~~~~ ' 
    295          WRITE(numout,*) '   Namelist namrun' 
    296          WRITE(numout,*) '      job number                      nn_no      = ', nn_no 
    297          WRITE(numout,*) '      experiment name for output      cn_exp     = ', cn_exp 
    298          WRITE(numout,*) '      file prefix restart input       cn_ocerst_in= ', cn_ocerst_in 
    299          WRITE(numout,*) '      restart input directory         cn_ocerst_indir= ', cn_ocerst_indir 
    300          WRITE(numout,*) '      file prefix restart output      cn_ocerst_out= ', cn_ocerst_out 
    301          WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', cn_ocerst_outdir 
    302          WRITE(numout,*) '      restart logical                 ln_rstart  = ', ln_rstart 
    303          WRITE(numout,*) '      start with forward time step    nn_euler   = ', nn_euler 
    304          WRITE(numout,*) '      control of time step            nn_rstctl  = ', nn_rstctl 
    305          WRITE(numout,*) '      number of the first time step   nn_it000   = ', nn_it000 
    306          WRITE(numout,*) '      number of the last time step    nn_itend   = ', nn_itend 
    307          WRITE(numout,*) '      initial calendar date aammjj    nn_date0   = ', nn_date0 
    308          WRITE(numout,*) '      initial time of day in hhmm     nn_time0   = ', nn_time0 
    309          WRITE(numout,*) '      leap year calendar (0/1)        nn_leapy   = ', nn_leapy 
    310          WRITE(numout,*) '      initial state output            nn_istate  = ', nn_istate 
     299         WRITE(numout,*) '   Namelist : namrun' 
     300         WRITE(numout,*) '      job number                      nn_no           = ', nn_no 
     301         WRITE(numout,*) '      experiment name for output      cn_exp          = ', TRIM( cn_exp           ) 
     302         WRITE(numout,*) '      file prefix restart input       cn_ocerst_in    = ', TRIM( cn_ocerst_in     ) 
     303         WRITE(numout,*) '      restart input directory         cn_ocerst_indir = ', TRIM( cn_ocerst_indir  ) 
     304         WRITE(numout,*) '      file prefix restart output      cn_ocerst_out   = ', TRIM( cn_ocerst_out    ) 
     305         WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', TRIM( cn_ocerst_outdir ) 
     306         WRITE(numout,*) '      restart logical                 ln_rstart       = ', ln_rstart 
     307         WRITE(numout,*) '      start with forward time step    nn_euler        = ', nn_euler 
     308         WRITE(numout,*) '      control of time step            nn_rstctl       = ', nn_rstctl 
     309         WRITE(numout,*) '      number of the first time step   nn_it000        = ', nn_it000 
     310         WRITE(numout,*) '      number of the last time step    nn_itend        = ', nn_itend 
     311         WRITE(numout,*) '      initial calendar date aammjj    nn_date0        = ', nn_date0 
     312         WRITE(numout,*) '      initial time of day in hhmm     nn_time0        = ', nn_time0 
     313         WRITE(numout,*) '      leap year calendar (0/1)        nn_leapy        = ', nn_leapy 
     314         WRITE(numout,*) '      initial state output            nn_istate       = ', nn_istate 
    311315         IF( ln_rst_list ) THEN 
    312             WRITE(numout,*) '      list of restart dump times      nn_stocklist   =', nn_stocklist 
     316            WRITE(numout,*) '      list of restart dump times      nn_stocklist    =', nn_stocklist 
    313317         ELSE 
    314             WRITE(numout,*) '      frequency of restart file       nn_stock   = ', nn_stock 
     318            WRITE(numout,*) '      frequency of restart file       nn_stock        = ', nn_stock 
    315319         ENDIF 
    316          WRITE(numout,*) '      frequency of output file        nn_write   = ', nn_write 
    317          WRITE(numout,*) '      mask land points                ln_mskland = ', ln_mskland 
    318          WRITE(numout,*) '      additional CF standard metadata ln_cfmeta  = ', ln_cfmeta 
    319          WRITE(numout,*) '      overwrite an existing file      ln_clobber = ', ln_clobber 
    320          WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz = ', nn_chunksz 
    321          WRITE(numout,*) '      IS coupling at the restart step ln_iscpl   = ', ln_iscpl 
     320         WRITE(numout,*) '      frequency of output file        nn_write        = ', nn_write 
     321         WRITE(numout,*) '      mask land points                ln_mskland      = ', ln_mskland 
     322         WRITE(numout,*) '      additional CF standard metadata ln_cfmeta       = ', ln_cfmeta 
     323         WRITE(numout,*) '      overwrite an existing file      ln_clobber      = ', ln_clobber 
     324         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz      = ', nn_chunksz 
     325         WRITE(numout,*) '      IS coupling at the restart step ln_iscpl        = ', ln_iscpl 
    322326      ENDIF 
    323327 
     
    336340      IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
    337341         IF(lwp) WRITE(numout,*)   
    338          IF(lwp) WRITE(numout,*)'   Start from rest (ln_rstart=F) ==>>> an Euler initial time step is used,' 
    339          IF(lwp) WRITE(numout,*)'                                       nn_euler is forced to 0 '    
     342         IF(lwp) WRITE(numout,*)'   ==>>>   Start from rest (ln_rstart=F)' 
     343         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : nn_euler is forced to 0 '    
    340344         neuler = 0 
    341345      ENDIF 
    342346      !                             ! control of output frequency 
    343       IF ( nstock == 0 .OR. nstock > nitend ) THEN 
     347      IF( nstock == 0 .OR. nstock > nitend ) THEN 
    344348         WRITE(ctmp1,*) 'nstock = ', nstock, ' it is forced to ', nitend 
    345349         CALL ctl_warn( ctmp1 ) 
     
    376380      READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 
    377381904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 
    378       IF(lwm) WRITE ( numond, namdom ) 
     382      IF(lwm) WRITE( numond, namdom ) 
    379383      ! 
    380384      IF(lwp) THEN 
    381385         WRITE(numout,*) 
    382          WRITE(numout,*) '   Namelist namdom : space & time domain' 
    383          WRITE(numout,*) '      linear free surface (=T)              ln_linssh  = ', ln_linssh 
    384          WRITE(numout,*) '      create mesh/mask file(s)              nn_msh     = ', nn_msh 
    385          WRITE(numout,*) '           = 0   no file created           ' 
    386          WRITE(numout,*) '           = 1   mesh_mask                 ' 
    387          WRITE(numout,*) '           = 2   mesh and mask             ' 
    388          WRITE(numout,*) '           = 3   mesh_hgr, msh_zgr and mask' 
    389          WRITE(numout,*) '      treshold to open the isf cavity       rn_isfhmin = ', rn_isfhmin, ' (m)' 
    390          WRITE(numout,*) '      ocean time step                       rn_rdt     = ', rn_rdt 
    391          WRITE(numout,*) '      asselin time filter parameter         rn_atfp    = ', rn_atfp 
    392          WRITE(numout,*) '      online coarsening of dynamical fields ln_crs     = ', ln_crs 
    393       ENDIF 
    394        
    395       call flush( numout ) 
    396       ! 
    397 !     !          ! conversion DOCTOR names into model names (this should disappear soon) 
    398       atfp      = rn_atfp 
    399       rdt       = rn_rdt 
     386         WRITE(numout,*) '   Namelist : namdom   ---   space & time domain' 
     387         WRITE(numout,*) '      linear free surface (=T)                ln_linssh   = ', ln_linssh 
     388         WRITE(numout,*) '      create mesh/mask file                   ln_meshmask = ', ln_meshmask 
     389         WRITE(numout,*) '      treshold to open the isf cavity         rn_isfhmin  = ', rn_isfhmin, ' [m]' 
     390         WRITE(numout,*) '      ocean time step                         rn_rdt      = ', rn_rdt 
     391         WRITE(numout,*) '      asselin time filter parameter           rn_atfp     = ', rn_atfp 
     392         WRITE(numout,*) '      online coarsening of dynamical fields   ln_crs      = ', ln_crs 
     393      ENDIF 
     394      ! 
     395      !          ! conversion DOCTOR names into model names (this should disappear soon) 
     396      atfp = rn_atfp 
     397      rdt  = rn_rdt 
    400398 
    401399#if defined key_netcdf4 
     
    403401      REWIND( numnam_ref )              ! Namelist namnc4 in reference namelist : NETCDF 
    404402      READ  ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 
    405 907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 
     403907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 
    406404      REWIND( numnam_cfg )              ! Namelist namnc4 in configuration namelist : NETCDF 
    407405      READ  ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 
    408 908   IF( ios >  0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp ) 
     406908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp ) 
    409407      IF(lwm) WRITE( numond, namnc4 ) 
    410408 
     
    412410         WRITE(numout,*) 
    413411         WRITE(numout,*) '   Namelist namnc4 - Netcdf4 chunking parameters' 
    414          WRITE(numout,*) '      number of chunks in i-dimension      nn_nchunks_i  = ', nn_nchunks_i 
    415          WRITE(numout,*) '      number of chunks in j-dimension      nn_nchunks_j  = ', nn_nchunks_j 
    416          WRITE(numout,*) '      number of chunks in k-dimension      nn_nchunks_k  = ', nn_nchunks_k 
    417          WRITE(numout,*) '      apply netcdf4/hdf5 chunking & compression ln_nc4zip = ', ln_nc4zip 
     412         WRITE(numout,*) '      number of chunks in i-dimension             nn_nchunks_i = ', nn_nchunks_i 
     413         WRITE(numout,*) '      number of chunks in j-dimension             nn_nchunks_j = ', nn_nchunks_j 
     414         WRITE(numout,*) '      number of chunks in k-dimension             nn_nchunks_k = ', nn_nchunks_k 
     415         WRITE(numout,*) '      apply netcdf4/hdf5 chunking & compression   ln_nc4zip    = ', ln_nc4zip 
    418416      ENDIF 
    419417 
     
    487485      !! ** Purpose :   read the domain size in domain configuration file 
    488486      !! 
    489       !! ** Method  :    
    490       !! 
     487      !! ** Method  :   read the cn_domcfg NetCDF file 
    491488      !!---------------------------------------------------------------------- 
    492489      CHARACTER(len=*), DIMENSION(:), INTENT(out) ::   ldtxt           ! stored print information 
     
    503500      ii = 1 
    504501      WRITE(ldtxt(ii),*) '           '                                                    ;   ii = ii+1 
    505       WRITE(ldtxt(ii),*) 'domain_cfg : domain size read in ', TRIM( cn_domcfg ), ' file'   ;   ii = ii+1 
     502      WRITE(ldtxt(ii),*) 'domain_cfg : domain size read in ', TRIM( cn_domcfg ), ' file'  ;   ii = ii+1 
    506503      WRITE(ldtxt(ii),*) '~~~~~~~~~~ '                                                    ;   ii = ii+1 
    507504      ! 
     
    515512         CALL iom_get( inum, 'ORCA_index', zorca_res )   ;   kk_cfg = INT( zorca_res ) 
    516513         ! 
    517          WRITE(ldtxt(ii),*) '       '                                                    ;   ii = ii+1 
    518          WRITE(ldtxt(ii),*) '       ==>>>   ORCA configuration '                         ;   ii = ii+1 
    519          WRITE(ldtxt(ii),*) '       '                                                    ;   ii = ii+1 
     514         WRITE(ldtxt(ii),*) '       '                                                     ;   ii = ii+1 
     515         WRITE(ldtxt(ii),*) '       ==>>>   ORCA configuration '                          ;   ii = ii+1 
     516         WRITE(ldtxt(ii),*) '       '                                                     ;   ii = ii+1 
    520517         ! 
    521518      ELSE                                !- cd_cfg & k_cfg are not used 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r9019 r9169  
    9191      IF( ln_read_cfg ) THEN        !==  read in mesh_mask.nc file  ==! 
    9292         IF(lwp) WRITE(numout,*) 
    93          IF(lwp) WRITE(numout,*) '          read horizontal mesh in ', TRIM( cn_domcfg ), ' file' 
     93         IF(lwp) WRITE(numout,*) '   ==>>>   read horizontal mesh in ', TRIM( cn_domcfg ), ' file' 
    9494         ! 
    9595         CALL hgr_read   ( glamt , glamu , glamv , glamf ,   &    ! geographic position (required) 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r9168 r9169  
    119119         WRITE(numout,*) '      consistency with analytical form   ln_vorlat = ',ln_vorlat  
    120120      ENDIF 
    121  
    122       IF     (      rn_shlat == 0.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  free-slip ' 
    123       ELSEIF (      rn_shlat == 2.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  no-slip ' 
    124       ELSEIF ( 0. < rn_shlat .AND. rn_shlat < 2. ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  partial-slip ' 
    125       ELSEIF ( 2. < rn_shlat                     ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  strong-slip ' 
     121      ! 
     122      IF(lwp) WRITE(numout,*) 
     123      IF     (      rn_shlat == 0.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  free-slip' 
     124      ELSEIF (      rn_shlat == 2.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  no-slip' 
     125      ELSEIF ( 0. < rn_shlat .AND. rn_shlat < 2. ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  partial-slip' 
     126      ELSEIF ( 2. < rn_shlat                     ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  strong-slip' 
    126127      ELSE 
    127128         WRITE(ctmp1,*) ' rn_shlat is negative = ', rn_shlat 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r9124 r9169  
    4949      !!      diagnostic computation. 
    5050      !! 
    51       !! ** Method  :   Write in a file all the arrays generated in routines 
    52       !!      domhgr, domzgr, and dommsk. Note: the file contain depends on 
    53       !!      the vertical coord. used (z-coord, partial steps, s-coord) 
    54       !!            MOD(nn_msh, 3) = 1  :   'mesh_mask.nc' file 
    55       !!                         = 2  :   'mesh.nc' and mask.nc' files 
    56       !!                         = 0  :   'mesh_hgr.nc', 'mesh_zgr.nc' and 
    57       !!                                  'mask.nc' files 
    58       !!      For huge size domain, use option 2 or 3 depending on your  
    59       !!      vertical coordinate. 
    60       !! 
    61       !!      if     nn_msh <= 3: write full 3D arrays for e3[tuvw] and gdep[tuvw] 
    62       !!      if 3 < nn_msh <= 6: write full 3D arrays for e3[tuvw] and 2D arrays  
    63       !!                        corresponding to the depth of the bottom t- and w-points 
    64       !!      if 6 < nn_msh <= 9: write 2D arrays corresponding to the depth and the 
    65       !!                        thickness (e3[tw]_ps) of the bottom points  
     51      !! ** Method  :   create a file with all domain related arrays 
    6652      !! 
    6753      !! ** output file :   meshmask.nc  : domain size, horizontal grid-point position, 
     
    196182      CALL iom_close( inum )                !        close the files  
    197183      !                                     ! ============================ 
    198       ! 
    199184   END SUBROUTINE dom_wri 
    200185 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r9161 r9169  
    8787      IF( ln_read_cfg ) THEN        !==  read in mesh_mask.nc file  ==! 
    8888         IF(lwp) WRITE(numout,*) 
    89          IF(lwp) WRITE(numout,*) '          Read vertical mesh in ', TRIM( cn_domcfg ), ' file' 
     89         IF(lwp) WRITE(numout,*) '   ==>>>   Read vertical mesh in ', TRIM( cn_domcfg ), ' file' 
    9090         ! 
    9191         CALL zgr_read   ( ln_zco  , ln_zps  , ln_sco, ln_isfcav,   &  
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90

    r9090 r9169  
    7777          
    7878      !                       ! create  a domain file 
    79       IF( nn_msh /= 0 .AND. ln_iscpl )   CALL dom_wri 
     79      IF( ln_meshmask .AND. ln_iscpl )   CALL dom_wri 
    8080      ! 
    8181      IF ( ln_hsb ) THEN 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90

    r9019 r9169  
    113113      ! ------------------------ 
    114114      IF(lwp) WRITE(numout,*) 
    115       IF(lwp) WRITE(numout,*) '       Constants' 
     115      IF(lwp) WRITE(numout,*) '   Constants' 
    116116 
    117117      IF(lwp) WRITE(numout,*) 
    118       IF(lwp) WRITE(numout,*) '          mathematical constant                 rpi = ', rpi 
     118      IF(lwp) WRITE(numout,*) '      mathematical constant                 rpi = ', rpi 
    119119 
    120120      rsiyea = 365.25_wp * rday * 2._wp * rpi / 6.283076_wp 
     
    126126#endif 
    127127      IF(lwp) WRITE(numout,*) 
    128       IF(lwp) WRITE(numout,*) '          day                                rday   = ', rday,   ' s' 
    129       IF(lwp) WRITE(numout,*) '          sideral year                       rsiyea = ', rsiyea, ' s' 
    130       IF(lwp) WRITE(numout,*) '          sideral day                        rsiday = ', rsiday, ' s' 
    131       IF(lwp) WRITE(numout,*) '          omega                              omega  = ', omega,  ' s^-1' 
    132  
     128      IF(lwp) WRITE(numout,*) '      day                                rday   = ', rday,   ' s' 
     129      IF(lwp) WRITE(numout,*) '      sideral year                       rsiyea = ', rsiyea, ' s' 
     130      IF(lwp) WRITE(numout,*) '      sideral day                        rsiday = ', rsiday, ' s' 
     131      IF(lwp) WRITE(numout,*) '      omega                              omega  = ', omega,  ' s^-1' 
    133132      IF(lwp) WRITE(numout,*) 
    134       IF(lwp) WRITE(numout,*) '          nb of months per year               raamo = ', raamo, ' months' 
    135       IF(lwp) WRITE(numout,*) '          nb of hours per day                 rjjhh = ', rjjhh, ' hours' 
    136       IF(lwp) WRITE(numout,*) '          nb of minutes per hour              rhhmm = ', rhhmm, ' mn' 
    137       IF(lwp) WRITE(numout,*) '          nb of seconds per minute            rmmss = ', rmmss, ' s' 
    138  
     133      IF(lwp) WRITE(numout,*) '      nb of months per year               raamo = ', raamo, ' months' 
     134      IF(lwp) WRITE(numout,*) '      nb of hours per day                 rjjhh = ', rjjhh, ' hours' 
     135      IF(lwp) WRITE(numout,*) '      nb of minutes per hour              rhhmm = ', rhhmm, ' mn' 
     136      IF(lwp) WRITE(numout,*) '      nb of seconds per minute            rmmss = ', rmmss, ' s' 
    139137      IF(lwp) WRITE(numout,*) 
    140       IF(lwp) WRITE(numout,*) '          earth radius                         ra   = ', ra, ' m' 
    141       IF(lwp) WRITE(numout,*) '          gravity                              grav = ', grav , ' m/s^2' 
    142  
     138      IF(lwp) WRITE(numout,*) '      earth radius                         ra   = ', ra, ' m' 
     139      IF(lwp) WRITE(numout,*) '      gravity                              grav = ', grav , ' m/s^2' 
    143140      IF(lwp) WRITE(numout,*) 
    144       IF(lwp) WRITE(numout,*) '          triple point of temperature      rtt      = ', rtt     , ' K' 
    145       IF(lwp) WRITE(numout,*) '          freezing point of water          rt0      = ', rt0     , ' K' 
    146       IF(lwp) WRITE(numout,*) '          melting point of snow            rt0_snow = ', rt0_snow, ' K' 
    147       IF(lwp) WRITE(numout,*) '          melting point of ice             rt0_ice  = ', rt0_ice , ' K' 
    148  
    149       IF(lwp) WRITE(numout,*) '          reference density and heat capacity now defined in eosbn2.f90' 
     141      IF(lwp) WRITE(numout,*) '      triple point of temperature      rtt      = ', rtt     , ' K' 
     142      IF(lwp) WRITE(numout,*) '      freezing point of water          rt0      = ', rt0     , ' K' 
     143      IF(lwp) WRITE(numout,*) '      melting point of snow            rt0_snow = ', rt0_snow, ' K' 
     144      IF(lwp) WRITE(numout,*) '      melting point of ice             rt0_ice  = ', rt0_ice , ' K' 
     145      IF(lwp) WRITE(numout,*) 
     146      IF(lwp) WRITE(numout,*) '   reference density and heat capacity now defined in eosbn2.f90' 
    150147               
    151148#if defined key_lim3 || defined key_cice 
     
    163160         WRITE(numout,*) 
    164161#if defined key_cice 
    165          WRITE(numout,*) '          thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K' 
     162         WRITE(numout,*) '      thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K' 
    166163#endif 
    167          WRITE(numout,*) '          thermal conductivity of pure ice          = ', rcdic   , ' J/s/m/K' 
    168          WRITE(numout,*) '          fresh ice specific heat                   = ', cpic    , ' J/kg/K' 
    169          WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg' 
     164         WRITE(numout,*) '      thermal conductivity of pure ice          = ', rcdic   , ' J/s/m/K' 
     165         WRITE(numout,*) '      fresh ice specific heat                   = ', cpic    , ' J/kg/K' 
     166         WRITE(numout,*) '      latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg' 
    170167#if defined key_lim3 || defined key_cice 
    171          WRITE(numout,*) '          latent heat of subl.  of fresh ice / snow = ', lsub    , ' J/kg' 
     168         WRITE(numout,*) '      latent heat of subl.  of fresh ice / snow = ', lsub    , ' J/kg' 
    172169#else 
    173          WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m^3/K'  
    174          WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m^3/K' 
    175          WRITE(numout,*) '          volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m'  
    176          WRITE(numout,*) '          latent heat of sublimation of snow        = ', xsn     , ' J/kg'  
     170         WRITE(numout,*) '      density times specific heat for snow      = ', rcpsn   , ' J/m^3/K'  
     171         WRITE(numout,*) '      density times specific heat for ice       = ', rcpic   , ' J/m^3/K' 
     172         WRITE(numout,*) '      volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m'  
     173         WRITE(numout,*) '      latent heat of sublimation of snow        = ', xsn     , ' J/kg'  
    177174#endif 
    178          WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m^3'  
    179          WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m^3' 
    180          WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m^3' 
    181          WRITE(numout,*) '          density of freshwater (in melt ponds)     = ', rhofw   , ' kg/m^3' 
    182          WRITE(numout,*) '          emissivity of snow or ice                 = ', emic   
    183          WRITE(numout,*) '          salinity of ice                           = ', sice    , ' psu' 
    184          WRITE(numout,*) '          salinity of sea                           = ', soce    , ' psu' 
    185          WRITE(numout,*) '          latent heat of evaporation (water)        = ', cevap   , ' J/m^3'  
    186          WRITE(numout,*) '          correction factor for solar radiation     = ', srgamma  
    187          WRITE(numout,*) '          von Karman constant                       = ', vkarmn  
    188          WRITE(numout,*) '          Stefan-Boltzmann constant                 = ', stefan  , ' J/s/m^2/K^4' 
     175         WRITE(numout,*) '      volumetric latent heat fusion of snow     = ', xlsn    , ' J/m^3'  
     176         WRITE(numout,*) '      density of sea ice                        = ', rhoic   , ' kg/m^3' 
     177         WRITE(numout,*) '      density of snow                           = ', rhosn   , ' kg/m^3' 
     178         WRITE(numout,*) '      density of freshwater (in melt ponds)     = ', rhofw   , ' kg/m^3' 
     179         WRITE(numout,*) '      emissivity of snow or ice                 = ', emic   
     180         WRITE(numout,*) '      salinity of ice                           = ', sice    , ' psu' 
     181         WRITE(numout,*) '      salinity of sea                           = ', soce    , ' psu' 
     182         WRITE(numout,*) '      latent heat of evaporation (water)        = ', cevap   , ' J/m^3'  
     183         WRITE(numout,*) '      correction factor for solar radiation     = ', srgamma  
     184         WRITE(numout,*) '      von Karman constant                       = ', vkarmn  
     185         WRITE(numout,*) '      Stefan-Boltzmann constant                 = ', stefan  , ' J/s/m^2/K^4' 
    189186         WRITE(numout,*) 
    190          WRITE(numout,*) '          conversion: degre ==> radian          rad = ', rad 
     187         WRITE(numout,*) '      conversion: degre ==> radian          rad = ', rad 
    191188         WRITE(numout,*) 
    192          WRITE(numout,*) '          smallest real computer value       rsmall = ', rsmall 
     189         WRITE(numout,*) '      smallest real computer value       rsmall = ', rsmall 
    193190      ENDIF 
    194191 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r9168 r9169  
    194194      !!---------------------------------------------------------------------- 
    195195      ! 
     196      IF(lwp) THEN 
     197         WRITE(numout,*) 
     198         WRITE(numout,*) 'dyn_spg_init : choice of the surface pressure gradient scheme' 
     199         WRITE(numout,*) '~~~~~~~~~~~~' 
     200      ENDIF 
     201      ! 
    196202      REWIND( numnam_ref )              ! Namelist namdyn_spg in reference namelist : Free surface 
    197203      READ  ( numnam_ref, namdyn_spg, IOSTAT = ios, ERR = 901) 
     
    204210      ! 
    205211      IF(lwp) THEN             ! Namelist print 
    206          WRITE(numout,*) 
    207          WRITE(numout,*) 'dyn_spg_init : choice of the surface pressure gradient scheme' 
    208          WRITE(numout,*) '~~~~~~~~~~~' 
    209          WRITE(numout,*) '     Explicit free surface                  ln_dynspg_exp = ', ln_dynspg_exp 
    210          WRITE(numout,*) '     Free surface with time splitting       ln_dynspg_ts  = ', ln_dynspg_ts 
     212         WRITE(numout,*) '   Namelist : namdyn_spg                    ' 
     213         WRITE(numout,*) '      Explicit free surface                  ln_dynspg_exp = ', ln_dynspg_exp 
     214         WRITE(numout,*) '      Free surface with time splitting       ln_dynspg_ts  = ', ln_dynspg_ts 
    211215      ENDIF 
    212216      !                          ! Control of surface pressure gradient scheme options 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r9124 r9169  
    14241424      ! Print results 
    14251425      IF(lwp) WRITE(numout,*) 
    1426       IF(lwp) WRITE(numout,*) 'dyn_spg_ts : split-explicit free surface' 
    1427       IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     1426      IF(lwp) WRITE(numout,*) 'dyn_spg_ts_init : split-explicit free surface' 
     1427      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    14281428      IF( ln_bt_auto ) THEN 
    1429          IF(lwp) WRITE(numout,*) '     ln_ts_auto=.true. Automatically set nn_baro ' 
     1429         IF(lwp) WRITE(numout,*) '     ln_ts_auto =.true. Automatically set nn_baro ' 
    14301430         IF(lwp) WRITE(numout,*) '     Max. courant number allowed: ', rn_bt_cmax 
    14311431      ELSE 
    1432          IF(lwp) WRITE(numout,*) '     ln_ts_auto=.false.: Use nn_baro in namelist ' 
     1432         IF(lwp) WRITE(numout,*) '     ln_ts_auto=.false.: Use nn_baro in namelist   nn_baro = ', nn_baro 
    14331433      ENDIF 
    14341434 
    14351435      IF(ln_bt_av) THEN 
    1436          IF(lwp) WRITE(numout,*) '     ln_bt_av=.true.  => Time averaging over nn_baro time steps is on ' 
     1436         IF(lwp) WRITE(numout,*) '     ln_bt_av =.true.  ==> Time averaging over nn_baro time steps is on ' 
    14371437      ELSE 
    1438          IF(lwp) WRITE(numout,*) '     ln_bt_av=.false. => No time averaging of barotropic variables ' 
     1438         IF(lwp) WRITE(numout,*) '     ln_bt_av =.false. => No time averaging of barotropic variables ' 
    14391439      ENDIF 
    14401440      ! 
     
    14561456         CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_baro' 
    14571457         CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_baro'  
    1458          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' ) 
     1458         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1, or 2' ) 
    14591459      END SELECT 
    14601460      ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90

    r9168 r9169  
    229229         IF( jpnj  == 1             )   ibondj(ii,ij) = 2 
    230230         ibondi(ii,ij) = 0 
    231          IF( MOD(jarea,jpni) == 1 )   ibondi(ii,ij) = -1 
    232          IF( MOD(jarea,jpni) == 0 )   ibondi(ii,ij) =  1 
    233          IF( jpni            == 1 )   ibondi(ii,ij) =  2 
     231         IF( MOD(jarea,jpni) ==  1 )   ibondi(ii,ij) = -1 
     232         IF( MOD(jarea,jpni) ==  0 )   ibondi(ii,ij) =  1 
     233         IF( jpni            ==  1 )   ibondi(ii,ij) =  2 
    234234 
    235235         ! Subdomain neighbors 
     
    242242         ilei(ii,ij) = ili - nn_hls 
    243243 
    244          IF( ibondi(ii,ij) == -1 .OR. ibondi(ii,ij) == 2 ) ildi(ii,ij) =  1 
    245          IF( ibondi(ii,ij) ==  1 .OR. ibondi(ii,ij) == 2 ) ilei(ii,ij) = ili 
     244         IF( ibondi(ii,ij) == -1 .OR. ibondi(ii,ij) == 2 )   ildi(ii,ij) =  1 
     245         IF( ibondi(ii,ij) ==  1 .OR. ibondi(ii,ij) == 2 )   ilei(ii,ij) = ili 
    246246         ildj(ii,ij) =  1  + nn_hls 
    247247         ilej(ii,ij) = ilj - nn_hls 
    248          IF( ibondj(ii,ij) == -1 .OR. ibondj(ii,ij) == 2 ) ildj(ii,ij) =  1 
    249          IF( ibondj(ii,ij) ==  1 .OR. ibondj(ii,ij) == 2 ) ilej(ii,ij) = ilj 
     248         IF( ibondj(ii,ij) == -1 .OR. ibondj(ii,ij) == 2 )   ildj(ii,ij) =  1 
     249         IF( ibondj(ii,ij) ==  1 .OR. ibondj(ii,ij) == 2 )   ilej(ii,ij) = ilj 
    250250 
    251251         ! warning ii*ij (zone) /= nproc (processors)! 
     
    326326            il1 = il1+ifreq 
    327327         END DO 
    328  9400    FORMAT('     ***',20('*************',a3)) 
    329  9403    FORMAT('     *     ',20('         *   ',a3)) 
    330  9401    FORMAT('        ',20('   ',i3,'          ')) 
    331  9402    FORMAT(' ',i3,' *  ',20(i3,'  x',i3,'   *   ')) 
    332  9404    FORMAT('     *  ',20('      ',i3,'   *   ')) 
     328 9400    FORMAT('           ***'   ,20('*************',a3)    ) 
     329 9403    FORMAT('           *     ',20('         *   ',a3)    ) 
     330 9401    FORMAT('              '   ,20('   ',i3,'          ') ) 
     331 9402    FORMAT('       ',i3,' *  ',20(i3,'  x',i3,'   *   ') ) 
     332 9404    FORMAT('           *  '   ,20('      ',i3,'   *   ') ) 
    333333      ENDIF 
    334334 
     
    479479      IF(lwp) THEN 
    480480         WRITE(numout,*) 
    481          WRITE(numout,*) ' nproc  = ', nproc 
    482          WRITE(numout,*) ' nowe   = ', nowe  , ' noea   =  ', noea 
    483          WRITE(numout,*) ' nono   = ', nono  , ' noso   =  ', noso 
    484          WRITE(numout,*) ' nbondi = ', nbondi 
    485          WRITE(numout,*) ' nbondj = ', nbondj 
    486          WRITE(numout,*) ' npolj  = ', npolj 
    487          WRITE(numout,*) ' nperio = ', nperio 
    488          WRITE(numout,*) ' nlci   = ', nlci 
    489          WRITE(numout,*) ' nlcj   = ', nlcj 
    490          WRITE(numout,*) ' nimpp  = ', nimpp 
    491          WRITE(numout,*) ' njmpp  = ', njmpp 
    492          WRITE(numout,*) ' nreci  = ', nreci   
    493          WRITE(numout,*) ' nrecj  = ', nrecj   
    494          WRITE(numout,*) ' nn_hls = ', nn_hls  
     481         WRITE(numout,*) '   resulting internal parameters : ' 
     482         WRITE(numout,*) '      nproc  = ', nproc 
     483         WRITE(numout,*) '      nowe   = ', nowe  , '   noea  =  ', noea 
     484         WRITE(numout,*) '      nono   = ', nono  , '   noso  =  ', noso 
     485         WRITE(numout,*) '      nbondi = ', nbondi 
     486         WRITE(numout,*) '      nbondj = ', nbondj 
     487         WRITE(numout,*) '      npolj  = ', npolj 
     488         WRITE(numout,*) '      nperio = ', nperio 
     489         WRITE(numout,*) '      nlci   = ', nlci 
     490         WRITE(numout,*) '      nlcj   = ', nlcj 
     491         WRITE(numout,*) '      nimpp  = ', nimpp 
     492         WRITE(numout,*) '      njmpp  = ', njmpp 
     493         WRITE(numout,*) '      nreci  = ', nreci   
     494         WRITE(numout,*) '      nrecj  = ', nrecj   
     495         WRITE(numout,*) '      nn_hls = ', nn_hls  
    495496      ENDIF 
    496497  
    497       IF( nperio == 1 .AND. jpni /= 1 ) CALL ctl_stop( 'mpp_init: error on cyclicity' ) 
    498  
    499       IF( jperio == 7 .AND. ( jpni /= 1 .OR. jpnj /= 1 ) ) & 
     498      IF( nperio == 1 .AND. jpni /= 1 )   CALL ctl_stop( 'mpp_init: error on cyclicity' ) 
     499 
     500      IF( jperio == 7 .AND. ( jpni /= 1 .OR. jpnj /= 1 ) )   & 
    500501         &                  CALL ctl_stop( ' mpp_init: error jperio = 7 works only with jpni = jpnj = 1' ) 
    501502 
     
    503504      IF( jperio >= 3 .AND. jperio <= 6 .AND. jpni > 1 ) THEN 
    504505         CALL mpp_ini_north 
    505          IF(lwp) WRITE(numout,*) ' mpp_init : North fold boundary prepared for jpni >1' 
     506         IF(lwp) WRITE(numout,*) 
     507         IF(lwp) WRITE(numout,*) '   ==>>>   North fold boundary prepared for jpni >1' 
    506508      ENDIF 
    507509      ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r9168 r9169  
    142142      !                                ! Parameter control 
    143143      IF( ln_dynldf_NONE ) THEN 
    144          IF(lwp) WRITE(numout,*) '   No viscous operator selected. ahmt and ahmf are not allocated' 
     144         IF(lwp) WRITE(numout,*) '   ==>>>   No viscous operator selected. ahmt and ahmf are not allocated' 
    145145         l_ldfdyn_time = .FALSE. 
    146146         RETURN 
     
    173173         ! 
    174174         CASE(   0  )      !==  constant  ==! 
    175             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = constant ' 
     175            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = constant ' 
    176176            ahmt(:,:,:) = zah0 * tmask(:,:,:) 
    177177            ahmf(:,:,:) = zah0 * fmask(:,:,:) 
    178178            ! 
    179179         CASE(  10  )      !==  fixed profile  ==! 
    180             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( depth )' 
     180            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F( depth )' 
    181181            ahmt(:,:,1) = zah0 * tmask(:,:,1)                      ! constant surface value 
    182182            ahmf(:,:,1) = zah0 * fmask(:,:,1) 
     
    184184            ! 
    185185         CASE ( -20 )      !== fixed horizontal shape read in file  ==! 
    186             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F(i,j) read in eddy_viscosity.nc file' 
     186            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F(i,j) read in eddy_viscosity.nc file' 
    187187            CALL iom_open( 'eddy_viscosity_2D.nc', inum ) 
    188188            CALL iom_get ( inum, jpdom_data, 'ahmt_2d', ahmt(:,:,1) ) 
     
    198198            ! 
    199199         CASE(  20  )      !== fixed horizontal shape  ==! 
    200             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap. or blp. case)' 
     200            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap. or blp. case)' 
    201201            IF( ln_dynldf_lap )   CALL ldf_c2d( 'DYN', 'LAP', zah0, ahmt, ahmf )    ! surface value proportional to scale factor 
    202202            IF( ln_dynldf_blp )   CALL ldf_c2d( 'DYN', 'BLP', zah0, ahmt, ahmf )    ! surface value proportional to scale factor^3 
    203203            ! 
    204204         CASE( -30  )      !== fixed 3D shape read in file  ==! 
    205             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 
     205            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 
    206206            CALL iom_open( 'eddy_viscosity_3D.nc', inum ) 
    207207            CALL iom_get ( inum, jpdom_data, 'ahmt_3d', ahmt ) 
     
    216216            ! 
    217217         CASE(  30  )       !==  fixed 3D shape  ==! 
    218             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( latitude, longitude, depth )' 
     218            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F( latitude, longitude, depth )' 
    219219            IF( ln_dynldf_lap )   CALL ldf_c2d( 'DYN', 'LAP', zah0, ahmt, ahmf )    ! surface value proportional to scale factor 
    220220            IF( ln_dynldf_blp )   CALL ldf_c2d( 'DYN', 'BLP', zah0, ahmt, ahmf )    ! surface value proportional to scale factor 
     
    223223            ! 
    224224         CASE(  31  )       !==  time varying 3D field  ==! 
    225             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( latitude, longitude, depth , time )' 
    226             IF(lwp) WRITE(numout,*) '                                proportional to the velocity : |u|e/12 or |u|e^3/12' 
     225            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F( latitude, longitude, depth , time )' 
     226            IF(lwp) WRITE(numout,*) '              proportional to the velocity : |u|e/12 or |u|e^3/12' 
    227227            ! 
    228228            l_ldfdyn_time = .TRUE.     ! will be calculated by call to ldf_dyn routine in step.F90 
    229229            ! 
    230230         CASE(  32  )       !==  time varying 3D field  ==! 
    231             IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( latitude, longitude, depth , time )' 
    232             IF(lwp) WRITE(numout,*) '             proportional to the local deformation rate and gridscale (Smagorinsky)' 
    233             IF(lwp) WRITE(numout,*) '                                                             : L^2|D| or L^4|D|/8' 
     231            IF(lwp) WRITE(numout,*) '   ==>>>   momentum mixing coef. = F( latitude, longitude, depth , time )' 
     232            IF(lwp) WRITE(numout,*) '              proportional to the local deformation rate and gridscale (Smagorinsky)' 
     233            IF(lwp) WRITE(numout,*) '                                                                : L^2|D| or L^4|D|/8' 
    234234            ! 
    235235            l_ldfdyn_time = .TRUE.     ! will be calculated by call to ldf_dyn routine in step.F90 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r9168 r9169  
    126126      !!---------------------------------------------------------------------- 
    127127      ! 
    128       !  Choice of lateral tracer physics 
    129       ! ================================= 
    130       ! 
    131       REWIND( numnam_ref )              ! Namelist namtra_ldf in reference namelist : Lateral physics on tracers 
    132       READ  ( numnam_ref, namtra_ldf, IOSTAT = ios, ERR = 901) 
    133 901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namtra_ldf in reference namelist', lwp ) 
    134       ! 
    135       REWIND( numnam_cfg )              ! Namelist namtra_ldf in configuration namelist : Lateral physics on tracers 
    136       READ  ( numnam_cfg, namtra_ldf, IOSTAT = ios, ERR = 902 ) 
    137 902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namtra_ldf in configuration namelist', lwp ) 
    138       IF(lwm) WRITE ( numond, namtra_ldf ) 
    139       ! 
    140128      IF(lwp) THEN                      ! control print 
    141129         WRITE(numout,*) 
    142130         WRITE(numout,*) 'ldf_tra_init : lateral tracer physics' 
    143131         WRITE(numout,*) '~~~~~~~~~~~~ ' 
    144          WRITE(numout,*) '   Namelist namtra_ldf : lateral mixing parameters (type, direction, coefficients)' 
     132      ENDIF 
     133      ! 
     134      !  Choice of lateral tracer physics 
     135      ! ================================= 
     136      ! 
     137      REWIND( numnam_ref )              ! Namelist namtra_ldf in reference namelist : Lateral physics on tracers 
     138      READ  ( numnam_ref, namtra_ldf, IOSTAT = ios, ERR = 901) 
     139901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namtra_ldf in reference namelist', lwp ) 
     140      REWIND( numnam_cfg )              ! Namelist namtra_ldf in configuration namelist : Lateral physics on tracers 
     141      READ  ( numnam_cfg, namtra_ldf, IOSTAT = ios, ERR = 902 ) 
     142902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namtra_ldf in configuration namelist', lwp ) 
     143      IF(lwm) WRITE( numond, namtra_ldf ) 
     144      ! 
     145      IF(lwp) THEN                      ! control print 
     146         WRITE(numout,*) '   Namelist : namtra_ldf --- lateral mixing parameters (type, direction, coefficients)' 
    145147         WRITE(numout,*) '      type :' 
    146148         WRITE(numout,*) '         no explicit diffusion                   ln_traldf_NONE  = ', ln_traldf_NONE 
     
    166168      ! 
    167169      IF( ln_traldf_NONE ) THEN 
    168          IF(lwp) WRITE(numout,*) '   No diffusive operator selected. ahtu and ahtv are not allocated' 
     170         IF(lwp) WRITE(numout,*) '   ==>>>   No diffusive operator selected. ahtu and ahtv are not allocated' 
    169171         l_ldftra_time = .FALSE. 
    170172         RETURN 
     
    196198         ! 
    197199         CASE(   0  )      !==  constant  ==! 
    198             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = constant = ', rn_aht_0 
     200            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = constant = ', rn_aht_0 
    199201            ahtu(:,:,:) = zah0 * umask(:,:,:) 
    200202            ahtv(:,:,:) = zah0 * vmask(:,:,:) 
    201203            ! 
    202204         CASE(  10  )      !==  fixed profile  ==! 
    203             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( depth )' 
     205            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( depth )' 
    204206            ahtu(:,:,1) = zah0 * umask(:,:,1)                      ! constant surface value 
    205207            ahtv(:,:,1) = zah0 * vmask(:,:,1) 
     
    207209            ! 
    208210         CASE ( -20 )      !== fixed horizontal shape read in file  ==! 
    209             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F(i,j) read in eddy_diffusivity.nc file' 
     211            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F(i,j) read in eddy_diffusivity.nc file' 
    210212            CALL iom_open( 'eddy_diffusivity_2D.nc', inum ) 
    211213            CALL iom_get ( inum, jpdom_data, 'ahtu_2D', ahtu(:,:,1) ) 
     
    218220            ! 
    219221         CASE(  20  )      !== fixed horizontal shape  ==! 
    220             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap or blp case)' 
     222            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap or blp case)' 
    221223            IF( ln_traldf_lap )   CALL ldf_c2d( 'TRA', 'LAP', zah0, ahtu, ahtv )    ! surface value proportional to scale factor 
    222224            IF( ln_traldf_blp )   CALL ldf_c2d( 'TRA', 'BLP', zah0, ahtu, ahtv )    ! surface value proportional to scale factor 
    223225            ! 
    224226         CASE(  21  )      !==  time varying 2D field  ==! 
    225             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( latitude, longitude, time )' 
    226             IF(lwp) WRITE(numout,*) '                              = F( growth rate of baroclinic instability )' 
    227             IF(lwp) WRITE(numout,*) '                              min value = 0.1 * rn_aht_0' 
    228             IF(lwp) WRITE(numout,*) '                              max value = rn_aht_0 (rn_aeiv_0 if nn_aei_ijk_t=21)' 
    229             IF(lwp) WRITE(numout,*) '                              increased to rn_aht_0 within 20N-20S' 
     227            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( latitude, longitude, time )' 
     228            IF(lwp) WRITE(numout,*) '                               = F( growth rate of baroclinic instability )' 
     229            IF(lwp) WRITE(numout,*) '                               min value = 0.1 * rn_aht_0' 
     230            IF(lwp) WRITE(numout,*) '                               max value = rn_aht_0 (rn_aeiv_0 if nn_aei_ijk_t=21)' 
     231            IF(lwp) WRITE(numout,*) '                               increased to rn_aht_0 within 20N-20S' 
    230232            ! 
    231233            l_ldftra_time = .TRUE.     ! will be calculated by call to ldf_tra routine in step.F90 
     
    236238            ! 
    237239         CASE( -30  )      !== fixed 3D shape read in file  ==! 
    238             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F(i,j,k) read in eddy_diffusivity.nc file' 
     240            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F(i,j,k) read in eddy_diffusivity.nc file' 
    239241            CALL iom_open( 'eddy_diffusivity_3D.nc', inum ) 
    240242            CALL iom_get ( inum, jpdom_data, 'ahtu_3D', ahtu ) 
     
    247249            ! 
    248250         CASE(  30  )      !==  fixed 3D shape  ==! 
    249             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( latitude, longitude, depth )' 
     251            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( latitude, longitude, depth )' 
    250252            IF( ln_traldf_lap )   CALL ldf_c2d( 'TRA', 'LAP', zah0, ahtu, ahtv )    ! surface value proportional to scale factor 
    251253            IF( ln_traldf_blp )   CALL ldf_c2d( 'TRA', 'BLP', zah0, ahtu, ahtv )    ! surface value proportional to scale factor 
     
    254256            ! 
    255257         CASE(  31  )      !==  time varying 3D field  ==! 
    256             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( latitude, longitude, depth , time )' 
    257             IF(lwp) WRITE(numout,*) '                                proportional to the velocity : |u|e/12 or |u|e^3/12' 
     258            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( latitude, longitude, depth , time )' 
     259            IF(lwp) WRITE(numout,*) '                                 proportional to the velocity : |u|e/12 or |u|e^3/12' 
    258260            ! 
    259261            l_ldftra_time = .TRUE.     ! will be calculated by call to ldf_tra routine in step.F90 
     
    382384      !!---------------------------------------------------------------------- 
    383385      ! 
     386      IF(lwp) THEN                      ! control print 
     387         WRITE(numout,*) 
     388         WRITE(numout,*) 'ldf_eiv_init : eddy induced velocity parametrization' 
     389         WRITE(numout,*) '~~~~~~~~~~~~ ' 
     390      ENDIF 
     391      ! 
    384392      REWIND( numnam_ref )              ! Namelist namtra_ldfeiv in reference namelist : eddy induced velocity param. 
    385393      READ  ( numnam_ref, namtra_ldfeiv, IOSTAT = ios, ERR = 901) 
     
    392400 
    393401      IF(lwp) THEN                      ! control print 
    394          WRITE(numout,*) 
    395          WRITE(numout,*) 'ldf_eiv_init : eddy induced velocity parametrization' 
    396          WRITE(numout,*) '~~~~~~~~~~~~ ' 
    397402         WRITE(numout,*) '   Namelist namtra_ldfeiv : ' 
    398403         WRITE(numout,*) '      Eddy Induced Velocity (eiv) param.      ln_ldfeiv     = ', ln_ldfeiv 
     
    415420         ! 
    416421         CASE(   0  )      !==  constant  ==! 
    417             IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = constant = ', rn_aeiv_0 
     422            IF(lwp) WRITE(numout,*) '   ==>>>   eddy induced velocity coef. = constant = ', rn_aeiv_0 
    418423            aeiu(:,:,:) = rn_aeiv_0 
    419424            aeiv(:,:,:) = rn_aeiv_0 
    420425            ! 
    421426         CASE(  10  )      !==  fixed profile  ==! 
    422             IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = F( depth )' 
     427            IF(lwp) WRITE(numout,*) '   ==>>>   eddy induced velocity coef. = F( depth )' 
    423428            aeiu(:,:,1) = rn_aeiv_0                                ! constant surface value 
    424429            aeiv(:,:,1) = rn_aeiv_0 
     
    426431            ! 
    427432         CASE ( -20 )      !== fixed horizontal shape read in file  ==! 
    428             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F(i,j) read in eddy_diffusivity_2D.nc file' 
     433            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F(i,j) read in eddy_diffusivity_2D.nc file' 
    429434            CALL iom_open ( 'eddy_induced_velocity_2D.nc', inum ) 
    430435            CALL iom_get  ( inum, jpdom_data, 'aeiu', aeiu(:,:,1) ) 
     
    437442            ! 
    438443         CASE(  20  )      !== fixed horizontal shape  ==! 
    439             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap or bilap case)' 
     444            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( e1, e2 ) or F( e1^3, e2^3 ) (lap or bilap case)' 
    440445            CALL ldf_c2d( 'TRA', 'LAP', rn_aeiv_0, aeiu, aeiv )    ! surface value proportional to scale factor 
    441446            ! 
    442447         CASE(  21  )       !==  time varying 2D field  ==! 
    443             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( latitude, longitude, time )' 
    444             IF(lwp) WRITE(numout,*) '                              = F( growth rate of baroclinic instability )' 
     448            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( latitude, longitude, time )' 
     449            IF(lwp) WRITE(numout,*) '                               = F( growth rate of baroclinic instability )' 
    445450            ! 
    446451            l_ldfeiv_time = .TRUE.     ! will be calculated by call to ldf_tra routine in step.F90 
    447452            ! 
    448453         CASE( -30  )      !== fixed 3D shape read in file  ==! 
    449             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 
     454            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 
    450455            CALL iom_open ( 'eddy_induced_velocity_3D.nc', inum ) 
    451456            CALL iom_get  ( inum, jpdom_data, 'aeiu', aeiu ) 
     
    454459            ! 
    455460         CASE(  30  )       !==  fixed 3D shape  ==! 
    456             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( latitude, longitude, depth )' 
     461            IF(lwp) WRITE(numout,*) '   ==>>>   tracer mixing coef. = F( latitude, longitude, depth )' 
    457462            CALL ldf_c2d( 'TRA', 'LAP', rn_aeiv_0, aeiu, aeiv )    ! surface value proportional to scale factor 
    458463            !                                                 ! reduction with depth 
     
    464469         ! 
    465470      ELSE 
    466           IF(lwp) WRITE(numout,*) '   eddy induced velocity param is NOT used neither diagnosed' 
     471          IF(lwp) WRITE(numout,*) '   ==>>>   eddy induced velocity param is NOT used neither diagnosed' 
    467472          ln_ldfeiv_dia = .FALSE. 
    468473      ENDIF 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r9168 r9169  
    155155         WRITE(numout,*) '               Stokes drift corr. to vert. velocity ln_sdw        = ', ln_sdw 
    156156         WRITE(numout,*) '                  vertical parametrization          nn_sdrift     = ', nn_sdrift 
    157          WRITE(numout,*) '               wave modified ocean stress           ln_tauwoc      = ', ln_tauwoc 
     157         WRITE(numout,*) '               wave modified ocean stress           ln_tauwoc     = ', ln_tauwoc 
    158158         WRITE(numout,*) '               wave modified ocean stress component ln_tauw       = ', ln_tauw 
    159159         WRITE(numout,*) '               Stokes coriolis term                 ln_stcor      = ', ln_stcor 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r9168 r9169  
    241241      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zrnfcl     
    242242      REAL(wp), DIMENSION(:,:  ), ALLOCATABLE :: zrnf 
    243       ! 
     243      !! 
    244244      NAMELIST/namsbc_rnf/ cn_dir            , ln_rnf_depth, ln_rnf_tem, ln_rnf_sal,   & 
    245245         &                 sn_rnf, sn_cnf    , sn_s_rnf    , sn_t_rnf  , sn_dep_rnf,   & 
     
    292292         ALLOCATE( sf_rnf(1), STAT=ierror )         ! Create sf_rnf structure (runoff inflow) 
    293293         IF(lwp) WRITE(numout,*) 
    294          IF(lwp) WRITE(numout,*) '          runoffs inflow read in a file' 
     294         IF(lwp) WRITE(numout,*) '   ==>>>   runoffs inflow read in a file' 
    295295         IF( ierror > 0 ) THEN 
    296296            CALL ctl_stop( 'sbc_rnf_init: unable to allocate sf_rnf structure' )   ;   RETURN 
     
    303303      IF( ln_rnf_tem ) THEN                      ! Create (if required) sf_t_rnf structure 
    304304         IF(lwp) WRITE(numout,*) 
    305          IF(lwp) WRITE(numout,*) '          runoffs temperatures read in a file' 
     305         IF(lwp) WRITE(numout,*) '   ==>>>   runoffs temperatures read in a file' 
    306306         ALLOCATE( sf_t_rnf(1), STAT=ierror  ) 
    307307         IF( ierror > 0 ) THEN 
     
    315315      IF( ln_rnf_sal  ) THEN                     ! Create (if required) sf_s_rnf and sf_t_rnf structures 
    316316         IF(lwp) WRITE(numout,*) 
    317          IF(lwp) WRITE(numout,*) '          runoffs salinities read in a file' 
     317         IF(lwp) WRITE(numout,*) '   ==>>>   runoffs salinities read in a file' 
    318318         ALLOCATE( sf_s_rnf(1), STAT=ierror  ) 
    319319         IF( ierror > 0 ) THEN 
     
    327327      IF( ln_rnf_depth ) THEN                    ! depth of runoffs set from a file 
    328328         IF(lwp) WRITE(numout,*) 
    329          IF(lwp) WRITE(numout,*) '          runoffs depth read in a file' 
     329         IF(lwp) WRITE(numout,*) '   ==>>>   runoffs depth read in a file' 
    330330         rn_dep_file = TRIM( cn_dir )//TRIM( sn_dep_rnf%clname ) 
    331331         IF( .NOT. sn_dep_rnf%ln_clim ) THEN   ;   WRITE(rn_dep_file, '(a,"_y",i4)' ) TRIM( rn_dep_file ), nyear    ! add year  
     
    364364         ! 
    365365         IF(lwp) WRITE(numout,*) 
    366          IF(lwp) WRITE(numout,*) '    depth of runoff computed once from max value of runoff' 
    367          IF(lwp) WRITE(numout,*) '    max value of the runoff climatologie (over global domain) rn_rnf_max = ', rn_rnf_max 
    368          IF(lwp) WRITE(numout,*) '    depth over which runoffs is spread                        rn_dep_max = ', rn_dep_max 
    369          IF(lwp) WRITE(numout,*) '     create (=1) a runoff depth file or not (=0)      nn_rnf_depth_file  = ', nn_rnf_depth_file 
     366         IF(lwp) WRITE(numout,*) '   ==>>>  depth of runoff computed once from max value of runoff' 
     367         IF(lwp) WRITE(numout,*) '        max value of the runoff climatologie (over global domain) rn_rnf_max = ', rn_rnf_max 
     368         IF(lwp) WRITE(numout,*) '        depth over which runoffs is spread                        rn_dep_max = ', rn_dep_max 
     369         IF(lwp) WRITE(numout,*) '        create (=1) a runoff depth file or not (=0)      nn_rnf_depth_file  = ', nn_rnf_depth_file 
    370370 
    371371         CALL iom_open( TRIM( sn_rnf%clname ), inum )    !  open runoff file 
     
    420420         ! 
    421421         IF( nn_rnf_depth_file == 1 ) THEN      !  save  output nb levels for runoff 
    422             IF(lwp) WRITE(numout,*) '              create runoff depht file' 
     422            IF(lwp) WRITE(numout,*) '   ==>>>   create runoff depht file' 
    423423            CALL iom_open  ( TRIM( sn_dep_rnf%clname ), inum, ldwrt = .TRUE., kiolib = jprstlib ) 
    424424            CALL iom_rstput( 0, 0, inum, 'rodepth', h_rnf ) 
     
    453453         ENDIF 
    454454         IF(lwp) WRITE(numout,*) 
    455          IF(lwp) WRITE(numout,*) '          Specific treatment used in vicinity of river mouths :' 
     455         IF(lwp) WRITE(numout,*) '   ==>>>   Specific treatment used in vicinity of river mouths :' 
    456456         IF(lwp) WRITE(numout,*) '             - Increase Kz in surface layers (if rn_hrnf > 0 )' 
    457457         IF(lwp) WRITE(numout,*) '               by ', rn_avt_rnf,' m2/s  over ', nkrnf, ' w-levels' 
     
    463463      ELSE                                      ! No treatment at river mouths 
    464464         IF(lwp) WRITE(numout,*) 
    465          IF(lwp) WRITE(numout,*) '          No specific treatment at river mouths' 
     465         IF(lwp) WRITE(numout,*) '   ==>>>   No specific treatment at river mouths' 
    466466         rnfmsk  (:,:) = 0._wp 
    467467         rnfmsk_z(:)   = 0._wp 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90

    r9168 r9169  
    158158      !!---------------------------------------------------------------------- 
    159159      ! 
    160   
     160      IF(lwp) THEN 
     161         WRITE(numout,*) 
     162         WRITE(numout,*) 'sbc_ssr : SST and/or SSS damping term ' 
     163         WRITE(numout,*) '~~~~~~~ ' 
     164      ENDIF 
     165      !  
    161166      REWIND( numnam_ref )              ! Namelist namsbc_ssr in reference namelist :  
    162167      READ  ( numnam_ref, namsbc_ssr, IOSTAT = ios, ERR = 901) 
     
    169174 
    170175      IF(lwp) THEN                 !* control print 
    171          WRITE(numout,*) 
    172          WRITE(numout,*) 'sbc_ssr : SST and/or SSS damping term ' 
    173          WRITE(numout,*) '~~~~~~~ ' 
    174176         WRITE(numout,*) '   Namelist namsbc_ssr :' 
    175177         WRITE(numout,*) '      SST restoring term (Yes=1)             nn_sstr        = ', nn_sstr 
    176178         WRITE(numout,*) '         dQ/dT (restoring magnitude on SST)     rn_dqdt     = ', rn_dqdt, ' W/m2/K' 
    177          WRITE(numout,*) '      SSS damping term (Yes=1, salt flux)    nn_sssr        = ', nn_sssr 
     179         WRITE(numout,*) '      SSS damping term (Yes=1, salt   flux)  nn_sssr        = ', nn_sssr 
    178180         WRITE(numout,*) '                       (Yes=2, volume flux) ' 
    179181         WRITE(numout,*) '         dE/dS (restoring magnitude on SST)     rn_deds     = ', rn_deds, ' mm/day' 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r9168 r9169  
    12721272      CASE( np_teos10 )                       !==  polynomial TEOS-10  ==! 
    12731273         IF(lwp) WRITE(numout,*) 
    1274          IF(lwp) WRITE(numout,*) '          use of TEOS-10 equation of state (cons. temp. and abs. salinity)' 
     1274         IF(lwp) WRITE(numout,*) '   ==>>>   use of TEOS-10 equation of state (cons. temp. and abs. salinity)' 
    12751275         ! 
    12761276         l_useCT = .TRUE.                          ! model temperature is Conservative temperature  
     
    14641464         ! 
    14651465         IF(lwp) WRITE(numout,*) 
    1466          IF(lwp) WRITE(numout,*) '          use of EOS-80 equation of state (pot. temp. and pract. salinity)' 
     1466         IF(lwp) WRITE(numout,*) '   ==>>>   use of EOS-80 equation of state (pot. temp. and pract. salinity)' 
    14671467         ! 
    14681468         l_useCT = .FALSE.                         ! model temperature is Potential temperature 
     
    16551655         IF(lwp) THEN 
    16561656            WRITE(numout,*) 
    1657             WRITE(numout,*) '          use of simplified eos:    rhd(dT=T-10,dS=S-35,Z) = ' 
    1658             WRITE(numout,*) '             [-a0*(1+lambda1/2*dT+mu1*Z)*dT + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS]/rau0' 
    1659             WRITE(numout,*) 
    1660             WRITE(numout,*) '             thermal exp. coef.    rn_a0      = ', rn_a0 
    1661             WRITE(numout,*) '             saline  cont. coef.   rn_b0      = ', rn_b0 
    1662             WRITE(numout,*) '             cabbeling coef.       rn_lambda1 = ', rn_lambda1 
    1663             WRITE(numout,*) '             cabbeling coef.       rn_lambda2 = ', rn_lambda2 
    1664             WRITE(numout,*) '             thermobar. coef.      rn_mu1     = ', rn_mu1 
    1665             WRITE(numout,*) '             thermobar. coef.      rn_mu2     = ', rn_mu2 
    1666             WRITE(numout,*) '             2nd cabbel. coef.     rn_nu      = ', rn_nu 
    1667             WRITE(numout,*) '               Caution: rn_beta0=0 incompatible with ddm parameterization ' 
     1657            WRITE(numout,*) '   ==>>>   use of simplified eos:    ' 
     1658            WRITE(numout,*) '              rhd(dT=T-10,dS=S-35,Z) = [-a0*(1+lambda1/2*dT+mu1*Z)*dT ' 
     1659            WRITE(numout,*) '                                       + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rau0' 
     1660            WRITE(numout,*) '              with the following coefficients :' 
     1661            WRITE(numout,*) '                 thermal exp. coef.    rn_a0      = ', rn_a0 
     1662            WRITE(numout,*) '                 saline  cont. coef.   rn_b0      = ', rn_b0 
     1663            WRITE(numout,*) '                 cabbeling coef.       rn_lambda1 = ', rn_lambda1 
     1664            WRITE(numout,*) '                 cabbeling coef.       rn_lambda2 = ', rn_lambda2 
     1665            WRITE(numout,*) '                 thermobar. coef.      rn_mu1     = ', rn_mu1 
     1666            WRITE(numout,*) '                 thermobar. coef.      rn_mu2     = ', rn_mu2 
     1667            WRITE(numout,*) '                 2nd cabbel. coef.     rn_nu      = ', rn_nu 
     1668            WRITE(numout,*) '              Caution: rn_beta0=0 incompatible with ddm parameterization ' 
    16681669         ENDIF 
    16691670         l_useCT = .TRUE.          ! Use conservative temperature 
     
    16821683      IF(lwp) THEN 
    16831684         IF( l_useCT )   THEN 
    1684             WRITE(numout,*) '             model uses Conservative Temperature' 
    1685             WRITE(numout,*) '             Important: model must be initialized with CT and SA fields' 
     1685            WRITE(numout,*) 
     1686            WRITE(numout,*) '   ==>>>   model uses Conservative Temperature' 
     1687            WRITE(numout,*) '           Important: model must be initialized with CT and SA fields' 
    16861688         ELSE 
    1687             WRITE(numout,*) '             model does not use Conservative Temperature' 
     1689            WRITE(numout,*) 
     1690            WRITE(numout,*) '   ==>>>   model does not use Conservative Temperature' 
    16881691         ENDIF 
    16891692      ENDIF 
    16901693      ! 
    16911694      IF(lwp) WRITE(numout,*) 
    1692       IF(lwp) WRITE(numout,*) '          volumic mass of reference           rau0  = ', rau0   , ' kg/m^3' 
    1693       IF(lwp) WRITE(numout,*) '          1. / rau0                        r1_rau0  = ', r1_rau0, ' m^3/kg' 
    1694       IF(lwp) WRITE(numout,*) '          ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
    1695       IF(lwp) WRITE(numout,*) '          rau0 * rcp                       rau0_rcp = ', rau0_rcp 
    1696       IF(lwp) WRITE(numout,*) '          1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
     1695      IF(lwp) WRITE(numout,*) '   Associated physical constant' 
     1696      IF(lwp) WRITE(numout,*) '      volumic mass of reference           rau0  = ', rau0   , ' kg/m^3' 
     1697      IF(lwp) WRITE(numout,*) '      1. / rau0                        r1_rau0  = ', r1_rau0, ' m^3/kg' 
     1698      IF(lwp) WRITE(numout,*) '      ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
     1699      IF(lwp) WRITE(numout,*) '      rau0 * rcp                       rau0_rcp = ', rau0_rcp 
     1700      IF(lwp) WRITE(numout,*) '      1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
    16971701      ! 
    16981702   END SUBROUTINE eos_init 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r9168 r9169  
    379379      CASE( np_RGB , np_RGBc )         !==  Red-Green-Blue light penetration  ==! 
    380380         !                              
    381          IF(lwp)   WRITE(numout,*) '   R-G-B   light penetration ' 
     381         IF(lwp)   WRITE(numout,*) '   ==>>>   R-G-B   light penetration ' 
    382382         ! 
    383383         CALL trc_oce_rgb( rkrgb )                 ! tabulated attenuation coef. 
     
    388388         ! 
    389389         IF( nqsr == np_RGBc ) THEN                ! Chl data : set sf_chl structure 
    390             IF(lwp) WRITE(numout,*) '        Chlorophyll read in a file' 
     390            IF(lwp) WRITE(numout,*) '   ==>>>   Chlorophyll read in a file' 
    391391            ALLOCATE( sf_chl(1), STAT=ierror ) 
    392392            IF( ierror > 0 ) THEN 
     
    400400         ENDIF 
    401401         IF( nqsr == np_RGB ) THEN                 ! constant Chl 
    402             IF(lwp) WRITE(numout,*) '        Constant Chlorophyll concentration = 0.05' 
     402            IF(lwp) WRITE(numout,*) '   ==>>>   Constant Chlorophyll concentration = 0.05' 
    403403         ENDIF 
    404404         ! 
    405405      CASE( np_2BD )                   !==  2 bands light penetration  ==! 
    406406         ! 
    407          IF(lwp)  WRITE(numout,*) '   2 bands light penetration' 
     407         IF(lwp)  WRITE(numout,*) '   ==>>>   2 bands light penetration' 
    408408         ! 
    409409         nksr = trc_oce_ext_lev( rn_si1, 100._wp )    ! level of light extinction 
     
    412412      CASE( np_BIO )                   !==  BIO light penetration  ==! 
    413413         ! 
    414          IF(lwp) WRITE(numout,*) '   bio-model light penetration' 
     414         IF(lwp) WRITE(numout,*) '   ==>>>   bio-model light penetration' 
    415415         IF( .NOT.lk_top )   CALL ctl_stop( 'No bio model : ln_qsr_bio = true impossible ' ) 
    416416         ! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_nam.F90

    r9124 r9169  
    104104      kperio = 0                    ! GYRE configuration : closed domain 
    105105      ! 
    106       WRITE(ldtxt(ii),*) '   '                                                                        ;   ii = ii + 1 
    107       WRITE(ldtxt(ii),*) '   Lateral b.c. of the global domain set to closed     jperio = ', kperio   ;   ii = ii + 1 
     106      WRITE(ldtxt(ii),*) '   '                                                                            ;   ii = ii + 1 
     107      WRITE(ldtxt(ii),*) '   Lateral b.c. of the global domain set to closed     jperio = ', kperio       ;   ii = ii + 1 
    108108      ! 
    109109   END SUBROUTINE usr_def_nam 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfphy.F90

    r9108 r9169  
    8383      !!---------------------------------------------------------------------- 
    8484      ! 
     85      IF(lwp) THEN 
     86         WRITE(numout,*) 
     87         WRITE(numout,*) 'zdf_phy_init: ocean vertical physics' 
     88         WRITE(numout,*) '~~~~~~~~~~~~' 
     89      ENDIF 
     90      ! 
    8591      !                           !==  Namelist  ==! 
    8692      REWIND( numnam_ref )              ! Namelist namzdf in reference namelist : Vertical mixing parameters 
     
    94100      ! 
    95101      IF(lwp) THEN                      ! Parameter print 
    96          WRITE(numout,*) 
    97          WRITE(numout,*) 'zdf_phy_init: vertical physics' 
    98          WRITE(numout,*) '~~~~~~~~~~~~' 
    99102         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters' 
    100103         WRITE(numout,*) '      vertical closure scheme' 
     
    163166      IF(lwp) THEN 
    164167         WRITE(numout,*) 
    165          IF    ( ln_zdfnpc ) THEN  ;   WRITE(numout,*) '      convection: use non penetrative convective scheme' 
    166          ELSEIF( ln_zdfevd ) THEN  ;   WRITE(numout,*) '      convection: use enhanced vertical diffusion scheme' 
    167          ELSE                      ;   WRITE(numout,*) '      convection: no specific scheme used' 
     168         IF    ( ln_zdfnpc ) THEN  ;   WRITE(numout,*) '   ==>>>   convection: use non penetrative convective scheme' 
     169         ELSEIF( ln_zdfevd ) THEN  ;   WRITE(numout,*) '   ==>>>   convection: use enhanced vertical diffusion scheme' 
     170         ELSE                      ;   WRITE(numout,*) '   ==>>>   convection: no specific scheme used' 
    168171         ENDIF 
    169172      ENDIF 
     
    171174      IF(lwp) THEN               !==  Double Diffusion Mixing parameterization  ==!   (ddm) 
    172175         WRITE(numout,*) 
    173          IF( ln_zdfddm ) THEN   ;   WRITE(numout,*) '      use double diffusive mixing: avs /= avt' 
    174          ELSE                   ;   WRITE(numout,*) '      No  double diffusive mixing: avs = avt' 
     176         IF( ln_zdfddm ) THEN   ;   WRITE(numout,*) '   ==>>>   use double diffusive mixing: avs /= avt' 
     177         ELSE                   ;   WRITE(numout,*) '   ==>>>   No  double diffusive mixing: avs = avt' 
    175178         ENDIF 
    176179      ENDIF 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r9104 r9169  
    678678         WRITE(numout,*) '          type of tke penetration profile            nn_htau   = ', nn_htau 
    679679         WRITE(numout,*) '          fraction of TKE that penetrates            rn_efr    = ', rn_efr 
    680          WRITE(numout,*) 
    681680         IF( ln_drg ) THEN 
     681            WRITE(numout,*) 
    682682            WRITE(numout,*) '   Namelist namdrg_top/_bot:   used values:' 
    683683            WRITE(numout,*) '      top    ocean cavity roughness (m)          rn_z0(_top)= ', r_z0_top 
     
    685685         ENDIF 
    686686         WRITE(numout,*) 
    687          WRITE(numout,*) 
    688          WRITE(numout,*) '   ==>> critical Richardson nb with your parameters  ri_cri = ', ri_cri 
     687         WRITE(numout,*) '   ==>>   critical Richardson nb with your parameters  ri_cri = ', ri_cri 
    689688         WRITE(numout,*) 
    690689      ENDIF 
     
    693692         rn_emin  = 1.e-10_wp             ! specific values of rn_emin & rmxl_min are used 
    694693         rmxl_min = 1.e-03_wp             ! associated avt minimum = molecular salt diffusivity (10^-9 m2/s) 
    695          IF(lwp) WRITE(numout,*) '      Internal wave-driven mixing case:   force   rn_emin = 1.e-10 and rmxl_min = 1.e-3 ' 
     694         IF(lwp) WRITE(numout,*) '   ==>>   Internal wave-driven mixing case:   force   rn_emin = 1.e-10 and rmxl_min = 1.e-3' 
    696695      ELSE                          ! standard case : associated avt minimum = molecular viscosity (10^-6 m2/s) 
    697696         rmxl_min = 1.e-6_wp / ( rn_ediff * SQRT( rn_emin ) )    ! resulting minimum length to recover molecular viscosity 
    698          IF(lwp) WRITE(numout,*) '      minimum mixing length with your parameters rmxl_min = ', rmxl_min 
     697         IF(lwp) WRITE(numout,*) '   ==>>   minimum mixing length with your parameters rmxl_min = ', rmxl_min 
    699698      ENDIF 
    700699      ! 
     
    709708      ! 
    710709      IF( ln_mxl0 ) THEN 
    711          IF(lwp) WRITE(numout,*) '   use a surface mixing length = F(stress) :   set rn_mxl0 = rmxl_min' 
     710         IF(lwp) WRITE(numout,*) 
     711         IF(lwp) WRITE(numout,*) '   ==>>   use a surface mixing length = F(stress) :   set rn_mxl0 = rmxl_min' 
    712712         rn_mxl0 = rmxl_min 
    713713      ENDIF 
     
    763763               CALL iom_get( numror, jpdom_autoglo, 'dissl', dissl ) 
    764764            ELSE                                          ! start TKE from rest 
     765               IF(lwp) WRITE(numout,*) 
    765766               IF(lwp) WRITE(numout,*) '   ==>>   previous run without TKE scheme, set en to background values' 
    766767               en   (:,:,:) = rn_emin * wmask(:,:,:) 
     
    769770            ENDIF 
    770771         ELSE                                   !* Start from rest 
     772            IF(lwp) WRITE(numout,*) 
    771773            IF(lwp) WRITE(numout,*) '   ==>>   start from rest: set en to the background value' 
    772774            en   (:,:,:) = rn_emin * wmask(:,:,:) 
     
    777779      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    778780         !                                   ! ------------------- 
    779          IF(lwp) WRITE(numout,*) '---- tke-rst ----' 
     781         IF(lwp) WRITE(numout,*) '---- tke_rst ----' 
    780782         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en    ) 
    781783         CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k ) 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r9168 r9169  
    395395         WRITE(numout,*) '                       NEMO team' 
    396396         WRITE(numout,*) '            Ocean General Circulation Model' 
    397          WRITE(numout,*) '                NEMO version 3.7  (2016) ' 
     397         WRITE(numout,*) '                NEMO version 4.0  (2017) ' 
    398398         WRITE(numout,*) 
    399399         WRITE(numout,*) 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/SAO_SRC/nemogcm.F90

    r9019 r9169  
    115115      READ  ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 
    116116901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    117       ! 
    118117      REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist 
    119118      READ  ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 
    120 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
     119902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
    121120      ! 
    122121      REWIND( numnam_ref )              ! Namelist namcfg in reference namelist : Control prints 
    123122      READ  ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 
    124 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    125  
     123903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    126124      REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist : Control prints & Benchmark 
    127125      READ  ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 
    128 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
     126904   IF( ios >  0 )  CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
    129127 
    130128      !                             !--------------------------! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/SAO_SRC/sao_data.F90

    r7646 r9169  
    3939      NAMELIST/namsao/sao_files, nn_sao_idx, nn_sao_freq 
    4040      !!---------------------------------------------------------------------- 
     41      IF(lwp) THEN 
     42         WRITE(numout,*) 
     43         WRITE(numout,*) 'sao_data_init : offline obs operator initialization' 
     44         WRITE(numout,*) '~~~~~~~~~~~~~' 
     45      ENDIF 
    4146 
    4247      ! Standard offline obs_oper initialisation 
    43       n_files = 0                   ! number of files to cycle through 
    44       sao_files(:) = ''             ! list of files to read in 
    45       nn_sao_idx(:) = 0             ! list of indices inside each file 
    46       nn_sao_freq = -1              ! input frequency in time steps 
     48      n_files       =  0         ! number of files to cycle through 
     49      sao_files(:)  = ''         ! list of files to read in 
     50      nn_sao_idx(:) =  0         ! list of indices inside each file 
     51      nn_sao_freq   = -1         ! input frequency in time steps 
    4752 
    4853      ! Standard offline obs_oper settings 
    4954      REWIND( numnam_ref )              ! Namelist namctl in reference namelist : Control prints & Benchmark 
    5055      READ  ( numnam_ref, namsao, IOSTAT = ios, ERR = 901 ) 
    51 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsao in reference namelist', .TRUE. ) 
    52       ! 
     56901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsao in reference namelist', .TRUE. ) 
    5357      REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist : Control prints & Benchmark 
    5458      READ  ( numnam_cfg, namsao, IOSTAT = ios, ERR = 902 ) 
    55 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsao in configuration namelist', .TRUE. ) 
     59902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namsao in configuration namelist', .TRUE. ) 
    5660      
    5761      lmask(:) = .FALSE.               ! count input files 
    58       WHERE (sao_files(:) /= '') lmask(:) = .TRUE. 
     62      WHERE( sao_files(:) /= '' )  lmask(:) = .TRUE. 
    5963      n_files = COUNT(lmask) 
    6064      ! 
     
    6468      ! 
    6569      IF(lwp) THEN                     ! Print summary of settings 
    66          WRITE(numout,*) 
    67          WRITE(numout,*) 'offline obs_oper : Initialization' 
    68          WRITE(numout,*) '~~~~~~~~~~~~~~~~~' 
    6970         WRITE(numout,*) '   Namelist namsao : set stand alone obs_oper parameters' 
    7071         DO jf = 1, n_files 
    71             WRITE(numout,'(1X,2A)') '   Input forecast file name          forecastfile = ', TRIM(sao_files(jf)) 
    72             WRITE(numout,*) '   Input forecast file index        forecastindex = ', nn_sao_idx(jf) 
     72            WRITE(numout,'(1X,2A)') '      Input forecast file name         forecastfile = ', TRIM(sao_files(jf)) 
     73            WRITE(numout,*)         '      Input forecast file index        forecastindex = ', nn_sao_idx(jf) 
    7374         END DO 
    7475      END IF 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90

    r9124 r9169  
    194194      REWIND( numnam_ref )              ! Namelist namctl in reference namelist : Control prints 
    195195      READ  ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 
    196 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    197       ! 
     196901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    198197      REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist 
    199198      READ  ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 
    200 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
     199902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
    201200      ! 
    202201      REWIND( numnam_ref )              ! Namelist namcfg in reference namelist : Control prints 
    203202      READ  ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 
    204 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    205  
     203903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    206204      REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist : Control prints & Benchmark 
    207205      READ  ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 
    208 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
     206904   IF( ios >  0 )  CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
    209207 
    210208      !                             !--------------------------! 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/SAS_SRC/sbcssm.F90

    r9161 r9169  
    44   !! Off-line : interpolation of the physical fields 
    55   !!====================================================================== 
    6    !! History :  
    7    !!   NEMO         3.4  ! 2012-03 First version by S. Alderson  
    8    !!                     !         Heavily derived from Christian's dtadyn routine 
    9    !!                     !         in OFF_SRC 
    10    !!---------------------------------------------------------------------- 
    11  
    12    !!---------------------------------------------------------------------- 
    13    !!   sbc_ssm_init : initialization, namelist read, and SAVEs control 
    14    !!   sbc_ssm      : Interpolation of the fields 
    15    !!---------------------------------------------------------------------- 
    16    USE oce             ! ocean dynamics and tracers variables 
    17    USE c1d             ! 1D configuration: lk_c1d 
    18    USE dom_oce         ! ocean domain: variables 
    19    USE zdf_oce         ! ocean vertical physics: variables 
    20    USE sbc_oce         ! surface module: variables 
    21    USE phycst          ! physical constants 
    22    USE eosbn2          ! equation of state - Brunt Vaisala frequency 
    23    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    24    USE zpshde          ! z-coord. with partial steps: horizontal derivatives 
    25    USE closea          ! for ln_closea 
     6   !! History :  3.4  ! 2012-03 (S. Alderson)  original code 
     7   !!---------------------------------------------------------------------- 
     8 
     9   !!---------------------------------------------------------------------- 
     10   !!   sbc_ssm_init  : initialization, namelist read, and SAVEs control 
     11   !!   sbc_ssm       : Interpolation of the fields 
     12   !!---------------------------------------------------------------------- 
     13   USE oce            ! ocean dynamics and tracers variables 
     14   USE c1d            ! 1D configuration: lk_c1d 
     15   USE dom_oce        ! ocean domain: variables 
     16   USE zdf_oce        ! ocean vertical physics: variables 
     17   USE sbc_oce        ! surface module: variables 
     18   USE phycst         ! physical constants 
     19   USE eosbn2         ! equation of state - Brunt Vaisala frequency 
     20   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     21   USE zpshde         ! z-coord. with partial steps: horizontal derivatives 
     22   USE closea         ! for ln_closea 
    2623   ! 
    27    USE in_out_manager  ! I/O manager 
    28    USE iom             ! I/O library 
    29    USE lib_mpp         ! distributed memory computing library 
    30    USE prtctl          ! print control 
    31    USE fldread         ! read input fields  
    32    USE timing          ! Timing 
     24   USE in_out_manager ! I/O manager 
     25   USE iom            ! I/O library 
     26   USE lib_mpp        ! distributed memory computing library 
     27   USE prtctl         ! print control 
     28   USE fldread        ! read input fields  
     29   USE timing         ! Timing 
    3330 
    3431   IMPLICIT NONE 
     
    3835   PUBLIC   sbc_ssm        ! called by sbc 
    3936 
    40    CHARACTER(len=100)   ::   cn_dir        !: Root directory for location of ssm files 
    41    LOGICAL              ::   ln_3d_uve     !: specify whether input velocity data is 3D 
    42    LOGICAL              ::   ln_read_frq   !: specify whether we must read frq or not 
    43    LOGICAL              ::   l_sasread     !: Ice intilisation: read a file (.TRUE.) or anaytical initilaistion in namelist &namsbc_sas 
    44    LOGICAL              ::   l_initdone = .false. 
     37   CHARACTER(len=100) ::   cn_dir        ! Root directory for location of ssm files 
     38   LOGICAL            ::   ln_3d_uve     ! specify whether input velocity data is 3D 
     39   LOGICAL            ::   ln_read_frq   ! specify whether we must read frq or not 
     40    
     41   LOGICAL            ::   l_sasread     ! Ice intilisation: =T read a file ; =F anaytical initilaistion 
     42   LOGICAL            ::   l_initdone = .false. 
    4543   INTEGER     ::   nfld_3d 
    4644   INTEGER     ::   nfld_2d 
     
    162160      !!                  ***  ROUTINE sbc_ssm_init  *** 
    163161      !! 
    164       !! ** Purpose :   Initialisation of the dynamical data      
    165       !! ** Method  : - read the data namsbc_ssm namelist 
    166       !! 
    167       !! ** Action  : - read parameters 
     162      !! ** Purpose :   Initialisation of sea surface mean data      
    168163      !!---------------------------------------------------------------------- 
    169164      INTEGER  :: ierr, ierr0, ierr1, ierr2, ierr3   ! return error code 
     
    175170      TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) ::  slf_3d       ! array of namelist information on the fields to read 
    176171      TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) ::  slf_2d       ! array of namelist information on the fields to read 
    177       TYPE(FLD_N) :: sn_tem, sn_sal                     ! information about the fields to be read 
    178       TYPE(FLD_N) :: sn_usp, sn_vsp 
    179       TYPE(FLD_N) :: sn_ssh, sn_e3t, sn_frq 
    180       ! 
    181       NAMELIST/namsbc_sas/l_sasread, cn_dir, ln_3d_uve, ln_read_frq, sn_tem, sn_sal, sn_usp, sn_vsp, sn_ssh, sn_e3t, sn_frq 
    182       !!---------------------------------------------------------------------- 
    183  
    184       IF( ln_rstart .AND. nn_components == jp_iam_sas ) RETURN 
    185        
     172      TYPE(FLD_N) ::   sn_tem, sn_sal                     ! information about the fields to be read 
     173      TYPE(FLD_N) ::   sn_usp, sn_vsp 
     174      TYPE(FLD_N) ::   sn_ssh, sn_e3t, sn_frq 
     175      !! 
     176      NAMELIST/namsbc_sas/ l_sasread, cn_dir, ln_3d_uve, ln_read_frq,   & 
     177         &                 sn_tem, sn_sal, sn_usp, sn_vsp, sn_ssh, sn_e3t, sn_frq 
     178      !!---------------------------------------------------------------------- 
     179      ! 
     180      IF( ln_rstart .AND. nn_components == jp_iam_sas )   RETURN 
     181      ! 
     182      IF(lwp) THEN 
     183         WRITE(numout,*) 
     184         WRITE(numout,*) 'sbc_ssm_init : sea surface mean data initialisation ' 
     185         WRITE(numout,*) '~~~~~~~~~~~~ ' 
     186      ENDIF 
     187      ! 
    186188      REWIND( numnam_ref )              ! Namelist namsbc_sas in reference namelist : Input fields 
    187189      READ  ( numnam_ref, namsbc_sas, IOSTAT = ios, ERR = 901) 
    188 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_sas in reference namelist', lwp ) 
    189  
     190901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc_sas in reference namelist', lwp ) 
    190191      REWIND( numnam_cfg )              ! Namelist namsbc_sas in configuration namelist : Input fields 
    191192      READ  ( numnam_cfg, namsbc_sas, IOSTAT = ios, ERR = 902 ) 
    192 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_sas in configuration namelist', lwp ) 
     193902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namsbc_sas in configuration namelist', lwp ) 
    193194      IF(lwm) WRITE ( numond, namsbc_sas ) 
    194  
    195       !                                         ! store namelist information in an array 
    196       !                                         ! Control print 
    197       IF(lwp) THEN 
    198          WRITE(numout,*) 
    199          WRITE(numout,*) 'sbc_sas : standalone surface scheme ' 
    200          WRITE(numout,*) '~~~~~~~~~~~ ' 
     195      !            
     196      IF(lwp) THEN                              ! Control print 
    201197         WRITE(numout,*) '   Namelist namsbc_sas' 
    202          WRITE(numout,*) '      Initialisation using an input file  = ',l_sasread  
     198         WRITE(numout,*) '      Initialisation using an input file                                 l_sasread   = ', l_sasread  
    203199         WRITE(numout,*) '      Are we supplying a 3D u,v and e3 field                             ln_3d_uve   = ', ln_3d_uve 
    204200         WRITE(numout,*) '      Are we reading frq (fraction of qsr absorbed in the 1st T level)   ln_read_frq = ', ln_read_frq 
    205          WRITE(numout,*) 
    206201      ENDIF 
    207202      ! 
     
    210205      ! 
    211206      IF( ln_apr_dyn ) THEN 
    212          IF( lwp ) WRITE(numout,*) 'No atmospheric gradient needed with StandAlone Surface scheme' 
     207         IF( lwp ) WRITE(numout,*) '         ==>>>   No atmospheric gradient needed with StandAlone Surface scheme' 
    213208         ln_apr_dyn = .FALSE. 
    214209      ENDIF 
    215210      IF( ln_rnf ) THEN 
    216          IF( lwp ) WRITE(numout,*) 'No runoff needed with StandAlone Surface scheme' 
     211         IF( lwp ) WRITE(numout,*) '         ==>>>   No runoff needed with StandAlone Surface scheme' 
    217212         ln_rnf = .FALSE. 
    218213      ENDIF 
    219214      IF( ln_ssr ) THEN 
    220          IF( lwp ) WRITE(numout,*) 'No surface relaxation needed with StandAlone Surface scheme' 
     215         IF( lwp ) WRITE(numout,*) '         ==>>>   No surface relaxation needed with StandAlone Surface scheme' 
    221216         ln_ssr = .FALSE. 
    222217      ENDIF 
    223218      IF( nn_fwb > 0 ) THEN 
    224          IF( lwp ) WRITE(numout,*) 'No freshwater budget adjustment needed with StandAlone Surface scheme' 
     219         IF( lwp ) WRITE(numout,*) '         ==>>>   No freshwater budget adjustment needed with StandAlone Surface scheme' 
    225220         nn_fwb = 0 
    226221      ENDIF 
    227222      IF( ln_closea ) THEN 
    228          IF( lwp ) WRITE(numout,*) 'No closed seas adjustment needed with StandAlone Surface scheme' 
     223         IF( lwp ) WRITE(numout,*) '         ==>>>   No closed seas adjustment needed with StandAlone Surface scheme' 
    229224         ln_closea = .false. 
    230225      ENDIF 
    231       IF (l_sasread) THEN 
    232       !  
    233       !! following code is a bit messy, but distinguishes between when u,v are 3d arrays and 
    234       !! when we have other 3d arrays that we need to read in 
    235       !! so if a new field is added i.e. jf_new, just give it the next integer in sequence 
    236       !! for the corresponding dimension (currently if ln_3d_uve is true, 4 for 2d and 3 for 3d, 
    237       !! alternatively if ln_3d_uve is false, 6 for 2d and 1 for 3d), reset nfld_3d, nfld_2d, 
    238       !! and the rest of the logic should still work 
    239       ! 
    240       jf_tem = 1 ; jf_sal = 2 ; jf_ssh = 3 ; jf_frq = 4   ! default 2D fields index 
    241       ! 
    242       IF( ln_3d_uve ) THEN 
    243          jf_usp = 1 ; jf_vsp = 2 ; jf_e3t = 3      ! define 3D fields index 
    244          nfld_3d  = 2 + COUNT( (/.NOT.ln_linssh/) )        ! number of 3D fields to read 
    245          nfld_2d  = 3 + COUNT( (/ln_read_frq/) )   ! number of 2D fields to read 
    246       ELSE 
    247          jf_usp = 4 ; jf_vsp = 5 ; jf_e3t = 6 ; jf_frq = 6 + COUNT( (/.NOT.ln_linssh/) )   ! update 2D fields index 
    248          nfld_3d  = 0                                                              ! no 3D fields to read 
    249          nfld_2d  = 5 + COUNT( (/.NOT.ln_linssh/) ) + COUNT( (/ln_read_frq/) )             ! number of 2D fields to read 
    250       ENDIF 
    251  
    252       IF( nfld_3d > 0 ) THEN 
    253          ALLOCATE( slf_3d(nfld_3d), STAT=ierr )         ! set slf structure 
    254          IF( ierr > 0 ) THEN 
    255             CALL ctl_stop( 'sbc_ssm_init: unable to allocate slf 3d structure' )   ;   RETURN 
    256          ENDIF 
    257          slf_3d(jf_usp) = sn_usp 
    258          slf_3d(jf_vsp) = sn_vsp 
    259          IF( .NOT.ln_linssh )   slf_3d(jf_e3t) = sn_e3t 
    260       ENDIF 
    261  
    262       IF( nfld_2d > 0 ) THEN 
    263          ALLOCATE( slf_2d(nfld_2d), STAT=ierr )         ! set slf structure 
    264          IF( ierr > 0 ) THEN 
    265             CALL ctl_stop( 'sbc_ssm_init: unable to allocate slf 2d structure' )   ;   RETURN 
    266          ENDIF 
    267          slf_2d(jf_tem) = sn_tem ; slf_2d(jf_sal) = sn_sal ; slf_2d(jf_ssh) = sn_ssh 
    268          IF( ln_read_frq )   slf_2d(jf_frq) = sn_frq 
    269          IF( .NOT. ln_3d_uve ) THEN 
    270             slf_2d(jf_usp) = sn_usp ; slf_2d(jf_vsp) = sn_vsp 
    271             IF( .NOT.ln_linssh )   slf_2d(jf_e3t) = sn_e3t 
    272          ENDIF 
    273       ENDIF 
    274       ! 
    275       ierr1 = 0    ! default definition if slf_?d(ifpr)%ln_tint = .false.  
    276       IF( nfld_3d > 0 ) THEN 
    277          ALLOCATE( sf_ssm_3d(nfld_3d), STAT=ierr )         ! set sf structure 
    278          IF( ierr > 0 ) THEN 
    279             CALL ctl_stop( 'sbc_ssm_init: unable to allocate sf structure' )   ;   RETURN 
    280          ENDIF 
    281          DO ifpr = 1, nfld_3d 
    282                                        ALLOCATE( sf_ssm_3d(ifpr)%fnow(jpi,jpj,jpk)    , STAT=ierr0 ) 
    283             IF( slf_3d(ifpr)%ln_tint ) ALLOCATE( sf_ssm_3d(ifpr)%fdta(jpi,jpj,jpk,2)  , STAT=ierr1 ) 
    284             IF( ierr0 + ierr1 > 0 ) THEN 
    285                CALL ctl_stop( 'sbc_ssm_init : unable to allocate sf_ssm_3d array structure' )   ;   RETURN 
    286             ENDIF 
    287          END DO 
    288          !                                         ! fill sf with slf_i and control print 
    289          CALL fld_fill( sf_ssm_3d, slf_3d, cn_dir, 'sbc_ssm_init', '3D Data in file', 'namsbc_ssm' ) 
    290       ENDIF 
    291  
    292       IF( nfld_2d > 0 ) THEN 
    293          ALLOCATE( sf_ssm_2d(nfld_2d), STAT=ierr )         ! set sf structure 
    294          IF( ierr > 0 ) THEN 
    295             CALL ctl_stop( 'sbc_ssm_init: unable to allocate sf 2d structure' )   ;   RETURN 
    296          ENDIF 
    297          DO ifpr = 1, nfld_2d 
    298                                        ALLOCATE( sf_ssm_2d(ifpr)%fnow(jpi,jpj,1)    , STAT=ierr0 ) 
    299             IF( slf_2d(ifpr)%ln_tint ) ALLOCATE( sf_ssm_2d(ifpr)%fdta(jpi,jpj,1,2)  , STAT=ierr1 ) 
    300             IF( ierr0 + ierr1 > 0 ) THEN 
    301                CALL ctl_stop( 'sbc_ssm_init : unable to allocate sf_ssm_2d array structure' )   ;   RETURN 
    302             ENDIF 
    303          END DO 
    304          ! 
    305          CALL fld_fill( sf_ssm_2d, slf_2d, cn_dir, 'sbc_ssm_init', '2D Data in file', 'namsbc_ssm' ) 
    306       ENDIF 
    307       ! 
    308       ! finally tidy up 
    309  
    310       IF( nfld_3d > 0 ) DEALLOCATE( slf_3d, STAT=ierr ) 
    311       IF( nfld_2d > 0 ) DEALLOCATE( slf_2d, STAT=ierr ) 
    312  
    313    ENDIF 
    314   
     226       
     227      !                   
     228      IF( l_sasread ) THEN                       ! store namelist information in an array 
     229         !  
     230         !! following code is a bit messy, but distinguishes between when u,v are 3d arrays and 
     231         !! when we have other 3d arrays that we need to read in 
     232         !! so if a new field is added i.e. jf_new, just give it the next integer in sequence 
     233         !! for the corresponding dimension (currently if ln_3d_uve is true, 4 for 2d and 3 for 3d, 
     234         !! alternatively if ln_3d_uve is false, 6 for 2d and 1 for 3d), reset nfld_3d, nfld_2d, 
     235         !! and the rest of the logic should still work 
     236         ! 
     237         jf_tem = 1   ;   jf_ssh = 3   ! default 2D fields index 
     238         jf_sal = 2   ;   jf_frq = 4   ! 
     239         ! 
     240         IF( ln_3d_uve ) THEN 
     241            jf_usp = 1   ;   jf_vsp = 2   ;   jf_e3t = 3     ! define 3D fields index 
     242            nfld_3d  = 2 + COUNT( (/.NOT.ln_linssh/) )       ! number of 3D fields to read 
     243            nfld_2d  = 3 + COUNT( (   /ln_read_frq/) )       ! number of 2D fields to read 
     244         ELSE 
     245            jf_usp = 4   ;   jf_e3t = 6                      ! update 2D fields index 
     246            jf_vsp = 5   ;   jf_frq = 6 + COUNT( (/.NOT.ln_linssh/) ) 
     247            ! 
     248            nfld_3d  = 0                                     ! no 3D fields to read 
     249            nfld_2d  = 5 + COUNT( (/.NOT.ln_linssh/) ) + COUNT( (/ln_read_frq/) )    ! number of 2D fields to read 
     250         ENDIF 
     251         ! 
     252         IF( nfld_3d > 0 ) THEN 
     253            ALLOCATE( slf_3d(nfld_3d), STAT=ierr )         ! set slf structure 
     254            IF( ierr > 0 ) THEN 
     255               CALL ctl_stop( 'sbc_ssm_init: unable to allocate slf 3d structure' )   ;   RETURN 
     256            ENDIF 
     257            slf_3d(jf_usp) = sn_usp 
     258            slf_3d(jf_vsp) = sn_vsp 
     259            IF( .NOT.ln_linssh )   slf_3d(jf_e3t) = sn_e3t 
     260         ENDIF 
     261         ! 
     262         IF( nfld_2d > 0 ) THEN 
     263            ALLOCATE( slf_2d(nfld_2d), STAT=ierr )         ! set slf structure 
     264            IF( ierr > 0 ) THEN 
     265               CALL ctl_stop( 'sbc_ssm_init: unable to allocate slf 2d structure' )   ;   RETURN 
     266            ENDIF 
     267            slf_2d(jf_tem) = sn_tem   ;   slf_2d(jf_sal) = sn_sal   ;   slf_2d(jf_ssh) = sn_ssh 
     268            IF( ln_read_frq )   slf_2d(jf_frq) = sn_frq 
     269            IF( .NOT. ln_3d_uve ) THEN 
     270               slf_2d(jf_usp) = sn_usp ; slf_2d(jf_vsp) = sn_vsp 
     271               IF( .NOT.ln_linssh )   slf_2d(jf_e3t) = sn_e3t 
     272            ENDIF 
     273         ENDIF 
     274         ! 
     275         ierr1 = 0    ! default definition if slf_?d(ifpr)%ln_tint = .false.  
     276         IF( nfld_3d > 0 ) THEN 
     277            ALLOCATE( sf_ssm_3d(nfld_3d), STAT=ierr )         ! set sf structure 
     278            IF( ierr > 0 ) THEN 
     279               CALL ctl_stop( 'sbc_ssm_init: unable to allocate sf structure' )   ;   RETURN 
     280            ENDIF 
     281            DO ifpr = 1, nfld_3d 
     282                                            ALLOCATE( sf_ssm_3d(ifpr)%fnow(jpi,jpj,jpk)    , STAT=ierr0 ) 
     283               IF( slf_3d(ifpr)%ln_tint )   ALLOCATE( sf_ssm_3d(ifpr)%fdta(jpi,jpj,jpk,2)  , STAT=ierr1 ) 
     284               IF( ierr0 + ierr1 > 0 ) THEN 
     285                  CALL ctl_stop( 'sbc_ssm_init : unable to allocate sf_ssm_3d array structure' )   ;   RETURN 
     286               ENDIF 
     287            END DO 
     288            !                                         ! fill sf with slf_i and control print 
     289            CALL fld_fill( sf_ssm_3d, slf_3d, cn_dir, 'sbc_ssm_init', '3D Data in file', 'namsbc_ssm' ) 
     290         ENDIF 
     291         ! 
     292         IF( nfld_2d > 0 ) THEN 
     293            ALLOCATE( sf_ssm_2d(nfld_2d), STAT=ierr )         ! set sf structure 
     294            IF( ierr > 0 ) THEN 
     295               CALL ctl_stop( 'sbc_ssm_init: unable to allocate sf 2d structure' )   ;   RETURN 
     296            ENDIF 
     297            DO ifpr = 1, nfld_2d 
     298                                            ALLOCATE( sf_ssm_2d(ifpr)%fnow(jpi,jpj,1)    , STAT=ierr0 ) 
     299               IF( slf_2d(ifpr)%ln_tint )   ALLOCATE( sf_ssm_2d(ifpr)%fdta(jpi,jpj,1,2)  , STAT=ierr1 ) 
     300               IF( ierr0 + ierr1 > 0 ) THEN 
     301                  CALL ctl_stop( 'sbc_ssm_init : unable to allocate sf_ssm_2d array structure' )   ;   RETURN 
     302               ENDIF 
     303            END DO 
     304            ! 
     305            CALL fld_fill( sf_ssm_2d, slf_2d, cn_dir, 'sbc_ssm_init', '2D Data in file', 'namsbc_ssm' ) 
     306         ENDIF 
     307         ! 
     308         IF( nfld_3d > 0 )   DEALLOCATE( slf_3d, STAT=ierr ) 
     309         IF( nfld_2d > 0 )   DEALLOCATE( slf_2d, STAT=ierr ) 
     310         ! 
     311      ENDIF 
     312      ! 
    315313      CALL sbc_ssm( nit000 )   ! need to define ss?_m arrays used in iceistate 
    316314      l_initdone = .TRUE. 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90

    r9119 r9169  
    66   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec)  
    77   !!---------------------------------------------------------------------- 
    8    !! trc_nam_age      : AGE  tracer initialisation 
     8   !! trc_nam_age      : AGE tracer initialisation 
    99   !!---------------------------------------------------------------------- 
    1010   USE oce_trc         ! Ocean variables 
     
    2222   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2323   !!---------------------------------------------------------------------- 
    24  
    2524CONTAINS 
    2625 
     
    3332      !! ** input   :   Namelist namage 
    3433      !!---------------------------------------------------------------------- 
    35       INTEGER :: ios                 ! Local integer output status for namelist read 
     34      INTEGER ::   ios   ! Local integer 
    3635      !! 
    3736      NAMELIST/namage/ rn_age_depth, rn_age_kill_rate  
    3837      !!---------------------------------------------------------------------- 
     38      ! 
     39      IF(lwp) THEN 
     40         WRITE(numout,*) 
     41         WRITE(numout,*) ' Sea Age Tracer' 
     42         WRITE(numout,*) 
     43         WRITE(numout,*) 'trc_nam_age : Read namage namelist for Age passive tracer' 
     44         WRITE(numout,*) '~~~~~~~~~~~' 
     45      ENDIF 
     46 
    3947      ! Variable setting 
    4048      ctrcnm    (jp_age) = 'Age' 
     
    4856      REWIND( numnat_ref )              ! Namelist namagedate in reference namelist : AGE parameters 
    4957      READ  ( numnat_ref, namage, IOSTAT = ios, ERR = 901) 
    50 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in reference namelist', lwp ) 
    51  
     58901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namage in reference namelist', lwp ) 
    5259      REWIND( numnat_cfg )              ! Namelist namagedate in configuration namelist : AGE parameters 
    5360      READ  ( numnat_cfg, namage, IOSTAT = ios, ERR = 902 ) 
    54 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in configuration namelist', lwp ) 
     61902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namage in configuration namelist', lwp ) 
    5562      IF(lwm) WRITE ( numont, namage ) 
    56  
     63      ! 
    5764      IF(lwp) THEN                  ! control print 
    58          WRITE(numout,*) ' ' 
    59          WRITE(numout,*) ' Sea Age Tracer' 
    60          WRITE(numout,*) 
    61          WRITE(numout,*) ' trc_nam_age: Read namage, namelist for Age passive tracer' 
    62          WRITE(numout,*) ' ~~~~~~~' 
    63          WRITE(numout,*) '  depth over which age tracer reset to zero                              rn_age_depth      = ', & 
    64               &          rn_age_depth  
    65