Changeset 2678


Ignore:
Timestamp:
2011-03-09T16:02:46+01:00 (10 years ago)
Author:
rblod
Message:

Phasing branch dev_r2586_dynamic_mem with revision 2675 off the trunk

Location:
branches/dev_r2586_dynamic_mem/NEMOGCM
Files:
17 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/GYRE/cpp_GYRE.fcm

    r2528 r2678  
    1  bld::tool::fppkeys key_gyre key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_iomput key_nproci=1 key_nprocj=1 
     1 bld::tool::fppkeys key_gyre key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_iomput 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/GYRE_LOBSTER/cpp_GYRE_LOBSTER.fcm

    r2528 r2678  
    1 bld::tool::fppkeys  key_gyre key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_top key_lobster key_diatrc key_iomput key_nproci=1 key_nprocj=1 
     1bld::tool::fppkeys  key_gyre key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_top key_lobster key_diatrc key_iomput  
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm

    r2544 r2678  
    1  bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput key_nproci=1 key_nprocj=1  
     1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput  
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/cpp_ORCA2_LIM_PISCES.fcm

    r2528 r2678  
    1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_top key_pisces key_dtatrc key_diatrc key_iomput key_nproci=1 key_nprocj=1 
     1bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_top key_pisces key_dtatrc key_diatrc key_iomput  
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/cpp_ORCA2_OFF_PISCES.fcm

    r2528 r2678  
    1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_dynspg_flt key_ldfslp key_traldf_c2d key_traldf_eiv key_zdftke key_top key_offline key_pisces key_dtatrc key_diatrc key_iomput key_nproci=1 key_nprocj=1 
     1bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_dynspg_flt key_ldfslp key_traldf_c2d key_traldf_eiv key_zdftke key_top key_offline key_pisces key_dtatrc key_diatrc key_iomput  
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/POMME/EXP00/namelist

    r2528 r2678  
    192192&namsbc_core   !   namsbc_core  CORE bulk formulea 
    193193!----------------------------------------------------------------------- 
    194 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
    195 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
    196    sn_wndi = 'u_10.15JUNE2009_orca2'       ,  6  , 'U_10_MOD',   .false.    , .true. , 'yearly'  , ''       , 'Uwnd' 
    197    sn_wndj = 'v_10.15JUNE2009_orca2'       ,  6  , 'V_10_MOD',   .false.    , .true. , 'yearly'  , ''       , 'Vwnd' 
    198    sn_qsr  = 'ncar_rad.15JUNE2009_orca2'   , 24  , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , ''      , '' 
    199    sn_qlw  = 'ncar_rad.15JUNE2009_orca2'   , 24  , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , ''      , '' 
    200    sn_tair = 't_10.15JUNE2009_orca2'       ,  6  , 'T_10_MOD',   .false.    , .true. , 'yearly'  , ''      , '' 
    201    sn_humi = 'q_10.15JUNE2009_orca2'       ,  6  , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , ''      , '' 
    202    sn_prec = 'ncar_precip.15JUNE2009_orca2', -1  , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , ''      , '' 
    203    sn_snow = 'ncar_precip.15JUNE2009_orca2', -1  , 'SNOW'    ,   .false.    , .true. , 'yearly'  , ''      , '' 
    204    sn_tdif = 'taudif_core'                 , 24  , 'taudif'  ,   .false.    , .true. , 'yearly'  , ''       , '' 
    205  
     194!              !   file name      ! frequency (hours) ! variable   ! time interp.   !  clim   ! 'yearly'/ ! weights  ! rotation ! 
     195!              !                  !  (if <0  months)  !   name     !    (logical)   !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     196   sn_wndi     = 'u10_1988'       ,       24          , 'u10'      ,    .true.      , .true. ,   'yearly' , '' 
     197   sn_wndj     = 'v10_1988'       ,       24          , 'v10'      ,    .true.      , .true. ,   'yearly' , '' 
     198   sn_qsr      = 'radsw_1988'     ,       24          , 'radsw'    ,    .true.      , .true. ,   'yearly' , '' 
     199   sn_qlw      = 'radlw_1988'     ,       24          , 'radlw'    ,    .true.      , .true. ,   'yearly' , '' 
     200   sn_tair     = 't2_1988.nc'     ,       24          , 't2'       ,    .true.      , .true. ,   'yearly' , '' 
     201   sn_humi     = 'q2_1988'        ,       24          , 'q2'       ,    .true.      , .true. ,   'yearly' , '' 
     202   sn_prec     = 'precip_1988.nc' ,       -1          , 'precip'   ,    .true.      , .true. ,   'yearly' , '' 
     203   sn_snow     = 'precip_1988.nc' ,       -1          , 'precip'   ,    .true.      , .true. ,   'yearly' , '' 
     204   sn_tdif     = 'taudif_core'    ,       24          , 'taudif'   ,    .true.      , .true. ,   'yearly'  ,'' 
     205! 
    206206   cn_dir      = './'      !  root directory for the location of the bulk files 
    207207   ln_2m       = .false.   !  air temperature and humidity referenced at 2m (T) instead 10m (F) 
     
    260260&namsbc_rnf    !   runoffs namelist surface boundary condition 
    261261!----------------------------------------------------------------------- 
    262 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
    263 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
    264    sn_rnf      = 'runoff_core_monthly',    -1    , 'sorunoff',   .true.     , .true. , 'yearly'  , ''       , '' 
    265    sn_cnf      = 'runoff_core_monthly',     0    , 'socoefr0',   .false.    , .true. , 'yearly'  , ''       , '' 
    266    sn_s_rnf    = 'runoffs'            ,    24    , 'rosaline',   .true.     , .true. , 'yearly'  , ''       , '' 
    267    sn_t_rnf    = 'runoffs'            ,    24    , 'rotemper',   .true.     , .true. , 'yearly'  , ''       , '' 
    268    sn_dep_rnf  = 'runoffs'            ,     0    , 'rodepth' ,   .false.    , .true. , 'yearly'  , ''       , '' 
     262!              !  file name           ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
     263!              !                      !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     264   sn_rnf      = 'runoff_core_monthly',          -1       , 'sorunoff',   .true.     , .true. , 'yearly'  , ''       , '' 
     265   sn_cnf      = 'runoff_core_monthly',           0       , 'socoefr0',   .false.    , .true. , 'yearly'  , ''       , '' 
     266   sn_s_rnf    = 'runoffs'            ,          24       , 'rosaline',   .true.     , .true. , 'yearly'  , ''       , '' 
     267   sn_t_rnf    = 'runoffs'            ,          24       , 'rotemper',   .true.     , .true. , 'yearly'  , ''       , '' 
     268   sn_dep_rnf  = 'runoffs'            ,           0       , 'rodepth' ,   .false.    , .true. , 'yearly'  , ''       , '' 
    269269 
    270270   cn_dir       = './'      !  root directory for the location of the runoff files 
     
    298298   cn_dir      = './'      !  root directory for the location of the runoff files 
    299299   nn_sstr     =     0     !  add a retroaction term in the surface heat       flux (=1) or not (=0) 
    300    nn_sssr     =     2     !  add a damping     term in the surface freshwater flux (=2)  
     300   nn_sssr     =     1     !  add a damping     term in the surface freshwater flux (=2)  
    301301                           !  or to SSS only (=1) or no damping term (=0) 
    302302   rn_dqdt     =   -40.    !  magnitude of the retroaction on temperature   [W/m2/K] 
     
    601601   rn_emin     =   1.e-6   !  minimum value of tke [m2/s2] 
    602602   rn_emin0    =   1.e-4   !  surface minimum value of tke [m2/s2] 
    603    nn_mxl      =   2       !  mixing length: = 0 bounded by the distance to surface and bottom 
     603   nn_mxl      =   3       !  mixing length: = 0 bounded by the distance to surface and bottom 
    604604                           !                 = 1 bounded by the local vertical scale factor 
    605605                           !                 = 2 first vertical derivative of mixing length bounded by 1 
     
    610610   ln_lc       = .true.    !  Langmuir cell parameterisation (Axell 2002) 
    611611   rn_lc       =   0.15    !  coef. associated to Langmuir cells 
    612    nn_etau     =   1       !  penetration of tke below the mixed layer (ML) due to internal & intertial waves 
     612   nn_etau     =   0       !  penetration of tke below the mixed layer (ML) due to internal & intertial waves 
    613613                           !        = 0 no penetration 
    614614                           !        = 1 add a tke source below the ML 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/CONFIG/POMME/cpp_POMME.fcm

    r2528 r2678  
    1 bld::tool::fppkeys key_pomme_r025 key_dynspg_flt key_zdftke key_dtatem key_dtasal key_traldf_c2d key_dynldf_c2d key_ldfslp key_obc key_iomput key_nproci=1 key_nprocj=1 
    2  
     1bld::tool::fppkeys key_pomme_r025 key_dynspg_flt key_zdftke key_dtatem key_dtasal key_traldf_c2d key_dynldf_c2d key_ldfslp key_obc key_iomput 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r2612 r2678  
    7979      !!           profile of the ice/snow layers : z_i, z_s 
    8080      !!           total ice/snow thickness : ht_i_b, ht_s_b 
     81      !! 
     82      !! ** External :  
     83      !! 
     84      !! ** References : 
     85      !! 
     86      !! ** History : 
     87      !!           (02-2003) Martin Vancoppenolle, Louvain-la-Neuve, Belgium 
     88      !!           (06-2005) Martin Vancoppenolle, 3d version 
     89      !!           (11-2006) Vectorized by Xavier Fettweis (UCL-ASTR) 
     90      !!           (04-2007) Energy conservation tested by M. Vancoppenolle 
    8191      !!------------------------------------------------------------------ 
    8292      INTEGER , INTENT (in) ::  & 
     
    333343               END DO 
    334344            END DO 
     345         ENDIF 
     346 
     347         IF ( thcon_i_swi .EQ. 1 ) THEN ! Pringle (0.011/2=0.0055) 
     348            DO layer = 1, nlay_i-1 
     349               DO ji = kideb , kiut 
     350                  ztcond_i(ji,layer) = rcdic + 0.09*( s_i_b(ji,layer)   & 
     351                     + s_i_b(ji,layer+1) ) / MIN(-2.0*zeps,      & 
     352                     t_i_b(ji,layer)+t_i_b(ji,layer+1)-2.0*rtt) - & 
     353                     0.0055* ( t_i_b(ji,layer) + t_i_b(ji,layer+1) - 2.0*rtt )   
     354                  ztcond_i(ji,layer) = MAX(ztcond_i(ji,layer),zkimin) 
     355               END DO 
     356            END DO 
     357         ENDIF 
     358 
     359         IF ( thcon_i_swi .EQ. 0 ) THEN ! Untersteiner 
    335360            DO ji = kideb , kiut 
    336361               ztcond_i(ji,nlay_i)   = rcdic + zbeta*s_i_b(ji,nlay_i) / & 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r2633 r2678  
    815815      WRITE(*,*) 'ldf_slp: You should not have seen this print! error?', kt, prd(1,1,1), pn2(1,1,1) 
    816816   END SUBROUTINE ldf_slp 
     817   SUBROUTINE ldf_slp_grif( kt )        ! Dummy routine 
     818      INTEGER, INTENT(in) :: kt 
     819      WRITE(*,*) 'ldf_slp_grif: You should not have seen this print! error?', kt 
     820   END SUBROUTINE ldf_slp_grif 
    817821   SUBROUTINE ldf_slp_init       ! Dummy routine 
    818822   END SUBROUTINE ldf_slp_init 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r2636 r2678  
    1515   !!            3.2  !  2009-03  (G. Madec)  heat and salt content trends 
    1616   !!            3.3  !  2010-06  (C. Ethe, G. Madec) Merge TRA-TRC 
     17   !!             -   !  2011-02  (A. Coward, C. Ethe, G. Madec) improvment of surface boundary condition 
    1718   !!---------------------------------------------------------------------- 
    1819   
     
    4041   PUBLIC   tra_zdf_imp   !  routine called by step.F90 
    4142 
     43   REAL(wp) ::  r_vvl     ! variable volume indicator, =1 if lk_vvl=T, =0 otherwise  
     44 
    4245   !! * Substitutions 
    4346#  include "domzgr_substitute.h90" 
     
    5659      !!                  ***  ROUTINE tra_zdf_imp  *** 
    5760      !! 
    58       !! ** Purpose :   Compute the trend due to the vertical tracer diffusion 
    59       !!     including the vertical component of lateral mixing (only for 2nd 
    60       !!     order operator, for fourth order it is already computed and add 
    61       !!     to the general trend in traldf.F) and add it to the general trend 
    62       !!     of the tracer equations. 
    63       !! 
    64       !! ** Method  :   The vertical component of the lateral diffusive trends 
    65       !!      is provided by a 2nd order operator rotated along neutral or geo- 
    66       !!      potential surfaces to which an eddy induced advection can be  
    67       !!      added. It is computed using before fields (forward in time) and  
    68       !!      isopycnal or geopotential slopes computed in routine ldfslp. 
    69       !! 
    70       !!      Second part: vertical trend associated with the vertical physics 
    71       !!      ===========  (including the vertical flux proportional to dk[t] 
    72       !!                  associated with the lateral mixing, through the 
    73       !!                  update of avt) 
    74       !!      The vertical diffusion of the tracer t  is given by: 
    75       !!             difft = dz( avt dz(t) ) = 1/e3t dk+1( avt/e3w dk(t) ) 
     61      !! ** Purpose :   Compute the after tracer through a implicit computation 
     62      !!     of the vertical tracer diffusion (including the vertical component  
     63      !!     of lateral mixing (only for 2nd order operator, for fourth order  
     64      !!     it is already computed and add to the general trend in traldf)  
     65      !! 
     66      !! ** Method  :  The vertical diffusion of the tracer t  is given by: 
     67      !!                  difft = dz( avt dz(t) ) = 1/e3t dk+1( avt/e3w dk(t) ) 
    7668      !!      It is computed using a backward time scheme (t=ta). 
     69      !!      If lk_zdfddm=T, use avs for salinity or for passive tracers 
    7770      !!      Surface and bottom boundary conditions: no diffusive flux on 
    7871      !!      both tracers (bottom, applied through the masked field avt). 
    79       !!      Add this trend to the general trend ta,sa : 
    80       !!         ta = ta + dz( avt dz(t) ) 
    81       !!         if lk_zdfddm=T, use avs for salinity or for passive tracers 
    82       !!         (sa = sa + dz( avs dz(t) )  
    83       !! 
    84       !!      Third part: recover avt resulting from the vertical physics 
    85       !!      ==========  alone, for further diagnostics (for example to 
    86       !!                  compute the turbocline depth in zdfmxl.F90). 
    87       !!         if lk_zdfddm=T, use avt = zavt 
    88       !!         (avs = zavs if lk_zdfddm=T ) 
    89       !! 
    90       !! ** Action  : - Update (ta) with before vertical diffusion trend 
     72      !!      If iso-neutral mixing, add to avt the contribution due to lateral mixing. 
     73      !! 
     74      !! ** Action  : - pta  becomes the after tracer 
    9175      !!--------------------------------------------------------------------- 
    9276      USE oce    , ONLY :   zwd   => ua   ! ua used as workspace 
     
    10387      !! 
    10488      INTEGER  ::  ji, jj, jk, jn        ! dummy loop indices 
    105       REAL(wp) ::  zavi, zrhs, znvvl     ! local scalars 
     89      REAL(wp) ::  zrhs                  ! local scalars 
    10690      REAL(wp) ::  ze3tb, ze3tn, ze3ta   ! variable vertical scale factors 
    10791      !!--------------------------------------------------------------------- 
     
    116100         IF(lwp)WRITE(numout,*) 'tra_zdf_imp : implicit vertical mixing on ', cdtype 
    117101         IF(lwp)WRITE(numout,*) '~~~~~~~~~~~ ' 
    118          zavi = 0._wp      ! avoid warning at compilation phase when lk_ldfslp=F 
     102         ! 
     103         IF( lk_vvl ) THEN   ;    r_vvl = 1._wp       ! Variable volume indicator 
     104         ELSE                ;    r_vvl = 0._wp        
     105         ENDIF 
    119106      ENDIF 
    120107      ! 
    121       ! I. Local initialization 
    122       ! ----------------------- 
    123       zwd(1,:, : ) = 0._wp     ;     zwd(jpi,:,:) = 0._wp 
    124       zws(1,:, : ) = 0._wp     ;     zws(jpi,:,:) = 0._wp 
    125       zwi(1,:, : ) = 0._wp     ;     zwi(jpi,:,:) = 0._wp 
    126       zwt(1,:, : ) = 0._wp     ;     zwt(jpi,:,:) = 0._wp 
    127       zwt(:,:,jpk) = 0._wp     ;     zwt( : ,:,1) = 0._wp 
    128  
    129       ! I.1 Variable volume : to take into account vertical variable vertical scale factors 
    130       ! ------------------- 
    131       IF( lk_vvl ) THEN   ;    znvvl = 1._wp 
    132       ELSE                ;    znvvl = 0._wp 
    133       ENDIF 
    134  
    135       ! II. Vertical trend associated with the vertical physics 
    136       ! ======================================================= 
    137       !     (including the vertical flux proportional to dk[t] associated 
    138       !      with the lateral mixing, through the avt update) 
    139       !     dk[ avt dk[ (t,s) ] ] diffusive trends 
    140  
    141       ! 
    142       ! II.0 Matrix construction 
    143       ! ------------------------ 
    144       DO jn = 1, kjpt 
     108      !                                               ! ============= ! 
     109      DO jn = 1, kjpt                                 !  tracer loop  ! 
     110         !                                            ! ============= ! 
    145111         ! 
    146112         !  Matrix construction 
    147          ! ------------------------ 
    148          IF( cdtype == 'TRA' .AND. jn == jp_tem )  THEN  
     113         ! -------------------- 
     114         ! Build matrix if temperature or salinity (only in double diffusion case) or first passive tracer 
     115         ! 
     116         IF(  ( cdtype == 'TRA' .AND. ( ( jn == jp_tem ) .OR. ( jn == jp_sal .AND. lk_zdfddm ) ) ) .OR. & 
     117            & ( cdtype == 'TRC' .AND. jn == 1 )  )  THEN 
     118            ! 
     119            ! vertical mixing coef.: avt for temperature, avs for salinity and passive tracers 
     120            IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN   ;   zwt(:,:,2:jpk) = avt  (:,:,2:jpk) 
     121            ELSE                                            ;   zwt(:,:,2:jpk) = fsavs(:,:,2:jpk) 
     122            ENDIF 
     123            zwt(:,:,1) = 0._wp 
     124            ! 
    149125#if defined key_ldfslp 
    150             IF( ln_traldf_grif ) THEN 
     126            ! isoneutral diffusion: add the contribution  
     127            IF( ln_traldf_grif    ) THEN     ! Griffies isoneutral diff 
    151128               DO jk = 2, jpkm1 
    152129                  DO jj = 2, jpjm1 
    153130                     DO ji = fs_2, fs_jpim1   ! vector opt. 
    154                         ! zavi = fsahtw(ji,jj,jk) * wslp2(ji,jj,jk)         ! vertical mixing coef. due to lateral mixing 
    155                         zavi = ah_wslp2(ji,jj,jk)                ! vertical mixing coef. due to lateral mixing 
    156                         zwt(ji,jj,jk) = avt(ji,jj,jk) + zavi              ! zwt=avt+zavi (total vertical mixing coef. on temperature) 
     131                        zwt(ji,jj,jk) = zwt(ji,jj,jk) + ah_wslp2(ji,jj,jk)        
    157132                     END DO 
    158133                  END DO 
    159134               END DO 
    160             ! update and save of avt (and avs if double diffusive mixing) 
    161             ELSE IF( l_traldf_rot ) THEN 
     135            ELSE IF( l_traldf_rot ) THEN     ! standard isoneutral diff 
    162136               DO jk = 2, jpkm1 
    163137                  DO jj = 2, jpjm1 
    164138                     DO ji = fs_2, fs_jpim1   ! vector opt. 
    165                         zavi = fsahtw(ji,jj,jk)                       &   ! vertical mixing coef. due to lateral mixing 
    166                            & * (  wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
    167                            &    + wslpj(ji,jj,jk) * wslpj(ji,jj,jk)  ) 
    168                         zwt(ji,jj,jk) = avt(ji,jj,jk) + zavi              ! zwt=avt+zavi (total vertical mixing coef. on temperature) 
     139                        zwt(ji,jj,jk) = zwt(ji,jj,jk) + fsahtw(ji,jj,jk)                       & 
     140                           &                          * (  wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
     141                           &                             + wslpj(ji,jj,jk) * wslpj(ji,jj,jk)  ) 
    169142                     END DO 
    170143                  END DO 
    171144               END DO 
    172             ELSE                         ! no rotation but key_ldfslp defined 
    173                zwt(:,:,:) = avt(:,:,:) 
    174145            ENDIF 
    175 #else 
    176             ! No isopycnal diffusion 
    177             zwt(:,:,:) = avt(:,:,:)            
    178146#endif 
    179             ! Diagonal, inferior, superior  (including the bottom boundary condition via avt masked) 
     147            ! Diagonal, lower (i), upper (s)  (including the bottom boundary condition since avt is masked) 
    180148            DO jk = 1, jpkm1 
    181149               DO jj = 2, jpjm1 
    182150                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    183                      ze3ta =  ( 1. - znvvl ) +        znvvl   * fse3t_a(ji,jj,jk)   ! after scale factor at T-point 
    184                      ze3tn =         znvvl   + ( 1. - znvvl ) * fse3t_n(ji,jj,jk)   ! now   scale factor at T-point 
     151                     ze3ta =  ( 1. - r_vvl ) +        r_vvl   * fse3t_a(ji,jj,jk)   ! after scale factor at T-point 
     152                     ze3tn =         r_vvl   + ( 1. - r_vvl ) * fse3t_n(ji,jj,jk)   ! now   scale factor at T-point 
    185153                     zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / ( ze3tn * fse3w(ji,jj,jk  ) ) 
    186154                     zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) ) 
     
    189157               END DO 
    190158            END DO 
     159            ! 
     160            !! Matrix inversion from the first level 
     161            !!---------------------------------------------------------------------- 
     162            !   solve m.x = y  where m is a tri diagonal matrix ( jpk*jpk ) 
     163            ! 
     164            !        ( zwd1 zws1   0    0    0  )( zwx1 ) ( zwy1 ) 
     165            !        ( zwi2 zwd2 zws2   0    0  )( zwx2 ) ( zwy2 ) 
     166            !        (  0   zwi3 zwd3 zws3   0  )( zwx3 )=( zwy3 ) 
     167            !        (        ...               )( ...  ) ( ...  ) 
     168            !        (  0    0    0   zwik zwdk )( zwxk ) ( zwyk ) 
     169            ! 
     170            !   m is decomposed in the product of an upper and lower triangular matrix. 
     171            !   The 3 diagonal terms are in 3d arrays: zwd, zws, zwi. 
     172            !   Suffices i,s and d indicate "inferior" (below diagonal), diagonal 
     173            !   and "superior" (above diagonal) components of the tridiagonal system. 
     174            !   The solution will be in the 4d array pta. 
     175            !   The 3d array zwt is used as a work space array. 
     176            !   En route to the solution pta is used a to evaluate the rhs and then  
     177            !   used as a work space array: its value is modified. 
     178            ! 
    191179            ! first recurrence:   Tk = Dk - Ik Sk-1 / Tk-1   (increasing k) 
     180            ! done once for all passive tracers (so included in the IF instruction) 
    192181            DO jj = 2, jpjm1 
    193182               DO ji = fs_2, fs_jpim1 
     
    203192            END DO 
    204193            ! 
    205          ELSE IF( ( cdtype == 'TRA' .AND. jn == jp_sal ) .OR. ( cdtype == 'TRC' .AND. jn == 1 ) ) THEN 
    206 #if defined key_ldfslp 
    207             IF( ln_traldf_grif ) THEN 
    208                DO jk = 2, jpkm1 
    209                   DO jj = 2, jpjm1 
    210                      DO ji = fs_2, fs_jpim1   ! vector opt. 
    211                         zavi = ah_wslp2(ji,jj,jk)                ! vertical mixing coef. due to lateral mixing 
    212                         ! zavi = fsahtw(ji,jj,jk) * wslp2(ji,jj,jk)         ! vertical mixing coef. due to lateral mixing 
    213                         zwt(ji,jj,jk) = fsavs(ji,jj,jk) + zavi              ! zwt=avt+zavi (total vertical mixing coef. on temperature) 
    214                      END DO 
    215                   END DO 
    216                END DO 
    217             ELSE IF( l_traldf_rot ) THEN 
    218                DO jk = 2, jpkm1 
    219                   DO jj = 2, jpjm1 
    220                      DO ji = fs_2, fs_jpim1   ! vector opt. 
    221                         zavi = fsahtw(ji,jj,jk)                       &   ! vertical mixing coef. due to lateral mixing 
    222                            & * (  wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
    223                            &    + wslpj(ji,jj,jk) * wslpj(ji,jj,jk)  ) 
    224                         zwt(ji,jj,jk) = fsavs(ji,jj,jk) + zavi              ! zwt=avt+zavi (total vertical mixing coef. on salinity) 
    225                      END DO 
    226                   END DO 
    227                END DO 
    228             ELSE                         ! no rotation but key_ldfslp defined 
    229                zwt(:,:,:) = fsavs(:,:,:) 
    230             ENDIF 
    231 #else 
    232             ! No isopycnal diffusion 
    233             zwt(:,:,:) = fsavs(:,:,:)            
    234 #endif 
    235             ! Diagonal, inferior, superior  (including the bottom boundary condition via avt masked) 
    236             DO jk = 1, jpkm1 
    237                DO jj = 2, jpjm1 
    238                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    239                      ze3ta =  ( 1. - znvvl ) +        znvvl   * fse3t_a(ji,jj,jk)   ! after scale factor at T-point 
    240                      ze3tn =         znvvl   + ( 1. - znvvl ) * fse3t_n(ji,jj,jk)   ! now   scale factor at T-point 
    241                      zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / ( ze3tn * fse3w(ji,jj,jk  ) ) 
    242                      zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) ) 
    243                      zwd(ji,jj,jk) = ze3ta - zwi(ji,jj,jk) - zws(ji,jj,jk) 
    244                  END DO 
    245                END DO 
    246             END DO 
    247             ! Surface boudary conditions 
    248             DO jj = 2, jpjm1 
    249                DO ji = fs_2, fs_jpim1   ! vector opt. 
    250                  ze3ta = ( 1. - znvvl ) +  znvvl * fse3t_a(ji,jj,1)    ! after scale factor at T-point 
    251                  zwi(ji,jj,1) = 0._wp 
    252                  zwd(ji,jj,1) = ze3ta - zws(ji,jj,1) 
    253                END DO 
    254             END DO 
    255             ! 
    256             ! first recurrence:   Tk = Dk - Ik Sk-1 / Tk-1   (increasing k) 
    257             DO jj = 2, jpjm1 
    258                DO ji = fs_2, fs_jpim1 
    259                   zwt(ji,jj,1) = zwd(ji,jj,1) 
    260                END DO 
    261             END DO 
    262             DO jk = 2, jpkm1 
    263                DO jj = 2, jpjm1 
    264                   DO ji = fs_2, fs_jpim1 
    265                     zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwt(ji,jj,jk-1) 
    266                   END DO 
    267                END DO 
    268             END DO 
    269             ! 
    270194         END IF  
    271  
    272          ! II.1. Vertical diffusion on tracer 
    273          ! --------------------------- 
    274           
     195         !          
    275196         ! second recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    276197         DO jj = 2, jpjm1 
    277198            DO ji = fs_2, fs_jpim1 
    278                ze3tb = ( 1. - znvvl ) + znvvl * fse3t_b(ji,jj,1) 
    279                ze3tn = ( 1. - znvvl ) + znvvl * fse3t(ji,jj,1) 
     199               ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,1) 
     200               ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t(ji,jj,1) 
    280201               pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt(1) * ze3tn * pta(ji,jj,1,jn) 
    281202            END DO 
     
    284205            DO jj = 2, jpjm1 
    285206               DO ji = fs_2, fs_jpim1 
    286                   ze3tb = ( 1. - znvvl ) + znvvl * fse3t_b(ji,jj,jk) 
    287                   ze3tn = ( 1. - znvvl ) + znvvl * fse3t  (ji,jj,jk) 
     207                  ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,jk) 
     208                  ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t  (ji,jj,jk) 
    288209                  zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt(jk) * ze3tn * pta(ji,jj,jk,jn)   ! zrhs=right hand side  
    289210                  pta(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn) 
     
    292213         END DO 
    293214 
    294          ! third recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk 
     215         ! third recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk   (result is the after tracer) 
    295216         DO jj = 2, jpjm1 
    296217            DO ji = fs_2, fs_jpim1 
     
    306227            END DO 
    307228         END DO 
    308          ! 
    309       END DO 
     229         !                                            ! ================= ! 
     230      END DO                                          !  end tracer loop  ! 
     231      !                                               ! ================= ! 
    310232      ! 
    311233      IF(wrk_not_released(3, 1,2))THEN 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/SETTE/README

    r2545 r2678  
    11usage of SETTE package: 
    22 
    3 principal script is sette.sh (usage: ./sette.sh) 
     3principal script is sette.sh (usage: ./sette.sh)  
    44 
    55VERY IMPORTANT : for a verbose debug do: 
     
    1818          set_namelist : to set namelist values  
    1919         (example : to set 75 time steps for one test : namelist nn_itend 75) 
    20          (      : to change cn_icerst_in name : namelist_ice cn_icerst_in  \"test_00101231_restart_icemod.nc\") 
    21          (      : to activate control print : namelist ln_ctl \".false.\" ) 
    22                fcm_job.sh needs input: input_CONFIG_NAME and TOTAL NUMBER OF PROCS used 
    23          (for example if you compile ORCA2_LIM with nproci=2 and nprocj=2 ===> ./fcm_job input_ORCA2_LIM.cfg 4) 
     20         (        : to change cn_icerst_in name : namelist_ice cn_icerst_in  \"test_00101231_restart_icemod\") 
     21         (      : to activate control print : namelist ln_ctl false ) 
     22               fcm_job.sh needs input: input_CONFIG_NAME TOTAL_NUMBER_OF_PROCS_used TEST_NAME 
     23         (for example if you compile ORCA2_LIM with nproci=2 and nprocj=2  
     24         and only run short test ===> ./fcm_job input_ORCA2_LIM.cfg 4 SHORT) 
    2425 in param.cfg : 
    25                EXE_DIR     : directory in which execute jobs (by default CONFIG_DIR) 
    26                FORCING_DIR : directory where to get input tar file 
    27                INPUT_DIR   : directory in which store input files 
    28                TMPDIR      : temporary directory NEEDED ONLY FOR IBM machines (put EXP00 directory) 
    29                OUTPUT_DIR  : directory in which store output files 
     26               EXE_DIR           : directory in which job s executed (by default CONFIG_DIR) 
     27               FORCING_DIR       : directory in which will be found input.tar file (same name in input_CONFIG_NAME.cfg) 
     28               INPUT_DIR         : directory in which store input files 
     29               TMPDIR            : temporary directory NEEDED ONLY FOR IBM machines (put EXP00 directory) 
     30               OUTPUT_DIR        : directory in which store output files 
     31          NEMO_VALIDATION_DIR : directory in which create NEMO_VALIDATION tree, and store restart, solver.stat and ocean.output files in 
     32                            tree NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
    3033 in fcm_job.sh : 
    3134               IMPORTANT : control that name of tar file in FORCING directory 
    3235               is the same of that in input_REF_CONFIG.cfg, if not change one. 
    3336               change in "RUN OPA" part the command line (some examples are already written) 
    34  
     37          TEST_NAME by convention is LONG: 10 days run or SHORT: 5 days run 
     38          so NEMO_VALIDATION tree is coherent, 
     39          but user can choise a TEST_NAME that represent his own test. 
    3540 
    3641NOTE: 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/SETTE/all_functions.sh

    r2583 r2678  
    4949# 
    5050#  $ ./set_namelist.sh namelist          nn_itend        75 
    51 #  $ ./set_namelist.sh namelist_ice_lim2 cn_icerst_in  \"00101231_restart_icemod\" 
     51#  $ ./set_namelist.sh namelist_ice_lim2 cn_icerst_in  \"00101231_restart_ice\" 
    5252# 
    5353# 
     
    8686   fi 
    8787   unset minargcount 
    88    if [  -f ${SETTE_DIR}/output.sette ] ; then 
    89          echo "file output already present. Append comments" 
    90                 echo "`ls ${SETTE_DIR}/output.sette`" 
    91         else 
    92                 echo "file output not present" 
     88   if [  ! -f ${SETTE_DIR}/output.sette ] ; then 
    9389                touch ${SETTE_DIR}/output.sette 
    94                 echo "`ls ${SETTE_DIR}/output.sette`" 
    9590        fi 
    9691 
     
    9994       
    10095   VAR_NAME=$( supergrep $2 ${INPUT_DIR}/$1 ) 
     96   if [ ${#VAR_NAME} -eq 0 ]  
     97   then 
     98      echo "doing \"set_namelist $@\". " 
     99      echo "variable: \"$2\" is empty" 
     100      echo "control that variable $2 is in \"${INPUT_DIR}/$1\" " 
     101      echo "exit" 
     102      echo "error in executing script : set_namelist $@" >> ${SETTE_DIR}/output.sette 
     103      echo "....." >> ${SETTE_DIR}/output.sette 
     104      exit 1 
     105   fi 
    101106        sed -e "s/${VAR_NAME}.*/${VAR_NAME}/" ${INPUT_DIR}/$1 > ${INPUT_DIR}/$1.tmp 
    102107        mv ${INPUT_DIR}/$1.tmp ${INPUT_DIR}/$1 
     
    104109        mv ${INPUT_DIR}/$1.tmp ${INPUT_DIR}/$1 
    105110 
    106    if [  -f ${INPUT_DIR}/$1 ] ; then 
    107          echo "namelist not empty: ok" 
    108         else 
    109       echo "some problems in sed namelist: exit" 
    110       exit 1 
    111         fi 
    112111        echo "finished script : set_namelist $@" >> ${SETTE_DIR}/output.sette 
    113112        echo "++++++++++++++++" >> ${SETTE_DIR}/output.sette 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/SETTE/fcm_job.sh

    r2585 r2678  
    2525# :: 
    2626# 
    27 #  $ ./fcm_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC 
     27#  $ ./fcm_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME 
    2828# 
    2929# 
     
    3434# Simple job for SET TESTS for NEMO (SETTE) 
    3535# 
     36# this job creates tree of validation in NEMO_VALIDATION_DIR as follows :  
     37# 
     38# NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
     39#  
     40# NEMO_VALIDATION_DIR      : is choosen in param.cfg 
     41# 
     42# WCONFIG_NAME       : set by makenemo at the moment of compilation 
     43# 
     44# WCOMPILER_NAME     : set by makenemo at the moment of compilation 
     45# 
     46# TEST_NAME       : convention is LONG=10 days run, SHORT=5 days run 
     47# 
     48# REVISION_NUMBER(or DATE) : revision number by svn info, if problems with svn date is taken 
    3649# 
    3750# EXAMPLES 
     
    4053# :: 
    4154# 
    42 #  $ ./fcm_job.sh INPUT_FILE_CONFIG_NAME       NUMBER_PROC 
    43 # 
    44 #  run a job of config GYRE with 1 processor 
    45 #  $ ./fcm_job.sh input_GYRE.cfg                     1 
    46 # 
    47 #  run a job of config ORCA2_LIM_PISCES with 8 processors 
    48 #  $ ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg         8 
     55#  $ ./fcm_job.sh INPUT_FILE_CONFIG_NAME NUMBER_PROC TEST_NAME 
     56# 
     57#  run a job of config GYRE with 1 processor test REPRODUCTINILITY 
     58#  $ ./fcm_job.sh input_GYRE.cfg 1 SHORT 
     59# 
     60#  run a job of config ORCA2_LIM_PISCES   with 8 processors test RESTARTABILITY 
     61#  $ ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 8 LONG 
    4962# 
    5063# 
     
    6780# 
    6881 
    69 usage=" Usage : ./fcm_job.sh input_CONFIG_NAME.cfg  NUMBER_OF_PROCS" 
    70 usage=" example : ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 8" 
    71  
    72  
    73 minargcount=2 
     82usage=" Usage : ./fcm_job.sh input_CONFIG_NAME.cfg  NUMBER_OF_PROCS TEST_NAME" 
     83usage=" example : ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 8 RUN" 
     84 
     85 
     86minargcount=3 
    7487        if [ ${#} -lt ${minargcount} ] 
    7588        then 
     
    8093        fi 
    8194        unset minargcount 
    82    if [  -f ${SETTE_DIR}/output.sette ] ; then 
    83            echo "file output already present. Append comments" 
    84            echo "`ls ${SETTE_DIR}/output.sette`" 
    85    else 
    86            echo "file output not present" 
     95   if [ ! -f ${SETTE_DIR}/output.sette ] ; then 
    8796           touch ${SETTE_DIR}/output.sette 
    88            echo "`ls ${SETTE_DIR}/output.sette`" 
    8997   fi 
    9098        
     
    96104echo "`more ../CONFIG/${NEW_CONF}/cpp_${NEW_CONF}.fcm`" >> ${SETTE_DIR}/output.sette 
    97105echo "" >> ${SETTE_DIR}/output.sette 
    98 echo "executing script : fcm_job $@" >> ${SETTE_DIR}/output.sette 
     106echo "executing script : \"fcm_job $@\" " >> ${SETTE_DIR}/output.sette 
    99107echo "            " >> ${SETTE_DIR}/output.sette 
    100108 
     
    107115   echo "            " >> ${SETTE_DIR}/output.sette 
    108116   cp ${FORCING_DIR}/${tar_file} ${INPUT_DIR}/. 
    109    cd ${INPUT_DIR} ; tar xvof ${INPUT_DIR}/*.tar ; gunzip -f *gz 
     117   if [ ! -f ${INPUT_DIR}/${tar_file} ] ; then  
     118      echo "PROBLEM during copy of tar file" >> ${SETTE_DIR}/output.sette 
     119      echo "tar file IS NOT present in ${INPUT_DIR} directory " >> ${SETTE_DIR}/output.sette 
     120      echo "            " >> ${SETTE_DIR}/output.sette 
     121      echo "PROBLEM during copy of tar file"  
     122      exit 1 
     123   else   
     124      cd ${INPUT_DIR} ; tar xvof ${INPUT_DIR}/*.tar ; gunzip -f *gz 
     125   fi 
    110126fi  
    111127 
     
    134150    then 
    135151    echo "executable opa does not exist" 
     152    echo "executable opa does not exist, exit"  >> ${SETTE_DIR}/output.sette 
    136153    exit 1 
    137154fi 
     
    165182 
    166183################################################################ 
    167  
    168 ################################################################ 
    169184# SAVE OUTPUT, DEBUG & RESTART FILES 
    170185echo "saving ocean & ice output, debug & restart files" >> ${SETTE_DIR}/output.sette 
     
    174189[ -f *solver.stat ] && mv *solver.stat ${OUTPUT_DIR}/. 
    175190[ -n "$(ls *_grid_*)" ] && mv *_grid_*.nc ${OUTPUT_DIR}/. 
    176 [ -n "$(ls *restart*)" ] && cp *restart*.nc ${OUTPUT_DIR}/. 
     191[ -n "$(ls *_ptrc_*)" ] && mv *_ptrc_*.nc ${OUTPUT_DIR}/. 
     192[ -n "$(ls *_diad_*)" ] && mv *_diad_*.nc ${OUTPUT_DIR}/. 
     193[ -n "`ls *restart*`" ] && cp *restart*.nc ${OUTPUT_DIR}/. 
    177194[ -f ice_evolu ] && mv ice_evolu ${OUTPUT_DIR}/. 
    178 [ -n "$(ls *icemod*)" ] && mv *icemod* ${OUTPUT_DIR}/. 
     195[ -n "`ls *icemod*`" ] && mv *icemod* ${OUTPUT_DIR}/. 
    179196#- Save ftrace file 
    180197[ -f ftrace.out* ] && cp ftrace.out* ${OUTPUT_DIR}/. 
    181198################################################################ 
    182199 
     200################################################################ 
     201# SAVE IN NEMO_VALIDATION tree 
     202export LANG=en_US  
     203cd ${CONFIG_DIR} 
     204cd ../ 
     205REVISION_NB=`svn info | grep -i "Revision:" | sed -e "s/ //" | cut -d ":" -f 2` 
     206if [ ${#REVISION_NB} -eq 0 ] 
     207then 
     208   echo "some problems with svn info command" 
     209   echo "some problems with svn info command" >> ${SETTE_DIR}/output.sette 
     210   ${REVISION_NB}=`date +%Y%m%d` 
     211   echo "put in ${REVISION_NB} date" 
     212   echo "put in ${REVISION_NB} date" >> ${SETTE_DIR}/output.sette 
     213else 
     214echo "value of revision number of NEMOGCM: ${REVISION_NB}" 
     215fi 
     216cd ${NEMO_VALIDATION_DIR} 
     217export TEST_NAME=$3 
     218`mkdir -p ${NEMO_VALIDATION_DIR}/W${NEW_CONF}/${CMP_NAM}/${REVISION_NB}/${TEST_NAME}` 
     219NEMO_VALID=${NEMO_VALIDATION_DIR}/W${NEW_CONF}/${CMP_NAM}/${REVISION_NB}/${TEST_NAME} 
     220if [ -d ${NEMO_VALID} ] ; then 
     221   echo "created ${NEMO_VALID} directory"   >> ${SETTE_DIR}/output.sette 
     222else  
     223   echo "problems in creating ${NEMO_VALID} directory"   >> ${SETTE_DIR}/output.sette 
     224   echo "EXIT," 
     225   exit 1 
     226fi 
     227[ -f ${OUTPUT_DIR}/*ocean.output ] && mv ${OUTPUT_DIR}/*ocean.output ${NEMO_VALID}/. 
     228[ -f ${OUTPUT_DIR}/*solver.stat ] && mv ${OUTPUT_DIR}/*solver.stat ${NEMO_VALID}/. 
     229[ -n "`ls ${OUTPUT_DIR}/*restart*`" ] && mv ${OUTPUT_DIR}/*restart* ${NEMO_VALID}/. 
     230if [ -n "$(ls ${NEMO_VALID}/*solver*)" ] ; then 
     231   echo "moved solver.stat in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     232   echo "moved solver.stat in ${NEMO_VALID} directory"   
     233else 
     234   echo "problem in looking for solver.stat file in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     235   echo "solver.stat IS NOT in ${NEMO_VALID} directory"  
     236fi 
     237if [ -n "$(ls ${NEMO_VALID}/*ocean.output*)" ] ; then 
     238   echo "moved ocean.output in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     239   echo "moved ocean.output in ${NEMO_VALID} directory"  
     240else 
     241   echo "problem in looking for ocean.output file in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     242   echo "ocean.output IS NOT in ${NEMO_VALID} directory"  
     243fi 
     244if [ -n "`ls ${NEMO_VALID}/*restart*`" ] ; then 
     245   echo "moved restart files in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     246   echo "moved restart files in ${NEMO_VALID} directory"  
     247else 
     248   echo "problem in looking for restart files in ${NEMO_VALID} directory"  >> ${SETTE_DIR}/output.sette 
     249   echo "restart files ARE NOT in ${NEMO_VALID} directory"  
     250fi 
     251################################################################ 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/SETTE/param.cfg

    r2563 r2678  
     1#- execution directory  
    12EXE_DIR=${CONFIG_DIR}      
    23#- forcing files storing  
     
    56INPUT_DIR=${CONFIG_DIR}/${NEW_CONF}/EXP00 
    67#- only for IBM 
    7 #- TMPDIR=${CONFIG_DIR}/${NEW_CONF}/EXP00 
     8# TMPDIR=${CONFIG_DIR}/${NEW_CONF}/EXP00 
    89#- output files storing  
    9 OUTPUT_DIR=${CONFIG_DIR}/${NEW_CONF}/EXP00/VALIDATION 
     10OUTPUT_DIR=${CONFIG_DIR}/${NEW_CONF}/EXP00/OUTPUT 
     11#- VALIDATION files storing  
     12NEMO_VALIDATION_DIR=~/NEMO_VALIDATION 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/SETTE/sette.sh

    r2563 r2678  
    4747#   Executing directory (EXE_DIR) 
    4848# 
    49 #   Forcing files storing (FORCING_DIR) 
     49 
    5050# 
    5151#   Input files storing (INPUT_DIR) 
    5252# 
    5353#   Temporary directory (if needed) (TMPDIR) 
    54 # 
    55 #   Output files storing (OUTPUT_DIR) 
     54#  
     55#   Validation directory (NEMO_VALIDATION_DIR) 
    5656# 
    5757#   (note: this file is the same for all configrations to be tested with sette) 
    5858# 
    59 #  all_functions.sh : loads functions used by sette (note: new functions can added here) 
     59#  all_functions.sh : loads functions used by sette (note: new functions can be added here) 
    6060# 
    6161#  set_namelist : function declared in all_functions that set namelist parameters for tests 
     
    6363#  fcm_job.sh  
    6464# 
    65 #   runs job and saves output files (ocean.output, solver.stat, grid_files, restart, ice_evolu, ftrace.out) 
     65#   runs job and saves output files (grid_files, restarts, ice_evolu, ftrace.out) 
     66# 
     67#   and it creates tree of VALIDATION, in which there are restart files, solver.stat and ocean.output 
     68# 
     69#   Tree of VALIDATION is: 
     70# 
     71#   NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
    6672#  
    67 #   (note this job needs to have an input_CONFIG.cfg in which found tar input file) 
     73#   (note this job needs to have an input_CONFIG.cfg in which can be found input tar file) 
    6874# 
    6975#   (note other files can be saved adding at the end of fcm_job list of saved files) 
     
    7177#  NOTE: if job is not launched for some problems you have executable ready in ${CONFIG_NAME}/EXP00 directory 
    7278# 
    73 #  at the end the directory ${CONFIG_NAME}/EXP00/VALIDATION is created 
    74 # 
    75 #  and output files, solver.stat, ocean.output are put in ${CONFIG_NAME}/EXP00/VALIDATION directory 
    76 # 
    77 #  and restart files and changed namelists are leaved in ${CONFIG_NAME}/EXP00 directory 
     79#  NOTE: the changed namelists are leaved in ${CONFIG_NAME}/EXP00 directory 
    7880#  
    7981#  in ${SETTE_DIR} is created output.sette with the echo of commands run 
     
    108110#- 
    109111# 
     112 
    110113SETTE_DIR=/PATH/OF/SETTE 
    111114 
    112 cd ${SETTE_DIR} 
    113 . ../CONFIG/makenemo -m ifort_linux -n GYRE_1_1 -r GYRE 
    114 cd ${SETTE_DIR} 
    115 . param.cfg 
    116 . all_functions.sh 
    117 set_namelist namelist nn_it000 1 
    118 set_namelist namelist nn_itend 75 
    119 cd ${SETTE_DIR} 
    120 . ./fcm_job.sh input_GYRE.cfg 1 
    121  
    122 cd ${SETTE_DIR} 
    123 . ../CONFIG/makenemo -n ORCA2_LIM_1_2 -r ORCA2_LIM add_key "key_mpp_mpi key_nproci=1 key_nprocj=2" 
    124 cd ${SETTE_DIR} 
    125 . param.cfg 
    126 . all_functions.sh 
    127 set_namelist namelist nn_it000 1 
    128 set_namelist namelist nn_itend 75 
    129 cd ${SETTE_DIR} 
    130 . ./fcm_job.sh input_ORCA2_LIM.cfg 2 
    131  
     115## NBTEST=6 
     116## echo "TOTAL NUMBER OF TEST" ${NBTEST} 
     117## for (( config=2; config<=${NBTEST}; config++ )) 
     118 
     119for config in 1 2 3 4 5 6  
     120do 
     121 
     122if [ ${config} -eq 1 ] ;  then 
     123    # Restartability tests for GYRE_LOBSTER 
     124    cd ${SETTE_DIR} 
     125    . ../CONFIG/makenemo -m PW6MONO_VARGAS -n GYRELOB_LONG -r GYRE_LOBSTER del_key "key_diatrc" 
     126    cd ${SETTE_DIR} 
     127    . param.cfg 
     128    . all_functions.sh 
     129    set_namelist namelist cn_exp \"GYRELOB_LONG\" 
     130    set_namelist namelist nn_it000 1 
     131    set_namelist namelist nn_itend 120 
     132    set_namelist namelist nn_stock 60 
     133    set_namelist namelist_top ln_trcrad .false. 
     134    cd ${SETTE_DIR} 
     135    . ./fcm_job.sh input_GYRE.cfg 1 LONG 
     136     
     137    cd ${SETTE_DIR} 
     138    set_namelist namelist cn_exp \"GYRELOB_SHORT\" 
     139    set_namelist namelist nn_it000 61 
     140    set_namelist namelist nn_itend 120 
     141    set_namelist namelist nn_stock 60 
     142    set_namelist namelist ln_rstart .true. 
     143    set_namelist namelist nn_rstctl 2 
     144    set_namelist namelist cn_ocerst_in \"GYRELOB_LONG_00000060_restart\" 
     145    set_namelist namelist_top ln_trcrad .false. 
     146    set_namelist namelist_top ln_rsttr .true. 
     147    set_namelist namelist_top nn_rsttr 2 
     148    set_namelist namelist_top cn_trcrst_in \"GYRELOB_LONG_00000060_restart_trc\" 
     149    cd ${SETTE_DIR} 
     150    . ./fcm_job.sh input_GYRE.cfg 1 SHORT 
     151fi 
     152 
     153if [ ${config} -eq 2 ] ;  then 
     154    # Restartability tests for ORCA2_LIM_PISCES 
     155    cd ${SETTE_DIR} 
     156    . ../CONFIG/makenemo -m PW6MONO_VARGAS -n ORCA2LIMPIS_LONG -r ORCA2_LIM_PISCES del_key "key_dtatrc key_diatrc" 
     157    cd ${SETTE_DIR} 
     158    . param.cfg 
     159    . all_functions.sh 
     160    set_namelist namelist cn_exp \"O2LP_LONG\" 
     161    set_namelist namelist nn_it000 1 
     162    set_namelist namelist nn_itend 150 
     163    set_namelist namelist nn_stock 75 
     164    set_namelist namelist_top ln_trcrad .false. 
     165    # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false 
     166    # if not you need input files, and for tests is not necessary 
     167    set_namelist namelist_pisces ln_pisdmp .false. 
     168    set_namelist namelist_pisces ln_dustfer .false. 
     169    set_namelist namelist_pisces ln_river .false. 
     170    set_namelist namelist_pisces ln_ndepo .false. 
     171    set_namelist namelist_pisces ln_sedinput .false. 
     172    cd ${SETTE_DIR} 
     173    . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 1 LONG 
     174     
     175    cd ${SETTE_DIR} 
     176    . param.cfg 
     177    . all_functions.sh 
     178    set_namelist namelist cn_exp \"O2LP_SHORT\" 
     179    set_namelist namelist nn_it000 76 
     180    set_namelist namelist nn_itend 150 
     181    set_namelist namelist nn_stock 75 
     182    set_namelist namelist ln_rstart .true. 
     183    set_namelist namelist nn_rstctl 2 
     184    set_namelist namelist cn_ocerst_in \"O2LP_LONG_00000075_restart\" 
     185    set_namelist namelist_ice_lim2 cn_icerst_in \"O2LP_LONG_00000075_restart_ice\" 
     186    set_namelist namelist_top ln_trcrad .false. 
     187    set_namelist namelist_top ln_rsttr .true. 
     188    set_namelist namelist_top nn_rsttr 2 
     189    set_namelist namelist_top cn_trcrst_in \"O2LP_LONG_00000075_restart_trc\" 
     190    # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput 
     191    # if not you need input files, and for tests is not necessary 
     192    set_namelist namelist_pisces ln_pisdmp .false. 
     193    set_namelist namelist_pisces ln_dustfer .false. 
     194    set_namelist namelist_pisces ln_river .false. 
     195    set_namelist namelist_pisces ln_ndepo .false. 
     196    set_namelist namelist_pisces ln_sedinput .false. 
     197    cd ${SETTE_DIR} 
     198    . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 1 SHORT 
     199fi 
     200 
     201if [ ${config} -eq 3 ] ;  then 
     202    ## Restartability tests for POMME  
     203    cd ${SETTE_DIR} 
     204    . ../CONFIG/makenemo -m PW6MONO_VARGAS -n POMME_LONG -r POMME 
     205    cd ${SETTE_DIR} 
     206    . param.cfg 
     207    . all_functions.sh 
     208    set_namelist namelist cn_exp \"POMME_LONG\" 
     209    set_namelist namelist nn_it000 1 
     210    set_namelist namelist nn_itend 600 
     211    set_namelist namelist nn_stock 300 
     212    set_namelist namelist nn_write 300 
     213    cd ${SETTE_DIR} 
     214    . ./fcm_job.sh input_POMME.cfg 1 LONG 
     215    cd ${CONFIG_DIR} 
     216    `mv ${NEW_CONF}/EXP00/restart.obc.output ${NEW_CONF}/EXP00/restart.obc` 
     217     
     218    cd ${SETTE_DIR} 
     219    set_namelist namelist cn_exp \"POMME_SHORT\" 
     220    set_namelist namelist nn_it000 301 
     221    set_namelist namelist nn_itend 600 
     222    set_namelist namelist nn_stock 300 
     223    set_namelist namelist ln_rstart .true. 
     224    set_namelist namelist nn_rstctl 2 
     225    set_namelist namelist nn_write 300 
     226    set_namelist namelist cn_ocerst_in \"POMME_LONG_00000300_restart\" 
     227    cd ${SETTE_DIR} 
     228    . ./fcm_job.sh input_POMME.cfg 1 SHORT 
     229fi 
     230 
     231if [ ${config} -eq 4 ] ;  then 
     232    ## Repropducilibity tests for GYRE_LOBSTER 
     233    cd ${SETTE_DIR} 
     234    . ../CONFIG/makenemo -m PW6_VARGAS -n GYRELOB_1_4 -r GYRE_LOBSTER add_key "key_mpp_mpi key_mpp_rep key_nproci=1 key_nprocj=4" del_key "key_vectopt_loop key_diatrc" 
     235    cd ${SETTE_DIR} 
     236    . param.cfg 
     237    . all_functions.sh 
     238    set_namelist namelist nn_it000 1 
     239    set_namelist namelist nn_itend 75 
     240    set_namelist namelist nn_fwb 0 
     241    set_namelist namelist nn_bench 0 
     242    set_namelist namelist ln_ctl .false. 
     243    cd ${SETTE_DIR} 
     244    . ./fcm_job.sh input_GYRE.cfg 4 SHORT 
     245     
     246    cd ${SETTE_DIR} 
     247    . ../CONFIG/makenemo -m PW6_VARGAS -n GYRELOB_2_2 -r GYRE_LOBSTER add_key "key_mpp_rep key_mpp_mpi key_nproci=2 key_nprocj=2" del_key "key_vectopt_loop key_diatrc" 
     248    cd ${SETTE_DIR} 
     249    . param.cfg 
     250    . all_functions.sh 
     251    set_namelist namelist nn_it000 1 
     252    set_namelist namelist nn_itend 75 
     253    set_namelist namelist nn_fwb 0 
     254    set_namelist namelist nn_bench 0 
     255    set_namelist namelist ln_ctl .false. 
     256    cd ${SETTE_DIR} 
     257    . ./fcm_job.sh input_GYRE.cfg 4 SHORT 
     258fi 
     259 
     260if [ ${config} -eq 5 ] ;  then 
     261    ## Repropducilibity tests for ORCA2_LIM_PISCES 
     262    cd ${SETTE_DIR} 
     263    . ../CONFIG/makenemo -m PW6_VARGAS -n ORCA2LIMPIS_4_4 -r ORCA2_LIM_PISCES add_key "key_mpp_mpi key_mpp_rep key_nproci=4 key_nprocj=4" del_key "key_vectopt_loop key_dtatrc key_diatrc"  
     264    cd ${SETTE_DIR} 
     265    . param.cfg 
     266    . all_functions.sh 
     267    set_namelist namelist nn_it000 1 
     268    set_namelist namelist nn_itend 75 
     269    set_namelist namelist nn_fwb 0 
     270    set_namelist namelist nn_bench 0 
     271    set_namelist namelist ln_ctl .false. 
     272    # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false 
     273    # if not you need input files, and for tests is not necessary 
     274    set_namelist namelist_pisces ln_pisdmp .false. 
     275    set_namelist namelist_pisces ln_dustfer .false. 
     276    set_namelist namelist_pisces ln_river .false. 
     277    set_namelist namelist_pisces ln_ndepo .false. 
     278    set_namelist namelist_pisces ln_sedinput .false. 
     279    cd ${SETTE_DIR} 
     280    . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 16 SHORT 
     281 
     282    cd ${SETTE_DIR} 
     283    . ../CONFIG/makenemo -m PW6_VARGAS -n ORCA2LIMPIS_2_8 -r ORCA2_LIM_PISCES add_key "key_mpp_rep key_mpp_mpi key_nproci=2 key_nprocj=8" del_key "key_vectopt_loop key_dtatrc key_diatrc" 
     284    cd ${SETTE_DIR} 
     285    . param.cfg 
     286    . all_functions.sh 
     287    set_namelist namelist nn_it000 1 
     288    set_namelist namelist nn_itend 75 
     289    set_namelist namelist nn_fwb 0 
     290    set_namelist namelist nn_bench 0 
     291    set_namelist namelist ln_ctl .false. 
     292    # put ln_pisdmp, ln_dustfer, ln_river, ln_ndepo, ln_sedinput to false 
     293    # if not you need input files, and for tests is not necessary 
     294    set_namelist namelist_pisces ln_pisdmp .false. 
     295    set_namelist namelist_pisces ln_dustfer .false. 
     296    set_namelist namelist_pisces ln_river .false. 
     297    set_namelist namelist_pisces ln_ndepo .false. 
     298    set_namelist namelist_pisces ln_sedinput .false. 
     299    cd ${SETTE_DIR} 
     300    . ./fcm_job.sh input_ORCA2_LIM_PISCES.cfg 16 SHORT 
     301fi 
     302 
     303if [ ${config} -eq 6 ] ;  then 
     304    ## Reproductibility tests for POMME  
     305    cd ${SETTE_DIR} 
     306    . ../CONFIG/makenemo -m PW6_VARGAS -n POMME_1_4 -r POMME add_key "key_mpp_mpi key_mpp_rep key_nproci=1 key_nprocj=4" 
     307    cd ${SETTE_DIR} 
     308    . param.cfg 
     309    . all_functions.sh 
     310    set_namelist namelist nn_it000 1 
     311    set_namelist namelist nn_itend 300 
     312    set_namelist namelist nn_fwb 0 
     313    set_namelist namelist nn_bench 0 
     314    set_namelist namelist ln_ctl .false. 
     315    cd ${SETTE_DIR} 
     316    . ./fcm_job.sh input_POMME.cfg 4 SHORT 
     317     
     318    cd ${SETTE_DIR} 
     319    . ../CONFIG/makenemo -m PW6_VARGAS -n POMME_2_2 -r POMME add_key "key_mpp_mpi key_mpp_rep key_nproci=2 key_nprocj=2"  
     320    cd ${SETTE_DIR} 
     321    . param.cfg 
     322    . all_functions.sh 
     323    set_namelist namelist nn_it000 1 
     324    set_namelist namelist nn_itend 300 
     325    set_namelist namelist nn_fwb 0 
     326    set_namelist namelist nn_bench 0 
     327    set_namelist namelist ln_ctl .false. 
     328    cd ${SETTE_DIR} 
     329    . ./fcm_job.sh input_POMME.cfg 4 SHORT 
     330fi 
     331 
     332done 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/TOOLS/COMPILE/Fadd_keys.sh

    r2538 r2678  
    6666 for i in ${list_add_key} ; do 
    6767   if [ "$(echo ${i} | grep -c key_nproc )" -ne 0 ] ; then 
    68       sed -e "s/key_nproc[ij]=.* //"  ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm >  ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp 
     68      sed -e "s/key_nproc[ij]=.[0-9]* //"  ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm >  ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp 
    6969            mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp   ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm 
    7070      echo " " 
Note: See TracChangeset for help on using the changeset viewer.