New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7280 for branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC – NEMO

Ignore:
Timestamp:
2016-11-21T11:40:00+01:00 (8 years ago)
Author:
flavoni
Message:

merge CNRS2016 with aerobulk branch

Location:
branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC
Files:
3 deleted
40 edited
5 copied

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r6140 r7280  
    230230 
    231231   SUBROUTINE dia_hsb_rst( kt, cdrw ) 
    232      !!--------------------------------------------------------------------- 
    233      !!                   ***  ROUTINE limdia_rst  *** 
    234      !!                      
    235      !! ** Purpose :   Read or write DIA file in restart file 
    236      !! 
    237      !! ** Method  :   use of IOM library 
    238      !!---------------------------------------------------------------------- 
    239      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
    240      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
    241      ! 
    242      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    243      INTEGER ::   id1          ! local integers 
    244      !!---------------------------------------------------------------------- 
    245      ! 
    246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    247         IF( ln_rstart ) THEN                   !* Read the restart file 
    248            !id1 = iom_varid( numror, 'frc_vol'  , ldstop = .FALSE. ) 
    249            ! 
    250            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    251            IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    252            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    253            CALL iom_get( numror, 'frc_v', frc_v ) 
    254            CALL iom_get( numror, 'frc_t', frc_t ) 
    255            CALL iom_get( numror, 'frc_s', frc_s ) 
    256            IF( ln_linssh ) THEN 
    257               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
    258               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
    259            ENDIF 
    260            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
    261            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini ) 
    262            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini ) 
    263            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 
    264            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 
    265            IF( ln_linssh ) THEN 
    266               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    267               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    268            ENDIF 
    269        ELSE 
    270           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    271           IF(lwp) WRITE(numout,*) ' dia_hsb at initial state ' 
    272           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    273           surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
    274           ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
    275           DO jk = 1, jpk 
    276              ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
    277              e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
    278              hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
    279              sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
    280           END DO 
    281           frc_v = 0._wp                                           ! volume       trend due to forcing 
    282           frc_t = 0._wp                                           ! heat content   -    -   -    -    
    283           frc_s = 0._wp                                           ! salt content   -    -   -    -         
    284           IF( ln_linssh ) THEN 
    285              IF ( ln_isfcav ) THEN 
    286                 DO ji=1,jpi 
    287                    DO jj=1,jpj 
    288                       ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
    289                       ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
    290                    ENDDO 
    291                 ENDDO 
    292              ELSE 
    293                 ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
    294                 ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
    295              END IF 
    296              frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
    297              frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
    298           ENDIF 
    299        ENDIF 
    300  
    301      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    302         !                                   ! ------------------- 
    303         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    304         IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    305         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    306  
    307         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
    308         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
    309         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
    310         IF( ln_linssh ) THEN 
    311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
    312            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
    313         ENDIF 
    314         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
    315         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini ) 
    316         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini ) 
    317         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
    318         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
    319         IF( ln_linssh ) THEN 
    320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    321            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    322         ENDIF 
    323         ! 
    324      ENDIF 
    325      ! 
     232      !!--------------------------------------------------------------------- 
     233      !!                   ***  ROUTINE limdia_rst  *** 
     234      !!                      
     235      !! ** Purpose :   Read or write DIA file in restart file 
     236      !!  
     237      !! ** Method  :   use of IOM library 
     238      !!---------------------------------------------------------------------- 
     239      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
     240      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
     241      ! 
     242      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     243      INTEGER ::   id1          ! local integers 
     244      !!---------------------------------------------------------------------- 
     245      ! 
     246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
     247         IF( ln_rstart ) THEN                   !* Read the restart file 
     248            !id1 = iom_varid( numror, 'frc_vol'  , ldstop = .FALSE. ) 
     249            ! 
     250            IF(lwp) WRITE(numout,*) 
     251            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : read restart at it= ', kt,' date= ', ndastp 
     252            IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     253            CALL iom_get( numror, 'frc_v', frc_v ) 
     254            CALL iom_get( numror, 'frc_t', frc_t ) 
     255            CALL iom_get( numror, 'frc_s', frc_s ) 
     256            IF( ln_linssh ) THEN 
     257               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
     258               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
     259            ENDIF 
     260            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
     261            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini ) 
     262            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini ) 
     263            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 
     264            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 
     265            IF( ln_linssh ) THEN 
     266               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     267               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     268            ENDIF 
     269         ELSE 
     270            IF(lwp) WRITE(numout,*) 
     271            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : no restart, set value at initial state ' 
     272            IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     273            surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
     274            ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
     275            DO jk = 1, jpk 
     276               ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
     277               e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
     278               hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
     279               sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
     280            END DO 
     281            frc_v = 0._wp                                           ! volume       trend due to forcing 
     282            frc_t = 0._wp                                           ! heat content   -    -   -    -    
     283            frc_s = 0._wp                                           ! salt content   -    -   -    -         
     284            IF( ln_linssh ) THEN 
     285               IF( ln_isfcav ) THEN 
     286                  DO ji=1,jpi 
     287                     DO jj=1,jpj 
     288                        ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
     289                        ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
     290                     END DO 
     291                  END DO 
     292               ELSE 
     293                  ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
     294                  ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
     295               END IF 
     296               frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
     297               frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
     298            ENDIF 
     299         ENDIF 
     300         ! 
     301      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
     302         !                                   ! ------------------- 
     303         IF(lwp) WRITE(numout,*) 
     304         IF(lwp) WRITE(numout,*) '   dia_hsb_rst : write restart at it= ', kt,' date= ', ndastp 
     305         IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     306 
     307         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
     308         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
     309         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
     310         IF( ln_linssh ) THEN 
     311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
     312            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
     313         ENDIF 
     314         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
     315         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini ) 
     316         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini ) 
     317         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
     318         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
     319         IF( ln_linssh ) THEN 
     320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     321            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     322         ENDIF 
     323         ! 
     324      ENDIF 
     325      ! 
    326326   END SUBROUTINE dia_hsb_rst 
    327327 
     
    342342      INTEGER ::   ierror   ! local integer 
    343343      INTEGER ::   ios 
    344       ! 
     344      !! 
    345345      NAMELIST/namhsb/ ln_diahsb 
    346346      !!---------------------------------------------------------------------- 
    347  
    348       IF(lwp) THEN 
    349          WRITE(numout,*) 
    350          WRITE(numout,*) 'dia_hsb_init : check the heat and salt budgets' 
    351          WRITE(numout,*) '~~~~~~~~ ' 
    352       ENDIF 
    353  
     347      ! 
    354348      REWIND( numnam_ref )              ! Namelist namhsb in reference namelist 
    355349      READ  ( numnam_ref, namhsb, IOSTAT = ios, ERR = 901) 
     
    368362         WRITE(numout,*) '   Namelist namhsb : set hsb parameters' 
    369363         WRITE(numout,*) '      Switch for hsb diagnostic (T) or not (F)  ln_diahsb  = ', ln_diahsb 
    370          WRITE(numout,*) 
    371364      ENDIF 
    372365 
    373366      IF( .NOT. ln_diahsb )   RETURN 
    374          !      IF( .NOT. lk_mpp_rep ) & 
    375          !        CALL ctl_stop (' Your global mpp_sum if performed in single precision - 64 bits -', & 
    376          !             &         ' whereas the global sum to be precise must be done in double precision ',& 
    377          !             &         ' please add key_mpp_rep') 
    378367 
    379368      ! ------------------- ! 
     
    383372         &      e3t_ini(jpi,jpj,jpk), surf(jpi,jpj),  ssh_ini(jpi,jpj), STAT=ierror  ) 
    384373      IF( ierror > 0 ) THEN 
    385          CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' )   ;   RETURN 
     374         CALL ctl_stop( 'dia_hsb_init: unable to allocate hc_loc_ini' )   ;   RETURN 
    386375      ENDIF 
    387376 
    388377      IF( ln_linssh )   ALLOCATE( ssh_hc_loc_ini(jpi,jpj), ssh_sc_loc_ini(jpi,jpj),STAT=ierror ) 
    389378      IF( ierror > 0 ) THEN 
    390          CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' )   ;   RETURN 
     379         CALL ctl_stop( 'dia_hsb_init: unable to allocate hc_loc_ini' )   ;   RETURN 
    391380      ENDIF 
    392381 
     
    394383      ! 2 - Time independant variables and file opening ! 
    395384      ! ----------------------------------------------- ! 
    396       IF(lwp) WRITE(numout,*) "dia_hsb: heat salt volume budgets activated" 
    397       IF(lwp) WRITE(numout,*) '~~~~~~~' 
     385      IF(lwp) WRITE(numout,*) 
     386      IF(lwp) WRITE(numout,*) "   heat salt volume budgets activated" 
    398387      surf(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:)      ! masked surface grid cell area 
    399388      surf_tot  = glob_sum( surf(:,:) )                                       ! total ocean surface area 
    400389 
    401       IF( lk_bdy ) CALL ctl_warn( 'dia_hsb does not take open boundary fluxes into account' )          
     390      IF( lk_bdy ) CALL ctl_warn( 'dia_hsb_init: heat/salt budget does not consider open boundary fluxes' )          
    402391      ! 
    403392      ! ---------------------------------- ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIU/cool_skin.F90

    r7278 r7280  
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!   diurnal_sst_coolskin_step  : time-step the cool skin corrections 
     12   !!   diurnal_sst_coolskin_init : initialisation of the cool skin 
     13   !!   diurnal_sst_coolskin_step : time-stepping  of the cool skin corrections 
    1314   !!---------------------------------------------------------------------- 
    1415   USE par_kind 
     
    2122    
    2223   IMPLICIT NONE 
    23     
     24   PRIVATE 
     25 
    2426   ! Namelist parameters 
    2527 
     
    3739   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: x_csthick   ! Cool skin thickness 
    3840 
    39    PRIVATE 
    4041   PUBLIC diurnal_sst_coolskin_step, diurnal_sst_coolskin_init 
    4142 
    4243      !! * Substitutions 
    4344#  include "vectopt_loop_substitute.h90" 
    44     
     45   !!---------------------------------------------------------------------- 
     46   !! NEMO/OPA 4.0 , NEMO-consortium (2016)  
     47   !! $Id:  $ 
     48   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     49   !!----------------------------------------------------------------------    
    4550   CONTAINS  
    4651    
     
    5661      !!  
    5762      !!---------------------------------------------------------------------- 
    58        
    59       IMPLICIT NONE 
    60        
    6163      ALLOCATE( x_csdsst(jpi,jpj), x_csthick(jpi,jpj) ) 
    6264      x_csdsst = 0. 
    6365      x_csthick = 0. 
    64        
     66      ! 
    6567   END SUBROUTINE diurnal_sst_coolskin_init 
    66   
     68 
     69 
    6770   SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, rdt) 
    6871      !!---------------------------------------------------------------------- 
     
    7578      !! ** Reference :  
    7679      !!---------------------------------------------------------------------- 
    77       
    78       IMPLICIT NONE 
    79       
    8080      ! Dummy variables 
    8181      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psqflux     ! Heat (non-solar)(Watts) 
     
    9494      
    9595      INTEGER :: ji,jj 
    96       
    97       IF ( .NOT. ln_blk_core ) THEN 
    98          CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented"//& 
    99          &             " for core bulk forcing") 
    100       ENDIF 
    101   
     96      !!---------------------------------------------------------------------- 
     97      ! 
     98      IF( .NOT. ln_blk )   CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented for bulk forcing") 
     99      ! 
    102100      DO jj = 1,jpj 
    103101         DO ji = 1,jpi 
    104              
     102            ! 
    105103            ! Calcualte wind speed from wind stress and friction velocity 
    106104            IF( tmask(ji,jj,1) == 1. .AND. pstauflux(ji,jj) /= 0 .AND. psrho(ji,jj) /=0 ) THEN 
     
    111109               z_wspd(ji,jj) = 0.      
    112110            ENDIF 
    113  
    114   
     111            ! 
    115112            ! Calculate gamma function which is dependent upon wind speed 
    116113            IF( tmask(ji,jj,1) == 1. ) THEN 
     
    119116               IF( ( z_wspd(ji,jj) >= 10. ) ) z_gamma(ji,jj) = 6. 
    120117            ENDIF 
    121  
    122  
     118            ! 
    123119            ! Calculate lamda function 
    124120            IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 ) THEN 
     
    127123               z_lamda(ji,jj) = 0. 
    128124            ENDIF 
    129  
    130  
    131  
     125            ! 
    132126            ! Calculate the cool skin thickness - only when heat flux is out of the ocean 
    133127            IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 .AND. psqflux(ji,jj) < 0 ) THEN 
    134                 x_csthick(ji,jj) = ( z_lamda(ji,jj) * pp_v ) / z_fv(ji,jj) 
     128               x_csthick(ji,jj) = ( z_lamda(ji,jj) * pp_v ) / z_fv(ji,jj) 
    135129            ELSE 
    136                 x_csthick(ji,jj) = 0. 
     130               x_csthick(ji,jj) = 0. 
    137131            ENDIF 
    138  
    139  
    140  
     132            ! 
    141133            ! Calculate the cool skin correction - only when the heat flux is out of the ocean 
    142134            IF( tmask(ji,jj,1) == 1. .AND. x_csthick(ji,jj) /= 0. .AND. psqflux(ji,jj) < 0. ) THEN 
     
    145137               x_csdsst(ji,jj) = 0. 
    146138            ENDIF 
    147  
    148          ENDDO 
    149       ENDDO 
    150  
     139            ! 
     140         END DO 
     141      END DO 
     142      ! 
    151143   END SUBROUTINE diurnal_sst_coolskin_step 
    152144 
    153  
     145   !!====================================================================== 
    154146END MODULE cool_skin 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIU/step_diu.F90

    r6017 r7280  
    6464      
    6565      ! Cool skin 
    66       IF ( .NOT.ln_diurnal ) CALL ctl_stop(  "stp_diurnal: ln_diurnal not set" ) 
     66      IF( .NOT.ln_diurnal )   CALL ctl_stop( "stp_diurnal: ln_diurnal not set" ) 
    6767          
    68       IF ( .NOT. ln_blk_core ) THEN 
    69          CALL ctl_stop("step.f90: diurnal flux processing only implemented"//& 
    70          &             " for core forcing")  
    71       ENDIF 
     68      IF( .NOT. ln_blk    )   CALL ctl_stop( "stp_diurnal: diurnal flux processing only implemented for bulk forcing" )  
    7269 
    7370      CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r7277 r7280  
    5353      LOGICAL, INTENT(in), OPTIONAL ::   ld_tradmp   ! force the initialization when tradp is used 
    5454      ! 
    55       INTEGER ::   ierr0, ierr1, ierr2, ierr3   ! temporary integers 
    56       ! 
     55      INTEGER ::   ios, ierr0, ierr1, ierr2, ierr3   ! local integers 
     56      !! 
    5757      CHARACTER(len=100)            ::   cn_dir          ! Root directory for location of ssr files 
    5858      TYPE(FLD_N), DIMENSION( jpts) ::   slf_i           ! array of namelist informations on the fields to read 
     
    6060      !! 
    6161      NAMELIST/namtsd/   ln_tsd_init, ln_tsd_tradmp, cn_dir, sn_tem, sn_sal 
    62       INTEGER  ::   ios 
    6362      !!---------------------------------------------------------------------- 
    6463      ! 
     
    117116         !                         ! fill sf_tsd with sn_tem & sn_sal and control print 
    118117         slf_i(jp_tem) = sn_tem   ;   slf_i(jp_sal) = sn_sal 
    119          CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd' ) 
     118         CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd', no_print ) 
    120119         ! 
    121120      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90

    r7277 r7280  
    104104 
    105105      IF(lwp) WRITE(numout,*) 
    106       IF(lwp) WRITE(numout,*) ' phy_cst : initialization of physical constants' 
    107       IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
     106      IF(lwp) WRITE(numout,*) 'phy_cst : initialization of ocean parameters and constants' 
     107      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    108108 
    109109      ! Define & print constants 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90

    r6140 r7280  
    106106         WRITE(numout,*) 
    107107         WRITE(numout,*) 'dyn_adv_init : choice/control of the momentum advection scheme' 
    108          WRITE(numout,*) '~~~~~~~~~~~' 
    109          WRITE(numout,*) '       Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 
    110          WRITE(numout,*) '          Vector/flux form (T/F)                           ln_dynadv_vec  = ', ln_dynadv_vec 
    111          WRITE(numout,*) '          = 0 standard scheme  ; =1 Hollingsworth scheme   nn_dynkeg      = ', nn_dynkeg 
    112          WRITE(numout,*) '          2nd order centred advection scheme               ln_dynadv_cen2 = ', ln_dynadv_cen2 
    113          WRITE(numout,*) '          3rd order UBS advection scheme                   ln_dynadv_ubs  = ', ln_dynadv_ubs 
    114          WRITE(numout,*) '          Sub timestepping of vertical advection           ln_dynzad_zts  = ', ln_dynzad_zts 
     108         WRITE(numout,*) '~~~~~~~~~~~~' 
     109         WRITE(numout,*) '   Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 
     110         WRITE(numout,*) '      Vector/flux form (T/F)                           ln_dynadv_vec  = ', ln_dynadv_vec 
     111         WRITE(numout,*) '      = 0 standard scheme  ; =1 Hollingsworth scheme   nn_dynkeg      = ', nn_dynkeg 
     112         WRITE(numout,*) '      2nd order centred advection scheme               ln_dynadv_cen2 = ', ln_dynadv_cen2 
     113         WRITE(numout,*) '      3rd order UBS advection scheme                   ln_dynadv_ubs  = ', ln_dynadv_ubs 
     114         WRITE(numout,*) '      Sub timestepping of vertical advection           ln_dynzad_zts  = ', ln_dynzad_zts 
    115115      ENDIF 
    116116 
     
    134134      IF(lwp) THEN                    ! Print the choice 
    135135         WRITE(numout,*) 
    136          IF( nadv ==  0 )   WRITE(numout,*) '         vector form : keg + zad + vor is used'  
    137          IF( nadv ==  1 )   WRITE(numout,*) '         vector form : keg + zad_zts + vor is used' 
     136         IF( nadv ==  0 )   WRITE(numout,*) '      ===>>   vector form : keg + zad + vor is used'  
     137         IF( nadv ==  1 )   WRITE(numout,*) '      ===>>   vector form : keg + zad_zts + vor is used' 
    138138         IF( nadv ==  0 .OR. nadv ==  1 ) THEN 
    139             IF( nn_dynkeg == nkeg_C2  )   WRITE(numout,*) 'with Centered standard keg scheme' 
    140             IF( nn_dynkeg == nkeg_HW  )   WRITE(numout,*) 'with Hollingsworth keg scheme' 
     139            IF( nn_dynkeg == nkeg_C2  )   WRITE(numout,*) '              with Centered standard keg scheme' 
     140            IF( nn_dynkeg == nkeg_HW  )   WRITE(numout,*) '              with Hollingsworth keg scheme' 
    141141         ENDIF 
    142          IF( nadv ==  2 )   WRITE(numout,*) '         flux form   : 2nd order scheme is used' 
    143          IF( nadv ==  3 )   WRITE(numout,*) '         flux form   : UBS       scheme is used' 
     142         IF( nadv ==  2 )   WRITE(numout,*) '      ===>>   flux form   : 2nd order scheme is used' 
     143         IF( nadv ==  3 )   WRITE(numout,*) '      ===>>   flux form   : UBS       scheme is used' 
    144144      ENDIF 
    145145      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r6140 r7280  
    110110         WRITE(numout,*) 
    111111         WRITE(numout,*) 'dyn_ldf_init : Choice of the lateral diffusive operator on dynamics' 
    112          WRITE(numout,*) '~~~~~~~~~~~' 
    113          WRITE(numout,*) '       Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 
    114          WRITE(numout,*) '          laplacian operator          ln_dynldf_lap = ', ln_dynldf_lap 
    115          WRITE(numout,*) '          bilaplacian operator        ln_dynldf_blp = ', ln_dynldf_blp 
    116          WRITE(numout,*) '          iso-level                   ln_dynldf_lev = ', ln_dynldf_lev 
    117          WRITE(numout,*) '          horizontal (geopotential)   ln_dynldf_hor = ', ln_dynldf_hor 
    118          WRITE(numout,*) '          iso-neutral                 ln_dynldf_iso = ', ln_dynldf_iso 
     112         WRITE(numout,*) '~~~~~~~~~~~~' 
     113         WRITE(numout,*) '   Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 
     114         WRITE(numout,*) '      laplacian operator          ln_dynldf_lap = ', ln_dynldf_lap 
     115         WRITE(numout,*) '      bilaplacian operator        ln_dynldf_blp = ', ln_dynldf_blp 
     116         WRITE(numout,*) '      iso-level                   ln_dynldf_lev = ', ln_dynldf_lev 
     117         WRITE(numout,*) '      horizontal (geopotential)   ln_dynldf_hor = ', ln_dynldf_hor 
     118         WRITE(numout,*) '      iso-neutral                 ln_dynldf_iso = ', ln_dynldf_iso 
    119119      ENDIF 
    120120      !                                   ! use of lateral operator or not 
     
    180180      IF(lwp) THEN 
    181181         WRITE(numout,*) 
    182          IF( nldf == np_no_ldf )   WRITE(numout,*) '              NO lateral viscosity' 
    183          IF( nldf == np_lap    )   WRITE(numout,*) '              iso-level laplacian operator' 
    184          IF( nldf == np_lap_i  )   WRITE(numout,*) '              rotated laplacian operator with iso-level background' 
    185          IF( nldf == np_blp    )   WRITE(numout,*) '              iso-level bi-laplacian operator' 
     182         IF( nldf == np_no_ldf )   WRITE(numout,*) '      ===>>   NO lateral viscosity' 
     183         IF( nldf == np_lap    )   WRITE(numout,*) '      ===>>   iso-level laplacian operator' 
     184         IF( nldf == np_lap_i  )   WRITE(numout,*) '      ===>>   rotated laplacian operator with iso-level background' 
     185         IF( nldf == np_blp    )   WRITE(numout,*) '      ===>>   iso-level bi-laplacian operator' 
    186186      ENDIF 
    187187      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r6140 r7280  
    216216      IF(lwp) THEN 
    217217         WRITE(numout,*) 
    218          IF( nspg == np_EXP )   WRITE(numout,*) '     explicit free surface' 
    219          IF( nspg == np_TS  )   WRITE(numout,*) '     free surface with time splitting scheme' 
    220          IF( nspg == np_NO  )   WRITE(numout,*) '     No surface surface pressure gradient trend in momentum Eqs.' 
     218         IF( nspg == np_EXP )   WRITE(numout,*) '      ===>>   explicit free surface' 
     219         IF( nspg == np_TS  )   WRITE(numout,*) '      ===>>   free surface with time splitting scheme' 
     220         IF( nspg == np_NO  )   WRITE(numout,*) '      ===>>   No surface surface pressure gradient trend in momentum Eqs.' 
    221221      ENDIF 
    222222      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r7277 r7280  
    626626         WRITE(numout,*) 'dyn_vor_init : vorticity term : read namelist and control the consistency' 
    627627         WRITE(numout,*) '~~~~~~~~~~~~' 
    628          WRITE(numout,*) '        Namelist namdyn_vor : choice of the vorticity term scheme' 
    629          WRITE(numout,*) '           energy    conserving scheme                    ln_dynvor_ene = ', ln_dynvor_ene 
    630          WRITE(numout,*) '           enstrophy conserving scheme                    ln_dynvor_ens = ', ln_dynvor_ens 
    631          WRITE(numout,*) '           mixed enstrophy/energy conserving scheme       ln_dynvor_mix = ', ln_dynvor_mix 
    632          WRITE(numout,*) '           enstrophy and energy conserving scheme         ln_dynvor_een = ', ln_dynvor_een 
    633          WRITE(numout,*) '              e3f = averaging /4 (=0) or /sum(tmask) (=1)    nn_een_e3f = ', nn_een_e3f 
    634          WRITE(numout,*) '           masked (=T) or unmasked(=F) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
     628         WRITE(numout,*) '   Namelist namdyn_vor : choice of the vorticity term scheme' 
     629         WRITE(numout,*) '      energy    conserving scheme                    ln_dynvor_ene = ', ln_dynvor_ene 
     630         WRITE(numout,*) '      enstrophy conserving scheme                    ln_dynvor_ens = ', ln_dynvor_ens 
     631         WRITE(numout,*) '      mixed enstrophy/energy conserving scheme       ln_dynvor_mix = ', ln_dynvor_mix 
     632         WRITE(numout,*) '      enstrophy and energy conserving scheme         ln_dynvor_een = ', ln_dynvor_een 
     633         WRITE(numout,*) '         e3f = averaging /4 (=0) or /sum(tmask) (=1)    nn_een_e3f = ', nn_een_e3f 
     634         WRITE(numout,*) '      masked (=T) or unmasked(=F) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
    635635      ENDIF 
    636636 
     
    639639      ! at angles with three ocean points and one land point 
    640640      IF(lwp) WRITE(numout,*) 
    641       IF(lwp) WRITE(numout,*) '           namlbc: change fmask value in the angles (T)   ln_vorlat = ', ln_vorlat 
     641      IF(lwp) WRITE(numout,*) '      change fmask value in the angles (T)           ln_vorlat = ', ln_vorlat 
    642642      IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix ) ) THEN 
    643643         DO jk = 1, jpk 
     
    666666      ncor = np_COR 
    667667      IF( ln_dynadv_vec ) THEN      
    668          IF(lwp) WRITE(numout,*) '         Vector form advection : vorticity = Coriolis + relative vorticity' 
     668         IF(lwp) WRITE(numout,*) '      ===>>   Vector form advection : vorticity = Coriolis + relative vorticity' 
    669669         nrvm = np_RVO        ! relative vorticity 
    670670         ntot = np_CRV        ! relative + planetary vorticity 
    671671      ELSE                         
    672          IF(lwp) WRITE(numout,*) '         Flux form advection   : vorticity = Coriolis + metric term' 
     672         IF(lwp) WRITE(numout,*) '      ===>>   Flux form advection   : vorticity = Coriolis + metric term' 
    673673         nrvm = np_MET        ! metric term 
    674674         ntot = np_CME        ! Coriolis + metric term 
     
    677677      IF(lwp) THEN                   ! Print the choice 
    678678         WRITE(numout,*) 
    679          IF( nvor_scheme ==  np_ENE )   WRITE(numout,*) '         vorticity scheme ==>> energy conserving scheme' 
    680          IF( nvor_scheme ==  np_ENS )   WRITE(numout,*) '         vorticity scheme ==>> enstrophy conserving scheme' 
    681          IF( nvor_scheme ==  np_MIX )   WRITE(numout,*) '         vorticity scheme ==>> mixed enstrophy/energy conserving scheme' 
    682          IF( nvor_scheme ==  np_EEN )   WRITE(numout,*) '         vorticity scheme ==>> energy and enstrophy conserving scheme' 
     679         IF( nvor_scheme ==  np_ENE )   WRITE(numout,*) '      ===>>  energy conserving scheme' 
     680         IF( nvor_scheme ==  np_ENS )   WRITE(numout,*) '      ===>>  enstrophy conserving scheme' 
     681         IF( nvor_scheme ==  np_MIX )   WRITE(numout,*) '      ===>>  mixed enstrophy/energy conserving scheme' 
     682         IF( nvor_scheme ==  np_EEN )   WRITE(numout,*) '      ===>>  energy and enstrophy conserving scheme' 
    683683      ENDIF 
    684684      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    r6140 r7280  
    119119         WRITE(numout,*) 'dyn_zdf_init : vertical dynamics physics scheme' 
    120120         WRITE(numout,*) '~~~~~~~~~~~' 
    121          IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    122          IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
     121         IF( nzdf ==  0 )   WRITE(numout,*) '      ===>>   Explicit time-splitting scheme' 
     122         IF( nzdf ==  1 )   WRITE(numout,*) '      ===>>   Implicit (euler backward) scheme' 
    123123      ENDIF 
    124124      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90

    r7277 r7280  
    7575         WRITE(numout,*) 
    7676         WRITE(numout,*) 'wad_init : Wetting and drying initialization through namelist read' 
    77          WRITE(numout,*) '~~~~~~~ ' 
     77         WRITE(numout,*) '~~~~~~~~' 
    7878         WRITE(numout,*) '   Namelist namwad' 
    7979         WRITE(numout,*) '      Logical activation                 ln_wd      = ', ln_wd 
     
    268268      REAL(wp) ::   ztmp                ! local scalars 
    269269      REAL(wp), POINTER,  DIMENSION(:,:) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters 
    270       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! 2D workspace 
    271       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! 2D workspace 
     270      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace 
     271      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace 
    272272      !!---------------------------------------------------------------------- 
    273273      ! 
     
    390390      ! 
    391391   END SUBROUTINE wad_lmt_bt 
    392     
     392 
    393393   !!============================================================================== 
    394394END MODULE wet_dry 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90

    r5215 r7280  
    372372      IF(lwp) THEN 
    373373         WRITE(numout,*) 
    374          WRITE(numout,*) 'icbini :   AGRIF is not compatible with namelist namberg :  ' 
    375          WRITE(numout,*) '         definition of rn_initial_mass(nclasses) with nclasses as PARAMETER ' 
    376          WRITE(numout,*) ' namelist namberg not read' 
     374         WRITE(numout,*) 'icbini : AGRIF is not compatible with namelist namberg :  ' 
     375         WRITE(numout,*) '~~~~~~   definition of rn_initial_mass(nclasses) with nclasses as PARAMETER ' 
     376         WRITE(numout,*) '         ==>>>   force  NO icebergs used. The namelist namberg is not read' 
    377377      ENDIF 
    378378      ln_icebergs = .false.       
     
    381381         IF(lwp) THEN 
    382382            WRITE(numout,*) 
    383             WRITE(numout,*) 'icbini :   Namelist namberg ln_icebergs = F , NO icebergs used' 
    384             WRITE(numout,*) '~~~~~~~~ ' 
     383            WRITE(numout,*) 'icbini : Namelist namberg ln_icebergs = F , NO icebergs used' 
     384            WRITE(numout,*) '~~~~~~ ' 
    385385         ENDIF 
    386386         RETURN 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r7277 r7280  
    1717   IMPLICIT NONE 
    1818   PUBLIC 
    19   
     19 
    2020   !!---------------------------------------------------------------------- 
    2121   !!                   namrun namelist parameters 
     
    9595   !!                    output monitoring 
    9696   !!---------------------------------------------------------------------- 
    97    LOGICAL ::   ln_ctl       !: run control for debugging 
    98    INTEGER ::   nn_timing    !: run control for timing 
    99    INTEGER ::   nn_diacfl    !: flag whether to create CFL diagnostics 
    100    INTEGER ::   nn_print     !: level of print (0 no print) 
    101    INTEGER ::   nn_ictls     !: Start i indice for the SUM control 
    102    INTEGER ::   nn_ictle     !: End   i indice for the SUM control 
    103    INTEGER ::   nn_jctls     !: Start j indice for the SUM control 
    104    INTEGER ::   nn_jctle     !: End   j indice for the SUM control 
    105    INTEGER ::   nn_isplt     !: number of processors following i 
    106    INTEGER ::   nn_jsplt     !: number of processors following j 
    107    INTEGER ::   nn_bit_cmp   =    0    !: bit reproducibility (0/1) 
    108  
     97   LOGICAL ::   ln_ctl           !: run control for debugging 
     98   INTEGER ::   nn_timing        !: run control for timing 
     99   INTEGER ::   nn_diacfl        !: flag whether to create CFL diagnostics 
     100   INTEGER ::   nn_print         !: level of print (0 no print) 
     101   INTEGER ::   nn_ictls         !: Start i indice for the SUM control 
     102   INTEGER ::   nn_ictle         !: End   i indice for the SUM control 
     103   INTEGER ::   nn_jctls         !: Start j indice for the SUM control 
     104   INTEGER ::   nn_jctle         !: End   j indice for the SUM control 
     105   INTEGER ::   nn_isplt         !: number of processors following i 
     106   INTEGER ::   nn_jsplt         !: number of processors following j 
     107   INTEGER ::   nn_bench         !: benchmark parameter (0/1) 
     108   INTEGER ::   nn_bit_cmp = 0   !: bit reproducibility  (0/1) 
    109109   !                                           
    110110   INTEGER ::   nprint, nictls, nictle, njctls, njctle, isplt, jsplt    !: OLD namelist names 
     
    137137   !!                          Run control   
    138138   !!---------------------------------------------------------------------- 
     139   INTEGER       ::   no_print = 0          !: optional argument of fld_fill (if present, suppress some control print) 
    139140   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run) 
    140141   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r7278 r7280  
    43034303            WRITE(kout,*) 
    43044304         ENDIF 
     4305         CALL FLUSH(kout)  
    43054306         STOP 'ctl_opn bad opening' 
    43064307      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90

    r7278 r7280  
    6565         WRITE(numout,*) 
    6666         WRITE(numout,*) 'mpp_init(2) : NO massively parallel processing' 
    67          WRITE(numout,*) '~~~~~~~~~~~: ' 
     67         WRITE(numout,*) '~~~~~~~~~~~ ' 
    6868         WRITE(numout,*) '         nperio = ', nperio 
    6969         WRITE(numout,*) '         npolj  = ', npolj 
     
    265265       
    266266      IF(lwp) WRITE(numout,*) 
    267       IF(lwp) WRITE(numout,*) ' mpp_init: defines mpp subdomains' 
    268       IF(lwp) WRITE(numout,*) ' ~~~~~~  ----------------------' 
    269       IF(lwp) WRITE(numout,*) 
    270       IF(lwp) WRITE(numout,*) 'iresti=',iresti,' irestj=',irestj 
    271       IF(lwp) WRITE(numout,*) 
    272       IF(lwp) WRITE(numout,*) 'jpni=',jpni,' jpnj=',jpnj 
     267      IF(lwp) WRITE(numout,*) '   defines mpp subdomains' 
     268      IF(lwp) WRITE(numout,*) '      jpni=', jpni, ' iresti=', iresti 
     269      IF(lwp) WRITE(numout,*) '      jpnj=', jpnj, ' irestj=', irestj 
    273270      zidom = nreci 
    274271      DO ji = 1, jpni 
     
    276273      END DO 
    277274      IF(lwp) WRITE(numout,*) 
    278       IF(lwp) WRITE(numout,*)' sum ilcit(i,1)=', zidom, ' jpiglo=', jpiglo 
     275      IF(lwp) WRITE(numout,*)'      sum ilcit(i,1)=', zidom, ' jpiglo=', jpiglo 
    279276 
    280277      zjdom = nrecj 
     
    282279         zjdom = zjdom + ilcjt(1,jj) - nrecj 
    283280      END DO 
    284       IF(lwp) WRITE(numout,*)' sum ilcit(1,j)=', zjdom, ' jpjglo=', jpjglo 
    285       IF(lwp) WRITE(numout,*) 
     281      IF(lwp) WRITE(numout,*)'      sum ilcit(1,j)=', zjdom, ' jpjglo=', jpjglo 
    286282 
    287283      IF(lwp) THEN 
     
    360356      njmpp  = njmppt(narea)   
    361357 
    362      ! Save processor layout in layout.dat file  
    363        IF (lwp) THEN 
    364         CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
    365         WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
    366         WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
    367         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimpp njmpp' 
    368  
    369         DO jn = 1, jpnij 
    370          WRITE(inum,'(9i5)') jn, nlcit(jn), nlcjt(jn), & 
    371                                       nldit(jn), nldjt(jn), & 
    372                                       nleit(jn), nlejt(jn), & 
    373                                       nimppt(jn), njmppt(jn) 
    374         END DO 
    375         CLOSE(inum)    
     358      ! Save processor layout in layout.dat file  
     359      IF(lwp) THEN 
     360         CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
     361         WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
     362         WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
     363         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimpp njmpp' 
     364         ! 
     365         DO jn = 1, jpnij 
     366            WRITE(inum,'(9i5)') jn, nlcit(jn), nlcjt(jn), & 
     367               &                    nldit(jn), nldjt(jn), & 
     368               &                    nleit(jn), nlejt(jn), & 
     369               &                    nimppt(jn), njmppt(jn) 
     370         END DO 
     371         CLOSE(inum)    
    376372      END IF 
    377  
    378373 
    379374      ! w a r n i n g  narea (zone) /= nproc (processors)! 
     
    428423 
    429424      IF(lwp) THEN 
    430          WRITE(numout,*) ' nproc  = ', nproc 
    431          WRITE(numout,*) ' nowe   = ', nowe  , ' noea   =  ', noea 
    432          WRITE(numout,*) ' nono   = ', nono  , ' noso   =  ', noso 
    433          WRITE(numout,*) ' nbondi = ', nbondi 
    434          WRITE(numout,*) ' nbondj = ', nbondj 
    435          WRITE(numout,*) ' npolj  = ', npolj 
    436          WRITE(numout,*) ' nperio = ', nperio 
    437          WRITE(numout,*) ' nlci   = ', nlci 
    438          WRITE(numout,*) ' nlcj   = ', nlcj 
    439          WRITE(numout,*) ' nimpp  = ', nimpp 
    440          WRITE(numout,*) ' njmpp  = ', njmpp 
    441          WRITE(numout,*) ' nreci  = ', nreci  , ' npse   = ', npse 
    442          WRITE(numout,*) ' nrecj  = ', nrecj  , ' npsw   = ', npsw 
    443          WRITE(numout,*) ' jpreci = ', jpreci , ' npne   = ', npne 
    444          WRITE(numout,*) ' jprecj = ', jprecj , ' npnw   = ', npnw 
     425         WRITE(numout,*) '      nproc  = ', nproc 
     426         WRITE(numout,*) '      nowe   = ', nowe  , '      noea   =  ', noea 
     427         WRITE(numout,*) '      nono   = ', nono  , '      noso   =  ', noso 
     428         WRITE(numout,*) '      nbondi = ', nbondi, '      nbondj = ', nbondj 
     429         WRITE(numout,*) '      npolj  = ', npolj 
     430         WRITE(numout,*) '      nperio = ', nperio 
     431         WRITE(numout,*) '      nlci   = ', nlci  , '      nlcj   = ', nlcj 
     432         WRITE(numout,*) '      nimpp  = ', nimpp , '      njmpp  = ', njmpp 
     433         WRITE(numout,*) '      nreci  = ', nreci , '      npse   = ', npse 
     434         WRITE(numout,*) '      nrecj  = ', nrecj , '      npsw   = ', npsw 
     435         WRITE(numout,*) '      jpreci = ', jpreci, '      npne   = ', npne 
     436         WRITE(numout,*) '      jprecj = ', jprecj, '      npnw   = ', npnw 
    445437         WRITE(numout,*) 
    446438      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LDF/ldfc1d_c2d.F90

    r6140 r7280  
    5959      REAL(wp) ::   zw    , zdep2   !   -      - 
    6060      !!---------------------------------------------------------------------- 
     61 
     62      IF(lwp) THEN 
     63         WRITE(numout,*) 
     64         WRITE(numout,*) '   ldf_c1d : set a given profile to eddy diffusivity/viscosity coefficients' 
     65         WRITE(numout,*) '   ~~~~~~~' 
     66      ENDIF 
    6167 
    6268      ! initialization of the profile 
     
    130136      ! 
    131137      IF(lwp) THEN 
    132          WRITE(numout,*) 'ldf_c2d :     aht = rn_aht0 *  max(e1,e2)/e_equator     (  laplacian) ' 
    133          WRITE(numout,*) '~~~~~~~       or  = rn_bht0 * [max(e1,e2)/e_equator]**3 (bilaplacian)' 
     138         WRITE(numout,*) 
     139         WRITE(numout,*) '   ldf_c2d :     aht = rn_aht0 *  max(e1,e2)/e_equator     (  laplacian) ' 
     140         WRITE(numout,*) '   ~~~~~~~       or  = rn_bht0 * [max(e1,e2)/e_equator]**3 (bilaplacian)' 
    134141         WRITE(numout,*) 
    135142      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90

    r5215 r7280  
    2727   PRIVATE 
    2828 
    29    PUBLIC   wnd_cyc   ! routine called in sbcblk_core.F90 module 
     29   PUBLIC   wnd_cyc   ! routine called in sbcblk.F90 module 
    3030 
    3131   INTEGER , PARAMETER ::   jp_is1  = 1   ! index of presence 1 or absence 0 of a TC record 
     
    102102         sn_tc = FLD_N( 'tc_track',     6     ,  'tc'     ,  .true.    , .false. ,   'yearly'  , ''       , ''         , ''            ) 
    103103         ! 
    104          !  Namelist is read in namsbc_core 
     104         !  Namelist is read in namsbc_blk 
    105105         ! set sf structure 
    106106         ALLOCATE( sf(1), STAT=ierror ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r6140 r7280  
    44   !! Ocean forcing:  read input field for surface boundary condition 
    55   !!===================================================================== 
    6    !! History :  2.0  !  06-2006  (S. Masson, G. Madec)  Original code 
    7    !!                 !  05-2008  (S. Alderson)  Modified for Interpolation in memory from input grid to model grid 
    8    !!                 !  10-2013  (D. Delrosso, P. Oddo)  suppression of land point prior to interpolation 
     6   !! History :  2.0  !  2006-06  (S. Masson, G. Madec)  Original code 
     7   !!            3.0  !  2008-05  (S. Alderson)  Modified for Interpolation in memory from input grid to model grid 
     8   !!            3.4  !  2013-10  (D. Delrosso, P. Oddo)  suppression of land point prior to interpolation 
    99   !!---------------------------------------------------------------------- 
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!   fld_read      : read input fields used for the computation of the 
    13    !!                   surface boundary condition 
     12   !!   fld_read      : read input fields used for the computation of the surface boundary condition 
     13   !!   fld_init      : initialization of field read 
     14   !!   fld_rec       : determined the record(s) to be read 
     15   !!   fld_get       : read the data 
     16   !!   fld_map       : read global data from file and map onto local data using a general mapping (use for open boundaries) 
     17   !!   fld_rot       : rotate the vector fields onto the local grid direction 
     18   !!   fld_clopn     : update the data file name and close/open the files 
     19   !!   fld_fill      : fill the data structure with the associated information read in namelist 
     20   !!   wgt_list      : manage the weights used for interpolation 
     21   !!   wgt_print     : print the list of known weights 
     22   !!   fld_weight    : create a WGT structure and fill in data from file, restructuring as required 
     23   !!   apply_seaoverland : fill land with ocean values 
     24   !!   seaoverland   : create shifted matrices for seaoverland application 
     25   !!   fld_interp    : apply weights to input gridded data to create data on model grid 
     26   !!   ksec_week     : function returning the first 3 letters of the first day of the weekly file 
    1427   !!---------------------------------------------------------------------- 
    1528   USE oce            ! ocean dynamics and tracers 
     
    274287            IF( sd(jf)%ln_tint ) THEN              ! temporal interpolation 
    275288               IF(lwp .AND. kt - nit000 <= 100 ) THEN  
    276                   clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     289                  clfmt = "('   fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    277290                     &    "', records b/a: ', i6.4, '/', i6.4, ' (days ', f9.4,'/', f9.4, ')')" 
    278291                  WRITE(numout, clfmt)  TRIM( sd(jf)%clvar ), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,   &             
    279292                     & sd(jf)%nrec_b(1), sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday 
    280                   WRITE(numout, *) 'it_offset is : ',it_offset 
     293                  WRITE(numout, *) '      it_offset is : ',it_offset 
    281294               ENDIF 
    282295               ! temporal interpolation weights 
     
    286299            ELSE   ! nothing to do... 
    287300               IF(lwp .AND. kt - nit000 <= 100 ) THEN 
    288                   clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     301                  clfmt = "('   fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    289302                     &    "', record: ', i6.4, ' (days ', f9.4, ' <-> ', f9.4, ')')" 
    290303                  WRITE(numout, clfmt) TRIM(sd(jf)%clvar), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,    & 
     
    407420         CALL fld_get( sdjf, map )         ! read before data in after arrays(as we will swap it later) 
    408421         ! 
    409          clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 
     422         clfmt = "('   fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 
    410423         IF(lwp) WRITE(numout, clfmt) TRIM(sdjf%clvar), sdjf%nrec_a(1), REAL(sdjf%nrec_a(2),wp)/rday 
    411424         ! 
     
    791804      !!                    ***  ROUTINE fld_clopn  *** 
    792805      !! 
    793       !! ** Purpose :   update the file name and open the file 
     806      !! ** Purpose :   update the file name and close/open the files 
    794807      !!---------------------------------------------------------------------- 
    795808      TYPE(FLD)        , INTENT(inout) ::   sdjf     ! input field related variables 
     
    882895 
    883896 
    884    SUBROUTINE fld_fill( sdf, sdf_n, cdir, cdcaller, cdtitle, cdnam ) 
     897   SUBROUTINE fld_fill( sdf, sdf_n, cdir, cdcaller, cdtitle, cdnam, knoprint ) 
    885898      !!--------------------------------------------------------------------- 
    886899      !!                    ***  ROUTINE fld_fill  *** 
    887900      !! 
    888       !! ** Purpose :   fill sdf with sdf_n and control print 
    889       !!---------------------------------------------------------------------- 
    890       TYPE(FLD)  , DIMENSION(:), INTENT(inout) ::   sdf        ! structure of input fields (file informations, fields read) 
    891       TYPE(FLD_N), DIMENSION(:), INTENT(in   ) ::   sdf_n      ! array of namelist information structures 
    892       CHARACTER(len=*)         , INTENT(in   ) ::   cdir       ! Root directory for location of flx files 
    893       CHARACTER(len=*)         , INTENT(in   ) ::   cdcaller   !  
    894       CHARACTER(len=*)         , INTENT(in   ) ::   cdtitle    !  
    895       CHARACTER(len=*)         , INTENT(in   ) ::   cdnam      !  
    896       ! 
    897       INTEGER  ::   jf       ! dummy indices 
     901      !! ** Purpose :   fill the data structure (sdf) with the associated information  
     902      !!              read in namelist (sdf_n) and control print 
     903      !!---------------------------------------------------------------------- 
     904      TYPE(FLD)  , DIMENSION(:)          , INTENT(inout) ::   sdf        ! structure of input fields (file informations, fields read) 
     905      TYPE(FLD_N), DIMENSION(:)          , INTENT(in   ) ::   sdf_n      ! array of namelist information structures 
     906      CHARACTER(len=*)                   , INTENT(in   ) ::   cdir       ! Root directory for location of flx files 
     907      CHARACTER(len=*)                   , INTENT(in   ) ::   cdcaller   ! name of the calling routine 
     908      CHARACTER(len=*)                   , INTENT(in   ) ::   cdtitle    ! description of the calling routine  
     909      CHARACTER(len=*)                   , INTENT(in   ) ::   cdnam      ! name of the namelist from which sdf_n comes 
     910      INTEGER                  , OPTIONAL, INTENT(in   ) ::   knoprint   ! no calling routine information printed 
     911      ! 
     912      INTEGER  ::   jf   ! dummy indices 
    898913      !!--------------------------------------------------------------------- 
    899914      ! 
     
    922937      IF(lwp) THEN      ! control print 
    923938         WRITE(numout,*) 
    924          WRITE(numout,*) TRIM( cdcaller )//' : '//TRIM( cdtitle ) 
    925          WRITE(numout,*) (/ ('~', jf = 1, LEN_TRIM( cdcaller ) ) /) 
    926          WRITE(numout,*) '          '//TRIM( cdnam )//' Namelist' 
    927          WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)' 
     939         IF( .NOT.PRESENT( knoprint) ) THEN 
     940            WRITE(numout,*) TRIM( cdcaller )//' : '//TRIM( cdtitle ) 
     941            WRITE(numout,*) (/ ('~', jf = 1, LEN_TRIM( cdcaller ) ) /) 
     942         ENDIF 
     943         WRITE(numout,*) '   fld_fill : fill data structure with information from namelist '//TRIM( cdnam ) 
     944         WRITE(numout,*) '   ~~~~~~~~' 
     945         WRITE(numout,*) '      list of files and frequency (>0: in hours ; <0 in months)' 
    928946         DO jf = 1, SIZE(sdf) 
    929             WRITE(numout,*) '               root filename: '  , TRIM( sdf(jf)%clrootname ),   & 
    930                &                          ' variable name: '  , TRIM( sdf(jf)%clvar      ) 
    931             WRITE(numout,*) '               frequency: '      ,       sdf(jf)%nfreqh      ,   & 
    932                &                          ' time interp: '    ,       sdf(jf)%ln_tint     ,   & 
    933                &                          ' climatology: '    ,       sdf(jf)%ln_clim     ,   & 
    934                &                          ' weights    : '    , TRIM( sdf(jf)%wgtname    ),   & 
    935                &                          ' pairing    : '    , TRIM( sdf(jf)%vcomp      ),   & 
    936                &                          ' data type: '      ,       sdf(jf)%cltype      ,   & 
    937                &                          ' land/sea mask:'   , TRIM( sdf(jf)%lsmname    ) 
     947            WRITE(numout,*) '      root filename: '  , TRIM( sdf(jf)%clrootname ), '   variable name: ', TRIM( sdf(jf)%clvar ) 
     948            WRITE(numout,*) '         frequency: '      ,       sdf(jf)%nfreqh      ,   & 
     949               &                  '   time interp: '    ,       sdf(jf)%ln_tint     ,   & 
     950               &                  '   climatology: '    ,       sdf(jf)%ln_clim 
     951            WRITE(numout,*) '         weights: '        , TRIM( sdf(jf)%wgtname    ),   & 
     952               &                  '   pairing: '        , TRIM( sdf(jf)%vcomp      ),   & 
     953               &                  '   data type: '      ,       sdf(jf)%cltype      ,   & 
     954               &                  '   land/sea mask:'   , TRIM( sdf(jf)%lsmname    ) 
    938955            call flush(numout) 
    939956         END DO 
     
    947964      !!                    ***  ROUTINE wgt_list  *** 
    948965      !! 
    949       !! ** Purpose :   search array of WGTs and find a weights file 
    950       !!                entry, or return a new one adding it to the end 
    951       !!                if it is a new entry, the weights data is read in and 
    952       !!                restructured (fld_weight) 
     966      !! ** Purpose :   search array of WGTs and find a weights file entry, 
     967      !!                or return a new one adding it to the end if new entry. 
     968      !!                the weights data is read in and restructured (fld_weight) 
    953969      !!---------------------------------------------------------------------- 
    954970      TYPE( FLD ), INTENT(in   ) ::   sd        ! field with name of weights file 
     
    10191035      !!                    ***  ROUTINE fld_weight  *** 
    10201036      !! 
    1021       !! ** Purpose :   create a new WGT structure and fill in data from   
    1022       !!                file, restructuring as required 
     1037      !! ** Purpose :   create a new WGT structure and fill in data from file, 
     1038      !!              restructuring as required 
    10231039      !!---------------------------------------------------------------------- 
    10241040      TYPE( FLD ), INTENT(in) ::   sd   ! field with name of weights file 
     
    11631179 
    11641180   SUBROUTINE apply_seaoverland( clmaskfile, zfieldo, jpi1_lsm, jpi2_lsm, jpj1_lsm,   & 
    1165                           &      jpj2_lsm, itmpi, itmpj, itmpz, rec1_lsm, recn_lsm ) 
     1181      &                          jpj2_lsm, itmpi, itmpj, itmpz, rec1_lsm, recn_lsm ) 
    11661182      !!--------------------------------------------------------------------- 
    11671183      !!                    ***  ROUTINE apply_seaoverland  *** 
     
    14921508      !!                    ***  FUNCTION kshift_week ***  
    14931509      !! 
    1494       !! ** Purpose :   
    1495       !!--------------------------------------------------------------------- 
    1496       CHARACTER(len=*), INTENT(in)   ::   cdday   !3 first letters of the first day of the weekly file 
    1497       !! 
    1498       INTEGER                        ::   ksec_week  ! output variable 
    1499       INTEGER                        ::   ijul       !temp variable 
    1500       INTEGER                        ::   ishift     !temp variable 
     1510      !! ** Purpose :   return the first 3 letters of the first day of the weekly file 
     1511      !!--------------------------------------------------------------------- 
     1512      CHARACTER(len=*), INTENT(in)   ::   cdday   ! first 3 letters of the first day of the weekly file 
     1513      !! 
     1514      INTEGER                        ::   ksec_week      ! output variable 
     1515      INTEGER                        ::   ijul, ishift   ! local integer 
    15011516      CHARACTER(len=3),DIMENSION(7)  ::   cl_week  
    15021517      !!---------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r7277 r7280  
    1010   !!            3.3  ! 2010-10  (J. Chanut, C. Bricaud)  add the surface pressure forcing 
    1111   !!            4.0  ! 2012-05  (C. Rousset) add attenuation coef for use in ice model  
     12   !!            4.0  ! 2016-06  (L. Brodeau) new unified bulk routine (based on AeroBulk) 
    1213   !!---------------------------------------------------------------------- 
    1314 
     
    3132   !                                   !!* namsbc namelist * 
    3233   LOGICAL , PUBLIC ::   ln_usr         !: user defined formulation 
    33    LOGICAL , PUBLIC ::   ln_flx         !: flux         formulation 
    34    LOGICAL , PUBLIC ::   ln_blk_clio    !: CLIO bulk    formulation 
    35    LOGICAL , PUBLIC ::   ln_blk_core    !: CORE bulk    formulation 
    36    LOGICAL , PUBLIC ::   ln_blk_mfs     !: MFS  bulk    formulation 
     34   LOGICAL , PUBLIC ::   ln_flx         !: flux      formulation 
     35   LOGICAL , PUBLIC ::   ln_blk         !: bulk formulation 
    3736#if defined key_oasis3 
    3837   LOGICAL , PUBLIC ::   lk_oasis = .TRUE.  !: OASIS used 
     
    7473   INTEGER , PUBLIC, PARAMETER ::   jp_usr     = 1        !: user defined                  formulation 
    7574   INTEGER , PUBLIC, PARAMETER ::   jp_flx     = 2        !: flux                          formulation 
    76    INTEGER , PUBLIC, PARAMETER ::   jp_clio    = 3        !: CLIO bulk                     formulation 
    77    INTEGER , PUBLIC, PARAMETER ::   jp_core    = 4        !: CORE bulk                     formulation 
     75   INTEGER , PUBLIC, PARAMETER ::   jp_blk     = 4        !: bulk                          formulation 
    7876   INTEGER , PUBLIC, PARAMETER ::   jp_purecpl = 5        !: Pure ocean-atmosphere Coupled formulation 
    79    INTEGER , PUBLIC, PARAMETER ::   jp_mfs     = 6        !: MFS  bulk                     formulation 
    8077   INTEGER , PUBLIC, PARAMETER ::   jp_none    = 7        !: for OPA when doing coupling via SAS module 
    8178    
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r6140 r7280  
    2424   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2525   USE sbc_ice         ! Surface boundary condition: ice   fields 
    26    USE sbcblk_core     ! Surface boundary condition: CORE bulk 
     26   USE sbcblk          ! Surface boundary condition: bulk 
    2727   USE sbccpl 
    2828 
     
    191191            CALL ctl_stop( 'STOP', 'cice_sbc_init : Forcing option requires calc_strair=F and calc_Tsfc=F in ice_in' ) 
    192192         ENDIF 
    193       ELSEIF (ksbc == jp_core) THEN 
     193      ELSEIF (ksbc == jp_blk) THEN 
    194194         IF ( .NOT. (calc_strair .AND. calc_Tsfc) ) THEN 
    195195            CALL ctl_stop( 'STOP', 'cice_sbc_init : Forcing option requires calc_strair=T and calc_Tsfc=T in ice_in' ) 
     
    392392         ENDDO 
    393393 
    394       ELSE IF (ksbc == jp_core) THEN 
    395  
    396 ! Pass CORE forcing fields to CICE (which will calculate heat fluxes etc itself) 
     394      ELSE IF (ksbc == jp_blk) THEN 
     395 
     396! Pass bulk forcing fields to CICE (which will calculate heat fluxes etc itself) 
    397397! x comp and y comp of atmosphere surface wind (CICE expects on T points) 
    398398         ztmp(:,:) = wndi_ice(:,:) 
     
    585585! Better to use evap and tprecip? (but for now don't read in evap in this case) 
    586586         emp(:,:)  = emp(:,:)+fr_i(:,:)*(tprecip(:,:)-sprecip(:,:)) 
    587       ELSE IF (ksbc == jp_core) THEN 
     587      ELSE IF (ksbc == jp_blk) THEN 
    588588         emp(:,:)  = (1.0-fr_i(:,:))*emp(:,:)         
    589589      ELSE IF (ksbc == jp_purecpl) THEN 
     
    618618! Scale qsr and qns according to ice fraction (bulk formulae only) 
    619619 
    620       IF (ksbc == jp_core) THEN 
     620      IF (ksbc == jp_blk) THEN 
    621621         qsr(:,:)=qsr(:,:)*(1.0-fr_i(:,:)) 
    622622         qns(:,:)=qns(:,:)*(1.0-fr_i(:,:)) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r7278 r7280  
    1313   !!             -   ! 2012-10  (C. Rousset)  add lim_diahsb 
    1414   !!            3.6  ! 2014-07  (M. Vancoppenolle, G. Madec, O. Marti) revise coupled interface 
     15   !!            4.0  ! 2016-06  (L. Brodeau) new unified bulk routine (based on AeroBulk) 
    1516   !!---------------------------------------------------------------------- 
    1617#if defined key_lim3 
     
    2829   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2930   USE sbc_ice         ! Surface boundary condition: ice   fields 
    30    USE sbcblk_core     ! Surface boundary condition: CORE bulk 
    31    USE sbcblk_clio     ! Surface boundary condition: CLIO bulk 
     31   USE sbcblk          ! Surface boundary condition: bulk 
    3232   USE sbccpl          ! Surface boundary condition: coupled interface 
    3333   USE albedo          ! ocean & ice albedo 
     
    4747   USE limupdate2      ! update of global variables 
    4848   USE limvar          ! Ice variables switch 
    49    USE limctl          !  
     49   USE limctl          ! 
    5050   USE limmsh          ! LIM mesh 
    5151   USE limistate       ! LIM initial state 
     
    5656   USE iom             ! I/O manager library 
    5757   USE prtctl          ! Print control 
    58    USE lib_fortran     !  
     58   USE lib_fortran     ! 
    5959   USE lbclnk          ! lateral boundary condition - MPP link 
    6060   USE lib_mpp         ! MPP library 
     
    6262   USE timing          ! Timing 
    6363 
    64 #if defined key_bdy  
     64#if defined key_bdy 
    6565   USE bdyice_lim       ! unstructured open boundary data  (bdy_ice_lim routine) 
    6666#endif 
     
    7171   PUBLIC sbc_ice_lim  ! routine called by sbcmod.F90 
    7272   PUBLIC sbc_lim_init ! routine called by sbcmod.F90 
    73     
     73 
    7474   !! * Substitutions 
    7575#  include "vectopt_loop_substitute.h90" 
     
    8484      !!--------------------------------------------------------------------- 
    8585      !!                  ***  ROUTINE sbc_ice_lim  *** 
    86       !!                    
    87       !! ** Purpose :   update the ocean surface boundary condition via the  
    88       !!                Louvain la Neuve Sea Ice Model time stepping  
     86      !! 
     87      !! ** Purpose :   update the ocean surface boundary condition via the 
     88      !!                Louvain la Neuve Sea Ice Model time stepping 
    8989      !! 
    9090      !! ** Method  :   ice model time stepping 
    91       !!              - call the ice dynamics routine  
    92       !!              - call the ice advection/diffusion routine  
    93       !!              - call the ice thermodynamics routine  
    94       !!              - call the routine that computes mass and  
     91      !!              - call the ice dynamics routine 
     92      !!              - call the ice advection/diffusion routine 
     93      !!              - call the ice thermodynamics routine 
     94      !!              - call the routine that computes mass and 
    9595      !!                heat fluxes at the ice/ocean interface 
    96       !!              - save the outputs  
     96      !!              - save the outputs 
    9797      !!              - save the outputs for restart when necessary 
    9898      !! 
    9999      !! ** Action  : - time evolution of the LIM sea-ice model 
    100100      !!              - update all sbc variables below sea-ice: 
    101       !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx  
     101      !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx 
    102102      !!--------------------------------------------------------------------- 
    103103      INTEGER, INTENT(in) ::   kt      ! ocean time step 
    104       INTEGER, INTENT(in) ::   kblk    ! type of bulk (=3 CLIO, =4 CORE, =5 COUPLED) 
     104      INTEGER, INTENT(in) ::   kblk    ! type of bulk (=4 BULK, =5 COUPLED) 
    105105      !! 
    106106      INTEGER  ::    jl                 ! dummy loop index 
    107107      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zalb_os, zalb_cs  ! ice albedo under overcast/clear sky 
    108       REAL(wp), POINTER, DIMENSION(:,:  )   ::   zutau_ice, zvtau_ice  
     108      REAL(wp), POINTER, DIMENSION(:,:  )   ::   zutau_ice, zvtau_ice 
    109109      !!---------------------------------------------------------------------- 
    110110 
     
    119119         u_oce(:,:) = ssu_m(:,:) * umask(:,:,1) 
    120120         v_oce(:,:) = ssv_m(:,:) * vmask(:,:,1) 
    121           
     121 
    122122         ! masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 
    123123         CALL eos_fzp( sss_m(:,:) , t_bo(:,:) ) 
    124124         t_bo(:,:) = ( t_bo(:,:) + rt0 ) * tmask(:,:,1) + rt0 * ( 1._wp - tmask(:,:,1) ) 
    125            
     125 
    126126         ! Mask sea ice surface temperature (set to rt0 over land) 
    127127         DO jl = 1, jpl 
    128128            t_su(:,:,jl) = t_su(:,:,jl) * tmask(:,:,1) + rt0 * ( 1._wp - tmask(:,:,1) ) 
    129          END DO      
    130          ! 
    131          !------------------------------------------------!                                            
    132          ! --- Dynamical coupling with the atmosphere --- !                                            
     129         END DO 
     130         ! 
     131         !------------------------------------------------! 
     132         ! --- Dynamical coupling with the atmosphere --- ! 
    133133         !------------------------------------------------! 
    134134         ! It provides the following fields: 
     
    136136         !----------------------------------------------------------------- 
    137137         SELECT CASE( kblk ) 
    138          CASE( jp_clio    )   ;   CALL blk_ice_clio_tau                         ! CLIO bulk formulation             
    139          CASE( jp_core    )   ;   CALL blk_ice_core_tau                         ! CORE bulk formulation 
     138         CASE( jp_blk     )   ;   CALL blk_ice_tau                              ! Bulk formulation 
    140139         CASE( jp_purecpl )   ;   CALL sbc_cpl_ice_tau( utau_ice , vtau_ice )   ! Coupled   formulation 
    141140         END SELECT 
    142           
     141 
    143142         IF( ln_mixcpl) THEN   ! Case of a mixed Bulk/Coupled formulation 
    144143            CALL wrk_alloc( jpi,jpj    , zutau_ice, zvtau_ice) 
     
    153152         !-------------------------------------------------------! 
    154153         numit = numit + nn_fsbc                  ! Ice model time step 
    155          !                                                    
     154         ! 
    156155         CALL sbc_lim_bef                         ! Store previous ice values 
    157156         CALL sbc_lim_diag0                       ! set diag of mass, heat and salt fluxes to 0 
     
    160159         IF( .NOT. lk_c1d ) THEN 
    161160            ! 
    162             CALL lim_dyn( kt )                    ! Ice dynamics    ( rheology/dynamics )    
     161            CALL lim_dyn( kt )                    ! Ice dynamics    ( rheology/dynamics ) 
    163162            ! 
    164163            CALL lim_trp( kt )                    ! Ice transport   ( Advection/diffusion ) 
     
    167166            ! 
    168167#if defined key_bdy 
    169             CALL bdy_ice_lim( kt )                ! bdy ice thermo  
     168            CALL bdy_ice_lim( kt )                ! bdy ice thermo 
    170169            IF( ln_icectl )       CALL lim_prt( kt, iiceprt, jiceprt, 1, ' - ice thermo bdy - ' ) 
    171170#endif 
     
    174173            ! 
    175174         ENDIF 
    176           
     175 
    177176         ! previous lead fraction and ice volume for flux calculations 
    178          CALL sbc_lim_bef                         
     177         CALL sbc_lim_bef 
    179178         CALL lim_var_glo2eqv                     ! ht_i and ht_s for ice albedo calculation 
    180          CALL lim_var_agg(1)                      ! at_i for coupling (via pfrld)  
     179         CALL lim_var_agg(1)                      ! at_i for coupling (via pfrld) 
    181180         pfrld(:,:)   = 1._wp - at_i(:,:) 
    182181         phicif(:,:)  = vt_i(:,:) 
    183           
    184          !------------------------------------------------------!                                            
    185          ! --- Thermodynamical coupling with the atmosphere --- !                                            
     182 
     183         !------------------------------------------------------! 
     184         ! --- Thermodynamical coupling with the atmosphere --- ! 
    186185         !------------------------------------------------------! 
    187186         ! It provides the following fields: 
     
    196195 
    197196         SELECT CASE( kblk ) 
    198          CASE( jp_clio )                                       ! CLIO bulk formulation 
    199             ! In CLIO the cloud fraction is read in the climatology and the all-sky albedo  
    200             ! (alb_ice) is computed within the bulk routine 
    201                                  CALL blk_ice_clio_flx( t_su, zalb_cs, zalb_os, alb_ice ) 
    202             IF( ln_mixcpl      ) CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=alb_ice, psst=sst_m, pist=t_su ) 
    203             IF( nn_limflx /= 2 ) CALL ice_lim_flx( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx ) 
    204          CASE( jp_core )                                       ! CORE bulk formulation 
     197         CASE( jp_blk )                                       ! bulk formulation 
    205198            ! albedo depends on cloud fraction because of non-linear spectral effects 
    206199            alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    207                                  CALL blk_ice_core_flx( t_su, alb_ice ) 
     200                                 CALL blk_ice_flx( t_su, alb_ice ) 
    208201            IF( ln_mixcpl      ) CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=alb_ice, psst=sst_m, pist=t_su ) 
    209202            IF( nn_limflx /= 2 ) CALL ice_lim_flx( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx ) 
     
    219212         ! --- ice thermodynamics --- ! 
    220213         !----------------------------! 
    221          CALL lim_thd( kt )                         ! Ice thermodynamics       
     214         CALL lim_thd( kt )                         ! Ice thermodynamics 
    222215         ! 
    223216         CALL lim_update2( kt )                     ! Corrections 
     
    225218         CALL lim_sbc_flx( kt )                     ! Update surface ocean mass, heat and salt fluxes 
    226219         ! 
    227          IF(ln_limdiaout) CALL lim_diahsb           ! Diagnostics and outputs  
    228          ! 
    229          CALL lim_wri( 1 )                          ! Ice outputs  
     220         IF(ln_limdiaout) CALL lim_diahsb           ! Diagnostics and outputs 
     221         ! 
     222         CALL lim_wri( 1 )                          ! Ice outputs 
    230223         ! 
    231224         IF( kt == nit000 .AND. ln_rstart )   & 
    232225            &             CALL iom_close( numrir )  ! close input ice restart file 
    233226         ! 
    234          IF( lrst_ice )   CALL lim_rst_write( kt )  ! Ice restart file  
     227         IF( lrst_ice )   CALL lim_rst_write( kt )  ! Ice restart file 
    235228         ! 
    236229         IF( ln_icectl )  CALL lim_ctl( kt )        ! alerts in case of model crash 
     
    248241      ! 
    249242   END SUBROUTINE sbc_ice_lim 
    250     
     243 
    251244 
    252245   SUBROUTINE sbc_lim_init 
     
    259252      !!---------------------------------------------------------------------- 
    260253      IF(lwp) WRITE(numout,*) 
    261       IF(lwp) WRITE(numout,*) 'sbc_ice_lim : update ocean surface boudary condition'  
     254      IF(lwp) WRITE(numout,*) 'sbc_ice_lim : update ocean surface boudary condition' 
    262255      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   via Louvain la Neuve Ice Model (LIM-3) time stepping' 
    263256      ! 
    264       !                                ! Open the reference and configuration namelist files and namelist output file  
    265       CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp )  
     257      !                                ! Open the reference and configuration namelist files and namelist output file 
     258      CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    266259      CALL ctl_opn( numnam_ice_cfg, 'namelist_ice_cfg',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    267260      IF(lwm) CALL ctl_opn( numoni, 'output.namelist.ice', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, 1 ) 
    268261      ! 
    269       CALL ice_run                     ! set some ice run parameters 
     262      CALL lim_run_init                ! set some ice run parameters 
    270263      ! 
    271264      !                                ! Allocate the ice arrays 
     
    308301      CALL lim_var_glo2eqv 
    309302      ! 
    310       CALL lim_sbc_init                 ! ice surface boundary condition    
     303      CALL lim_sbc_init                 ! ice surface boundary condition 
    311304      ! 
    312305      fr_i(:,:)     = at_i(:,:)         ! initialisation of sea-ice fraction 
     
    318311            ELSE                             ;  rn_amax_2d(ji,jj) = rn_amax_s  ! SH 
    319312            ENDIF 
    320         ENDDO 
    321       ENDDO  
    322       ! 
    323       nstart = numit  + nn_fsbc       
    324       nitrun = nitend - nit000 + 1  
    325       nlast  = numit  + nitrun  
     313         END DO 
     314      END DO 
     315      ! 
     316      nstart = numit  + nn_fsbc 
     317      nitrun = nitend - nit000 + 1 
     318      nlast  = numit  + nitrun 
    326319      ! 
    327320      IF( nstock == 0 )   nstock = nlast + 1 
     
    330323 
    331324 
    332    SUBROUTINE ice_run 
     325   SUBROUTINE lim_run_init 
    333326      !!------------------------------------------------------------------- 
    334       !!                  ***  ROUTINE ice_run *** 
    335       !!                  
     327      !!                  ***  ROUTINE lim_run_init *** 
     328      !! 
    336329      !! ** Purpose :   Definition some run parameter for ice model 
    337330      !! 
    338       !! ** Method  :   Read the namicerun namelist and check the parameter  
     331      !! ** Method  :   Read the namicerun namelist and check the parameter 
    339332      !!              values called at the first timestep (nit000) 
    340333      !! 
     
    343336      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    344337      NAMELIST/namicerun/ jpl, nlay_i, nlay_s, cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir,  & 
    345          &                ln_limdyn, rn_amax_n, rn_amax_s, ln_limdiahsb, ln_limdiaout, ln_icectl, iiceprt, jiceprt   
     338         &                ln_limdyn, rn_amax_n, rn_amax_s, ln_limdiahsb, ln_limdiaout, ln_icectl, iiceprt, jiceprt 
    346339      !!------------------------------------------------------------------- 
    347       !                     
     340      ! 
    348341      REWIND( numnam_ice_ref )              ! Namelist namicerun in reference namelist : Parameters for ice 
    349342      READ  ( numnam_ice_ref, namicerun, IOSTAT = ios, ERR = 901) 
     
    357350      IF(lwp) THEN                        ! control print 
    358351         WRITE(numout,*) 
    359          WRITE(numout,*) 'ice_run : ice share parameters for dynamics/advection/thermo of sea-ice' 
    360          WRITE(numout,*) ' ~~~~~~' 
    361          WRITE(numout,*) '   number of ice  categories                               = ', jpl 
    362          WRITE(numout,*) '   number of ice  layers                                   = ', nlay_i 
    363          WRITE(numout,*) '   number of snow layers                                   = ', nlay_s 
    364          WRITE(numout,*) '   switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn 
    365          WRITE(numout,*) '   maximum ice concentration for NH                        = ', rn_amax_n  
    366          WRITE(numout,*) '   maximum ice concentration for SH                        = ', rn_amax_s 
    367          WRITE(numout,*) '   Diagnose heat/salt budget or not          ln_limdiahsb  = ', ln_limdiahsb 
    368          WRITE(numout,*) '   Output   heat/salt budget or not          ln_limdiaout  = ', ln_limdiaout 
    369          WRITE(numout,*) '   control prints in ocean.out for (i,j)=(iiceprt,jiceprt) = ', ln_icectl 
    370          WRITE(numout,*) '   i-index for control prints (ln_icectl=true)             = ', iiceprt 
    371          WRITE(numout,*) '   j-index for control prints (ln_icectl=true)             = ', jiceprt 
     352         WRITE(numout,*) 'lim_run_init : ice share parameters for dynamics/advection/thermo of sea-ice' 
     353         WRITE(numout,*) '~~~~~~~~~~~~' 
     354         WRITE(numout,*) '   Namelist namicerun' 
     355         WRITE(numout,*) '      number of ice  categories                               = ', jpl 
     356         WRITE(numout,*) '      number of ice  layers                                   = ', nlay_i 
     357         WRITE(numout,*) '      number of snow layers                                   = ', nlay_s 
     358         WRITE(numout,*) '      switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn 
     359         WRITE(numout,*) '      maximum ice concentration for NH                        = ', rn_amax_n 
     360         WRITE(numout,*) '      maximum ice concentration for SH                        = ', rn_amax_s 
     361         WRITE(numout,*) '      Diagnose heat/salt budget or not          ln_limdiahsb  = ', ln_limdiahsb 
     362         WRITE(numout,*) '      Output   heat/salt budget or not          ln_limdiaout  = ', ln_limdiaout 
     363         WRITE(numout,*) '      control prints in ocean.out for (i,j)=(iiceprt,jiceprt) = ', ln_icectl 
     364         WRITE(numout,*) '      i-index for control prints (ln_icectl=true)             = ', iiceprt 
     365         WRITE(numout,*) '      j-index for control prints (ln_icectl=true)             = ', jiceprt 
    372366      ENDIF 
    373367      ! 
    374368      ! sea-ice timestep and inverse 
    375       rdt_ice   = nn_fsbc * rdt   
    376       r1_rdtice = 1._wp / rdt_ice  
     369      rdt_ice   = nn_fsbc * rdt 
     370      r1_rdtice = 1._wp / rdt_ice 
    377371 
    378372      ! inverse of nlay_i and nlay_s 
     
    384378#endif 
    385379      ! 
    386    END SUBROUTINE ice_run 
     380   END SUBROUTINE lim_run_init 
    387381 
    388382 
     
    414408      IF(lwp) THEN                        ! control print 
    415409         WRITE(numout,*) 
    416          WRITE(numout,*) 'ice_itd : ice cat distribution' 
    417          WRITE(numout,*) ' ~~~~~~' 
    418          WRITE(numout,*) '   shape of ice categories distribution                     nn_catbnd = ', nn_catbnd 
    419          WRITE(numout,*) '   mean ice thickness in the domain (used if nn_catbnd=2)   rn_himean = ', rn_himean 
     410         WRITE(numout,*) 'lim_itd_init : Initialization of ice cat distribution ' 
     411         WRITE(numout,*) '~~~~~~~~~~~~' 
     412         WRITE(numout,*) '   Namelist namiceitd' 
     413         WRITE(numout,*) '      shape of ice categories distribution                     nn_catbnd = ', nn_catbnd 
     414         WRITE(numout,*) '      mean ice thickness in the domain (used if nn_catbnd=2)   rn_himean = ', rn_himean 
    420415      ENDIF 
    421416      ! 
    422417      !---------------------------------- 
    423       !- Thickness categories boundaries  
     418      !- Thickness categories boundaries 
    424419      !---------------------------------- 
    425       IF(lwp) WRITE(numout,*) 
    426       IF(lwp) WRITE(numout,*) 'lim_itd_init : Initialization of ice cat distribution ' 
    427       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    428420      ! 
    429421      hi_max(:) = 0._wp 
     
    443435         zalpha = 0.05_wp 
    444436         zhmax  = 3._wp * rn_himean 
    445          DO jl = 1, jpl  
     437         DO jl = 1, jpl 
    446438            znum = jpl * ( zhmax+1 )**zalpha 
    447439            zden = REAL( jpl-jl , wp ) * ( zhmax + 1._wp )**zalpha + REAL( jl , wp ) 
     
    457449      hi_max(jpl) = 99._wp          ! set to a big value to ensure that all ice is thinner than hi_max(jpl) 
    458450      ! 
    459       IF(lwp) WRITE(numout,*) ' Thickness category boundaries ' 
    460       IF(lwp) WRITE(numout,*) ' hi_max ', hi_max(0:jpl) 
     451      IF(lwp) WRITE(numout,*) 
     452      IF(lwp) WRITE(numout,*) '      Thickness category boundaries ' 
     453      IF(lwp) WRITE(numout,*) '         hi_max ', hi_max(0:jpl) 
    461454      ! 
    462455   END SUBROUTINE lim_itd_init 
    463456 
    464     
     457 
    465458   SUBROUTINE ice_lim_flx( ptn_ice , palb_ice, pqns_ice ,    & 
    466459      &                    pqsr_ice, pdqn_ice, pevap_ice, pdevap_ice, k_limflx ) 
    467460      !!--------------------------------------------------------------------- 
    468461      !!                  ***  ROUTINE ice_lim_flx  *** 
    469       !!                    
     462      !! 
    470463      !! ** Purpose :   update the ice surface boundary condition by averaging and / or 
    471       !!                redistributing fluxes on ice categories                    
    472       !! 
    473       !! ** Method  :   average then redistribute  
    474       !! 
    475       !! ** Action  :    
     464      !!                redistributing fluxes on ice categories 
     465      !! 
     466      !! ** Method  :   average then redistribute 
     467      !! 
     468      !! ** Action  : 
    476469      !!--------------------------------------------------------------------- 
    477       INTEGER                   , INTENT(in   ) ::   k_limflx   ! =-1 do nothing; =0 average ;  
    478       !                                                         ! =1 average and redistribute ; =2 redistribute 
    479       REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   ptn_ice    ! ice surface temperature  
     470      INTEGER                   , INTENT(in   ) ::   k_limflx   ! =-1 do nothing; =0 average ; 
     471      !                                                         ! = 1 average and redistribute ; =2 redistribute 
     472      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   ptn_ice    ! ice surface temperature 
    480473      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   palb_ice   ! ice albedo 
    481474      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   pqns_ice   ! non solar flux 
     
    526519         CALL wrk_alloc( jpi,jpj, zalb_m, ztem_m ) 
    527520         ! 
    528          zalb_m(:,:) = fice_ice_ave ( palb_ice (:,:,:) )  
    529          ztem_m(:,:) = fice_ice_ave ( ptn_ice  (:,:,:) )  
     521         zalb_m(:,:) = fice_ice_ave ( palb_ice (:,:,:) ) 
     522         ztem_m(:,:) = fice_ice_ave ( ptn_ice  (:,:,:) ) 
    530523         DO jl = 1, jpl 
    531524            pqns_ice (:,:,jl) = pqns_ice (:,:,jl) + pdqn_ice  (:,:,jl) * ( ptn_ice(:,:,jl) - ztem_m(:,:) ) 
    532525            pevap_ice(:,:,jl) = pevap_ice(:,:,jl) + pdevap_ice(:,:,jl) * ( ptn_ice(:,:,jl) - ztem_m(:,:) ) 
    533             pqsr_ice (:,:,jl) = pqsr_ice (:,:,jl) * ( 1._wp - palb_ice(:,:,jl) ) / ( 1._wp - zalb_m(:,:) )  
     526            pqsr_ice (:,:,jl) = pqsr_ice (:,:,jl) * ( 1._wp - palb_ice(:,:,jl) ) / ( 1._wp - zalb_m(:,:) ) 
    534527         END DO 
    535528         ! 
     
    546539      !!                  ***  ROUTINE sbc_lim_bef  *** 
    547540      !! 
    548       !! ** purpose :  store ice variables at "before" time step  
     541      !! ** purpose :  store ice variables at "before" time step 
    549542      !!---------------------------------------------------------------------- 
    550543      a_i_b  (:,:,:)   = a_i  (:,:,:)     ! ice area 
    551544      e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
    552545      v_i_b  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
    553       v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
     546      v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume 
    554547      e_s_b  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
    555548      smv_i_b(:,:,:)   = smv_i(:,:,:)     ! salt content 
     
    557550      u_ice_b(:,:)     = u_ice(:,:) 
    558551      v_ice_b(:,:)     = v_ice(:,:) 
    559       !       
     552      ! 
    560553   END SUBROUTINE sbc_lim_bef 
    561554 
     
    569562      !!---------------------------------------------------------------------- 
    570563      sfx    (:,:) = 0._wp   ; 
    571       sfx_bri(:,:) = 0._wp   ;  
     564      sfx_bri(:,:) = 0._wp   ; 
    572565      sfx_sni(:,:) = 0._wp   ;   sfx_opw(:,:) = 0._wp 
    573566      sfx_bog(:,:) = 0._wp   ;   sfx_dyn(:,:) = 0._wp 
     
    580573      wfx_bom(:,:) = 0._wp   ;   wfx_sum(:,:) = 0._wp 
    581574      wfx_res(:,:) = 0._wp   ;   wfx_sub(:,:) = 0._wp 
    582       wfx_spr(:,:) = 0._wp   ;    
    583       ! 
    584       hfx_thd(:,:) = 0._wp   ;    
     575      wfx_spr(:,:) = 0._wp   ; 
     576      ! 
     577      hfx_thd(:,:) = 0._wp   ; 
    585578      hfx_snw(:,:) = 0._wp   ;   hfx_opw(:,:) = 0._wp 
    586579      hfx_bog(:,:) = 0._wp   ;   hfx_dyn(:,:) = 0._wp 
    587580      hfx_bom(:,:) = 0._wp   ;   hfx_sum(:,:) = 0._wp 
    588581      hfx_res(:,:) = 0._wp   ;   hfx_sub(:,:) = 0._wp 
    589       hfx_spr(:,:) = 0._wp   ;   hfx_dif(:,:) = 0._wp  
     582      hfx_spr(:,:) = 0._wp   ;   hfx_dif(:,:) = 0._wp 
    590583      hfx_err(:,:) = 0._wp   ;   hfx_err_rem(:,:) = 0._wp 
    591584      hfx_err_dif(:,:) = 0._wp 
     
    595588      afx_dyn(:,:) = 0._wp   ;   afx_thd(:,:) = 0._wp 
    596589      ! 
    597       diag_heat(:,:) = 0._wp ;   diag_smvi(:,:) = 0._wp ; 
    598       diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp ; 
     590      diag_heat(:,:) = 0._wp ;   diag_smvi(:,:) = 0._wp 
     591      diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp 
    599592      ! 
    600593   END SUBROUTINE sbc_lim_diag0 
    601594 
    602       
     595 
    603596   FUNCTION fice_cell_ave ( ptab ) 
    604597      !!-------------------------------------------------------------------------- 
     
    608601      REAL (wp), DIMENSION (jpi,jpj,jpl), INTENT (in) :: ptab 
    609602      INTEGER :: jl ! Dummy loop index 
    610        
    611       fice_cell_ave (:,:) = 0.0_wp 
     603 
     604      fice_cell_ave (:,:) = 0._wp 
    612605      DO jl = 1, jpl 
    613606         fice_cell_ave (:,:) = fice_cell_ave (:,:) + a_i (:,:,jl) * ptab (:,:,jl) 
    614607      END DO 
    615        
     608 
    616609   END FUNCTION fice_cell_ave 
    617     
    618     
     610 
     611 
    619612   FUNCTION fice_ice_ave ( ptab ) 
    620613      !!-------------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r6140 r7280  
    2424   USE sbc_oce          ! Surface boundary condition: ocean fields 
    2525   USE sbc_ice          ! Surface boundary condition: ice   fields 
    26    USE sbcblk_core      ! Surface boundary condition: CORE bulk 
    27    USE sbcblk_clio      ! Surface boundary condition: CLIO bulk 
     26   USE sbcblk           ! Surface boundary condition: bulk 
    2827   USE sbccpl           ! Surface boundary condition: coupled interface 
    2928   USE albedo 
     
    9392      !!--------------------------------------------------------------------- 
    9493      INTEGER, INTENT(in) ::   kt      ! ocean time step 
    95       INTEGER, INTENT(in) ::   ksbc    ! type of sbc ( =3 CLIO bulk ; =4 CORE bulk ; =5 coupled ) 
     94      INTEGER, INTENT(in) ::   ksbc    ! type of sbc ( =4 bulk ; =5 coupled ) 
    9695      !! 
    9796      INTEGER  ::   ji, jj   ! dummy loop indices 
     
    161160 
    162161         SELECT CASE( ksbc ) 
    163          CASE( jp_core , jp_purecpl )   ! CORE and COUPLED bulk formulations 
     162         CASE( jp_blk , jp_purecpl )   ! BULK and COUPLED bulk formulations 
    164163 
    165164            ! albedo depends on cloud fraction because of non-linear spectral effects 
    166165            zalb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    167             ! In CLIO the cloud fraction is read in the climatology and the all-sky albedo  
    168             ! (zalb_ice) is computed within the bulk routine 
    169166 
    170167         END SELECT 
     
    184181         ! 
    185182         SELECT CASE( ksbc ) 
    186          CASE( jp_clio )           ! CLIO bulk formulation 
    187 !           CALL blk_ice_clio( zsist, zalb_cs    , zalb_os    , zalb_ice   ,            & 
    188 !              &                      utau_ice   , vtau_ice   , qns_ice    , qsr_ice,   & 
    189 !              &                      qla_ice    , dqns_ice   , dqla_ice   ,            & 
    190 !              &                      tprecip    , sprecip    ,                         & 
    191 !              &                      fr1_i0     , fr2_i0     , cp_ice_msh , jpl  ) 
    192             CALL blk_ice_clio_tau 
    193             CALL blk_ice_clio_flx( zsist, zalb_cs, zalb_os, zalb_ice ) 
    194  
    195          CASE( jp_core )           ! CORE bulk formulation 
    196             CALL blk_ice_core_tau 
    197             CALL blk_ice_core_flx( zsist, zalb_ice ) 
    198  
     183         ! 
     184         CASE( jp_blk )           ! Bulk formulation 
     185            CALL blk_ice_tau 
     186            CALL blk_ice_flx( zsist, zalb_ice ) 
     187            ! 
    199188         CASE( jp_purecpl )            ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 
    200189            CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) 
     190            ! 
    201191         END SELECT 
    202192          
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r7278 r7280  
    1313   !!            3.4  ! 2011-11  (C. Harris) CICE added as an option 
    1414   !!            3.5  ! 2012-11  (A. Coward, G. Madec) Rethink of heat, mass and salt surface fluxes 
    15    !!            3.6  ! 2014-11  (P. Mathiot, C. Harris) add ice shelves melting                     
     15   !!            3.6  ! 2014-11  (P. Mathiot, C. Harris) add ice shelves melting 
     16   !!            4.0  ! 2016-06  (L. Brodeau) new general bulk formulation 
    1617   !!---------------------------------------------------------------------- 
    1718 
     
    3031   USE sbcssm         ! surface boundary condition: sea-surface mean variables 
    3132   USE sbcflx         ! surface boundary condition: flux formulation 
    32    USE sbcblk_clio    ! surface boundary condition: bulk formulation : CLIO 
    33    USE sbcblk_core    ! surface boundary condition: bulk formulation : CORE 
    34    USE sbcblk_mfs     ! surface boundary condition: bulk formulation : MFS 
     33   USE sbcblk         ! surface boundary condition: bulk formulation 
    3534   USE sbcice_if      ! surface boundary condition: ice-if sea-ice model 
    3635   USE sbcice_lim     ! surface boundary condition: LIM 3.0 sea-ice model 
    3736   USE sbcice_lim_2   ! surface boundary condition: LIM 2.0 sea-ice model 
    3837   USE sbcice_cice    ! surface boundary condition: CICE    sea-ice model 
    39    USE sbccpl         ! surface boundary condition: coupled florulation 
     38   USE sbccpl         ! surface boundary condition: coupled formulation 
    4039   USE cpl_oasis3     ! OASIS routines for coupling 
    4140   USE sbcssr         ! surface boundary condition: sea surface restoring 
     
    6362   PUBLIC   sbc        ! routine called by step.F90 
    6463   PUBLIC   sbc_init   ! routine called by opa.F90 
    65     
     64 
    6665   INTEGER ::   nsbc   ! type of surface boundary condition (deduced from namsbc informations) 
    67        
     66 
    6867   !!---------------------------------------------------------------------- 
    6968   !! NEMO/OPA 4.0 , NEMO-consortium (2016)  
     
    8584      !!              - nsbc: type of sbc 
    8685      !!---------------------------------------------------------------------- 
    87       INTEGER ::   icpt   ! local integer 
    88       !! 
    89       NAMELIST/namsbc/ nn_fsbc  , ln_usr   , ln_flx, ln_blk_clio, ln_blk_core, ln_blk_mfs,   & 
    90          &             ln_cpl   , ln_mixcpl, nn_components      , nn_limflx  ,               & 
    91          &             ln_traqsr, ln_dm2dc ,                                                 &   
    92          &             nn_ice   , nn_ice_embd,                                               & 
    93          &             ln_rnf   , ln_ssr   , ln_isf   , nn_fwb    , ln_apr_dyn,              & 
    94          &             ln_wave  ,                                                            & 
    95          &             nn_lsm    
    96       INTEGER  ::   ios 
    97       INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm 
    98       LOGICAL  ::   ll_purecpl 
     86      INTEGER ::   ios, icpt                         ! local integer 
     87      LOGICAL ::   ll_purecpl, ll_opa, ll_not_nemo   ! local logical 
     88      !! 
     89      NAMELIST/namsbc/ nn_fsbc  ,                                                    & 
     90         &             ln_usr   , ln_flx   , ln_blk       ,                          & 
     91         &             ln_cpl   , ln_mixcpl, nn_components, nn_limflx,               & 
     92         &             nn_ice   , nn_ice_embd,                                       & 
     93         &             ln_traqsr, ln_dm2dc ,                                         & 
     94         &             ln_rnf   , nn_fwb   , ln_ssr       , ln_isf   , ln_apr_dyn,   & 
     95         &             ln_wave  ,                                                    & 
     96         &             nn_lsm 
    9997      !!---------------------------------------------------------------------- 
    10098      ! 
     
    105103      ENDIF 
    106104      ! 
    107       REWIND( numnam_ref )       ! Namelist namsbc in reference namelist : Surface boundary 
     105      !                       !**  read Surface Module namelist 
     106      REWIND( numnam_ref )          !* Namelist namsbc in reference namelist : Surface boundary 
    108107      READ  ( numnam_ref, namsbc, IOSTAT = ios, ERR = 901) 
    109108901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc in reference namelist', lwp ) 
    110109      ! 
    111       REWIND( numnam_cfg )       ! Namelist namsbc in configuration namelist : Parameters of the run 
     110      REWIND( numnam_cfg )          !* Namelist namsbc in configuration namelist : Parameters of the run 
    112111      READ  ( numnam_cfg, namsbc, IOSTAT = ios, ERR = 902 ) 
    113112902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc in configuration namelist', lwp ) 
    114113      IF(lwm) WRITE( numond, namsbc ) 
    115114      ! 
    116       !                          ! overwrite namelist parameter using CPP key information 
     115      !                             !* overwrite namelist parameter using CPP key information 
    117116      IF( Agrif_Root() ) THEN                ! AGRIF zoom 
    118         IF( lk_lim2 )   nn_ice      = 2 
    119         IF( lk_lim3 )   nn_ice      = 3 
    120         IF( lk_cice )   nn_ice      = 4 
    121       ENDIF 
    122       ! 
    123       IF(lwp) THEN               ! Control print 
     117         IF( lk_lim2 )   nn_ice      = 2 
     118         IF( lk_lim3 )   nn_ice      = 3 
     119         IF( lk_cice )   nn_ice      = 4 
     120      ENDIF 
     121      ! 
     122      IF(lwp) THEN                  !* Control print 
    124123         WRITE(numout,*) '   Namelist namsbc (partly overwritten with CPP key setting)' 
    125          WRITE(numout,*) '      Frequency update of sbc (and ice)             nn_fsbc       = ', nn_fsbc 
     124         WRITE(numout,*) '      frequency update of sbc (and ice)             nn_fsbc       = ', nn_fsbc 
    126125         WRITE(numout,*) '      Type of air-sea fluxes : ' 
    127126         WRITE(numout,*) '         user defined formulation                   ln_usr        = ', ln_usr 
    128127         WRITE(numout,*) '         flux         formulation                   ln_flx        = ', ln_flx 
    129          WRITE(numout,*) '         CLIO bulk    formulation                   ln_blk_clio   = ', ln_blk_clio 
    130          WRITE(numout,*) '         CORE bulk    formulation                   ln_blk_core   = ', ln_blk_core 
    131          WRITE(numout,*) '         MFS  bulk    formulation                   ln_blk_mfs    = ', ln_blk_mfs 
     128         WRITE(numout,*) '         bulk         formulation                   ln_blk        = ', ln_blk 
    132129         WRITE(numout,*) '      Type of coupling (Ocean/Ice/Atmosphere) : ' 
    133130         WRITE(numout,*) '         ocean-atmosphere coupled formulation       ln_cpl        = ', ln_cpl 
    134          WRITE(numout,*) '         forced-coupled mixed formulation           ln_mixcpl     = ', ln_mixcpl 
     131         WRITE(numout,*) '         mixed forced-coupled     formulation       ln_mixcpl     = ', ln_mixcpl 
     132!!gm  lk_oasis is controlled by key_oasis3  ===>>>  It shoud be removed from the namelist  
    135133         WRITE(numout,*) '         OASIS coupling (with atm or sas)           lk_oasis      = ', lk_oasis 
    136134         WRITE(numout,*) '         components of your executable              nn_components = ', nn_components 
    137135         WRITE(numout,*) '         Multicategory heat flux formulation (LIM3) nn_limflx     = ', nn_limflx 
    138136         WRITE(numout,*) '      Sea-ice : ' 
    139          WRITE(numout,*) '         ice management in the sbc (=0/1/2/3)       nn_ice        = ', nn_ice  
     137         WRITE(numout,*) '         ice management in the sbc (=0/1/2/3)       nn_ice        = ', nn_ice 
    140138         WRITE(numout,*) '         ice-ocean embedded/levitating (=0/1/2)     nn_ice_embd   = ', nn_ice_embd 
    141139         WRITE(numout,*) '      Misc. options of sbc : ' 
    142140         WRITE(numout,*) '         Light penetration in temperature Eq.       ln_traqsr     = ', ln_traqsr 
    143          WRITE(numout,*) '            daily mean to diurnal cycle qsr            ln_dm2dc   = ', ln_dm2dc  
     141         WRITE(numout,*) '            daily mean to diurnal cycle qsr            ln_dm2dc   = ', ln_dm2dc 
    144142         WRITE(numout,*) '         Sea Surface Restoring on SST and/or SSS    ln_ssr        = ', ln_ssr 
    145143         WRITE(numout,*) '         FreshWater Budget control  (=0/1/2)        nn_fwb        = ', nn_fwb 
     
    149147         WRITE(numout,*) '         closed sea (=0/1) (set in namdom)          nn_closea     = ', nn_closea 
    150148         WRITE(numout,*) '         nb of iterations if land-sea-mask applied  nn_lsm        = ', nn_lsm 
    151          WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave   
     149         WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave 
    152150      ENDIF 
    153151      ! 
     
    157155         IF( MOD( rdt  , 2.  ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
    158156      ENDIF 
    159       ! 
    160       IF(lwp) THEN 
    161          WRITE(numout,*) 
    162          SELECT CASE ( nn_limflx )        ! LIM3 Multi-category heat flux formulation 
    163          CASE ( -1 )   ;   WRITE(numout,*) '   LIM3: use per-category fluxes (nn_limflx = -1) ' 
    164          CASE (  0 )   ;   WRITE(numout,*) '   LIM3: use average per-category fluxes (nn_limflx = 0) '  
    165          CASE (  1 )   ;   WRITE(numout,*) '   LIM3: use average then redistribute per-category fluxes (nn_limflx = 1) ' 
    166          CASE (  2 )   ;   WRITE(numout,*) '   LIM3: Redistribute a single flux over categories (nn_limflx = 2) ' 
     157      !                       !**  check option consistency 
     158      ! 
     159      IF(lwp) WRITE(numout,*)       !* Single / Multi - executable (NEMO / OPA+SAS)  
     160      SELECT CASE( nn_components ) 
     161      CASE( jp_iam_nemo ) 
     162         IF(lwp) WRITE(numout,*) '   NEMO configured as a single executable (i.e. including both OPA and Surface module' 
     163      CASE( jp_iam_opa  ) 
     164         IF(lwp) WRITE(numout,*) '   Multi executable configuration. Here, OPA component' 
     165         IF( .NOT.lk_oasis )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
     166         IF( ln_cpl        )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_cpl = T in OPA'   ) 
     167         IF( ln_mixcpl     )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
     168      CASE( jp_iam_sas  ) 
     169         IF(lwp) WRITE(numout,*) '   Multi executable configuration. Here, SAS component' 
     170         IF( .NOT.lk_oasis )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
     171         IF( ln_mixcpl     )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
     172      CASE DEFAULT 
     173         CALL ctl_stop( 'sbc_init : unsupported value for nn_components' ) 
     174      END SELECT 
     175      !                             !* coupled options 
     176      IF( ln_cpl ) THEN 
     177         IF( .NOT. lk_oasis )   CALL ctl_stop( 'sbc_init : coupled mode with an atmosphere model (ln_cpl=T)',   & 
     178            &                                  '           required to defined key_oasis3' ) 
     179      ENDIF 
     180      IF( ln_mixcpl ) THEN 
     181         IF( .NOT. lk_oasis )   CALL ctl_stop( 'sbc_init : mixed forced-coupled mode (ln_mixcpl=T) ',   & 
     182            &                                  '           required to defined key_oasis3' ) 
     183         IF( .NOT.ln_cpl    )   CALL ctl_stop( 'sbc_init : mixed forced-coupled mode (ln_mixcpl=T) requires ln_cpl = T' ) 
     184         IF( nn_components /= jp_iam_nemo )    & 
     185            &                   CALL ctl_stop( 'sbc_init : the mixed forced-coupled mode (ln_mixcpl=T) ',   & 
     186            &                                   '          not yet working with sas-opa coupling via oasis' ) 
     187      ENDIF 
     188      !                             !* sea-ice 
     189      SELECT CASE( nn_ice ) 
     190      CASE( 0 )                        !- no ice in the domain 
     191      CASE( 1 )                        !- Ice-cover climatology ("Ice-if" model)   
     192      CASE( 2 )                        !- LIM2 ice model 
     193         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : LIM2 sea-ice model requires ln_blk or ln_cpl = T' ) 
     194      CASE( 3 )                        !- LIM3 ice model 
     195         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : LIM3 sea-ice model requires ln_blk or ln_cpl = T' ) 
     196         IF( nn_ice_embd == 0            )   CALL ctl_stop( 'sbc_init : LIM3 sea-ice models require nn_ice_embd = 1 or 2' ) 
     197      CASE( 4 )                        !- CICE ice model 
     198         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : CICE sea-ice model requires ln_blk or ln_cpl = T' ) 
     199         IF( nn_ice_embd == 0            )   CALL ctl_stop( 'sbc_init : CICE sea-ice models require nn_ice_embd = 1 or 2' ) 
     200         IF( lk_agrif                    )   CALL ctl_stop( 'sbc_init : CICE sea-ice model not currently available with AGRIF' )  
     201      CASE DEFAULT                     !- not supported 
     202      END SELECT 
     203      ! 
     204      IF( nn_ice == 3 ) THEN           !- LIM3 case: multi-category flux option 
     205         IF(lwp) WRITE(numout,*) 
     206         SELECT CASE( nn_limflx )         ! LIM3 Multi-category heat flux formulation 
     207         CASE ( -1 ) 
     208            IF(lwp) WRITE(numout,*) '   LIM3: use per-category fluxes (nn_limflx = -1) ' 
     209            IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
     210         CASE ( 0  ) 
     211            IF(lwp) WRITE(numout,*) '   LIM3: use average per-category fluxes (nn_limflx = 0) ' 
     212         CASE ( 1  ) 
     213            IF(lwp) WRITE(numout,*) '   LIM3: use average then redistribute per-category fluxes (nn_limflx = 1) ' 
     214            IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
     215         CASE ( 2  ) 
     216            IF(lwp) WRITE(numout,*) '   LIM3: Redistribute a single flux over categories (nn_limflx = 2) ' 
     217            IF( .NOT.ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in forced mode cannot be 2' ) 
     218         CASE DEFAULT 
     219            CALL ctl_stop( 'sbcmod: LIM3 option, nn_limflx, should be between -1 and 2' ) 
    167220         END SELECT 
    168       ENDIF 
    169       ! 
    170       IF( nn_components /= jp_iam_nemo .AND. .NOT. lk_oasis )   & 
    171          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
    172       IF( nn_components == jp_iam_opa .AND. ln_cpl )   & 
    173          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_cpl = T in OPA' ) 
    174       IF( nn_components == jp_iam_opa .AND. ln_mixcpl )   & 
    175          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
    176       IF( ln_cpl .AND. .NOT. lk_oasis )    & 
    177          &      CALL ctl_stop( 'sbc_init : OASIS-coupled atmosphere model, but key_oasis3 disabled' ) 
    178       IF( ln_mixcpl .AND. .NOT. lk_oasis )    & 
    179          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires the cpp key key_oasis3' ) 
    180       IF( ln_mixcpl .AND. .NOT. ln_cpl )    & 
    181          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires ln_cpl = T' ) 
    182       IF( ln_mixcpl .AND. nn_components /= jp_iam_nemo )    & 
    183          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) is not yet working with sas-opa coupling via oasis' ) 
    184  
    185       !                              ! allocate sbc arrays 
     221      ELSE                             ! other sea-ice model 
     222         IF( nn_limflx >= 0  )   CALL ctl_warn( 'sbc_init : multi-category flux option (nn_limflx) only available in LIM3' ) 
     223      ENDIF 
     224      ! 
     225      !                       !**  allocate and set required variables 
     226      ! 
     227      !                             !* allocate sbc arrays 
    186228      IF( sbc_oce_alloc() /= 0 )   CALL ctl_stop( 'sbc_init : unable to allocate sbc_oce arrays' ) 
    187  
    188       !                          ! Checks: 
    189       IF( .NOT. ln_isf ) THEN                      ! variable initialisation if no ice shelf  
     229      ! 
     230      IF( .NOT.ln_isf ) THEN        !* No ice-shelf in the domain : allocate and set to zero 
    190231         IF( sbc_isf_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_init : unable to allocate sbc_isf arrays' ) 
    191          fwfisf  (:,:)   = 0.0_wp ; fwfisf_b  (:,:)   = 0.0_wp 
    192          risf_tsc(:,:,:) = 0.0_wp ; risf_tsc_b(:,:,:) = 0.0_wp 
     232         fwfisf  (:,:)   = 0._wp   ;   risf_tsc  (:,:,:) = 0._wp 
     233         fwfisf_b(:,:)   = 0._wp   ;   risf_tsc_b(:,:,:) = 0._wp 
    193234      END IF 
    194       IF( nn_ice == 0 .AND. nn_components /= jp_iam_opa )   fr_i(:,:) = 0._wp    ! no ice in the domain, ice fraction is always zero 
    195  
    196       sfx(:,:) = 0._wp                             ! the salt flux due to freezing/melting will be computed (i.e. will be non-zero)  
    197                                                    ! only if sea-ice is present 
    198   
    199       fmmflx(:,:) = 0._wp                          ! freezing-melting array initialisation 
    200        
    201       taum(:,:) = 0._wp                            ! Initialise taum for use in gls in case of reduced restart 
    202  
    203       !                                            ! restartability    
    204       IF( ( nn_ice == 2 .OR. nn_ice ==3 ) .AND. .NOT.( ln_blk_clio .OR. ln_blk_core .OR. ln_cpl ) )   & 
    205          &   CALL ctl_stop( 'LIM sea-ice model requires a bulk formulation or coupled configuration' ) 
    206       IF( nn_ice == 4 .AND. .NOT.( ln_blk_core .OR. ln_cpl ) )   & 
    207          &   CALL ctl_stop( 'CICE sea-ice model requires ln_blk_core or ln_cpl' ) 
    208       IF( nn_ice == 4 .AND. lk_agrif )   & 
    209          &   CALL ctl_stop( 'CICE sea-ice model not currently available with AGRIF' ) 
    210       IF( ( nn_ice == 3 .OR. nn_ice == 4 ) .AND. nn_ice_embd == 0 )   & 
    211          &   CALL ctl_stop( 'LIM3 and CICE sea-ice models require nn_ice_embd = 1 or 2' ) 
    212       IF( ( nn_ice /= 3 ) .AND. ( nn_limflx >= 0 ) )   & 
    213          &   WRITE(numout,*) 'The nn_limflx>=0 option has no effect if sea ice model is not LIM3' 
    214       IF( ( nn_ice == 3 ) .AND. ( ln_cpl ) .AND. ( ( nn_limflx == -1 ) .OR. ( nn_limflx == 1 ) ) )   & 
    215          &   CALL ctl_stop( 'The chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
    216       IF( ( nn_ice == 3 ) .AND. ( .NOT. ln_cpl ) .AND. ( nn_limflx == 2 ) )   & 
    217          &   CALL ctl_stop( 'The chosen nn_limflx for LIM3 in forced mode cannot be 2' ) 
    218  
    219       IF( ln_dm2dc )   nday_qsr = -1   ! initialisation flag 
    220  
    221       IF( ln_dm2dc .AND. .NOT.( ln_flx .OR. ln_blk_core ) .AND. nn_components /= jp_iam_opa )   & 
    222          &   CALL ctl_stop( 'diurnal cycle into qsr field from daily values requires a flux or core-bulk formulation' ) 
    223        
    224       !                          ! Choice of the Surface Boudary Condition (set nsbc) 
    225       ll_purecpl = ln_cpl .AND. .NOT. ln_mixcpl 
    226       ! 
     235      IF( nn_ice == 0 ) THEN        !* No sea-ice in the domain : ice fraction is always zero 
     236         IF( nn_components /= jp_iam_opa )   fr_i(:,:) = 0._wp    ! except for OPA in SAS-OPA coupled case 
     237      ENDIF 
     238      ! 
     239      sfx   (:,:) = 0._wp           !* salt flux due to freezing/melting 
     240      fmmflx(:,:) = 0._wp           !* freezing minus melting flux 
     241 
     242      taum(:,:) = 0._wp             !* wind stress module (needed in GLS in case of reduced restart) 
     243 
     244      IF( ln_dm2dc ) THEN           !* daily mean to diurnal cycle 
     245         nday_qsr = -1   ! allow initialization at the 1st call 
     246         IF( .NOT.( ln_flx .OR. ln_blk ) .AND. nn_components /= jp_iam_opa )   & 
     247            &   CALL ctl_stop( 'qsr diurnal cycle from daily values requires a flux or bulk formulation' ) 
     248      ENDIF 
     249 
     250      !                             !* Choice of the Surface Boudary Condition 
     251      !                             (set nsbc) 
     252      ! 
     253      ll_purecpl  = ln_cpl .AND. .NOT.ln_mixcpl 
     254      ll_opa      = nn_components == jp_iam_opa 
     255      ll_not_nemo = nn_components /= jp_iam_nemo 
    227256      icpt = 0 
     257      ! 
    228258      IF( ln_usr          ) THEN   ;   nsbc = jp_usr     ; icpt = icpt + 1   ;   ENDIF       ! user defined         formulation 
    229259      IF( ln_flx          ) THEN   ;   nsbc = jp_flx     ; icpt = icpt + 1   ;   ENDIF       ! flux                 formulation 
    230       IF( ln_blk_clio     ) THEN   ;   nsbc = jp_clio    ; icpt = icpt + 1   ;   ENDIF       ! CLIO bulk            formulation 
    231       IF( ln_blk_core     ) THEN   ;   nsbc = jp_core    ; icpt = icpt + 1   ;   ENDIF       ! CORE bulk            formulation 
    232       IF( ln_blk_mfs      ) THEN   ;   nsbc = jp_mfs     ; icpt = icpt + 1   ;   ENDIF       ! MFS  bulk            formulation 
     260      IF( ln_blk          ) THEN   ;   nsbc = jp_blk     ; icpt = icpt + 1   ;   ENDIF       ! bulk                 formulation 
    233261      IF( ll_purecpl      ) THEN   ;   nsbc = jp_purecpl ; icpt = icpt + 1   ;   ENDIF       ! Pure Coupled         formulation 
    234       IF( nn_components == jp_iam_opa )   & 
    235          &                  THEN   ;   nsbc = jp_none    ; icpt = icpt + 1   ;   ENDIF       ! opa coupling via SAS module 
    236       ! 
    237       IF( icpt /= 1 )    CALL ctl_stop( 'sbc_init: choose ONE and only ONE sbc option' ) 
    238       ! 
    239       IF(lwp) THEN 
     262      IF( ll_opa          ) THEN   ;   nsbc = jp_none    ; icpt = icpt + 1   ;   ENDIF       ! opa coupling via SAS module 
     263      ! 
     264      IF( icpt /= 1 )    CALL ctl_stop( 'sbc_init : choose ONE and only ONE sbc option' ) 
     265      ! 
     266      IF(lwp) THEN                     !- print the choice of surface flux formulation 
    240267         WRITE(numout,*) 
    241268         SELECT CASE( nsbc ) 
    242269         CASE( jp_usr     )   ;   WRITE(numout,*) '   user defined formulation' 
    243          CASE( jp_flx     )   ;   WRITE(numout,*) '   flux formulation' 
    244          CASE( jp_clio    )   ;   WRITE(numout,*) '   CLIO bulk formulation' 
    245          CASE( jp_core    )   ;   WRITE(numout,*) '   CORE bulk formulation' 
    246          CASE( jp_purecpl )   ;   WRITE(numout,*) '   pure coupled formulation' 
    247          CASE( jp_mfs     )   ;   WRITE(numout,*) '   MFS Bulk formulation' 
    248          CASE( jp_none    )   ;   WRITE(numout,*) '   OPA coupled to SAS via oasis' 
    249             IF( ln_mixcpl )       WRITE(numout,*) '       + forced-coupled mixed formulation' 
     270         CASE( jp_flx     )   ;   WRITE(numout,*) '      ===>>   flux formulation' 
     271         CASE( jp_blk     )   ;   WRITE(numout,*) '      ===>>   bulk formulation' 
     272         CASE( jp_purecpl )   ;   WRITE(numout,*) '      ===>>   pure coupled formulation' 
     273!!gm abusive use of jp_none ??   ===>>> need to be check and changed by adding a jp_sas parameter 
     274         CASE( jp_none    )   ;   WRITE(numout,*) '      ===>>   OPA coupled to SAS via oasis' 
     275            IF( ln_mixcpl )       WRITE(numout,*) '                  + forced-coupled mixed formulation' 
    250276         END SELECT 
    251          IF( nn_components/= jp_iam_nemo )  & 
    252             &                     WRITE(numout,*) '       + OASIS coupled SAS' 
    253       ENDIF 
    254       ! 
    255       IF( lk_oasis )   CALL sbc_cpl_init (nn_ice)   ! OASIS initialisation. must be done before: (1) first time step 
    256       !                                             !                                            (2) the use of nn_fsbc 
     277         IF( ll_not_nemo  )       WRITE(numout,*) '                  + OASIS coupled SAS' 
     278      ENDIF 
     279      ! 
     280      !                             !* OASIS initialization 
     281      ! 
     282      IF( lk_oasis )   CALL sbc_cpl_init( nn_ice )   ! Must be done before: (1) first time step 
     283      !                                              !                      (2) the use of nn_fsbc 
    257284      !     nn_fsbc initialization if OPA-SAS coupling via OASIS 
    258       !     sas model time step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly 
     285      !     SAS time-step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly 
    259286      IF( nn_components /= jp_iam_nemo ) THEN 
    260287         IF( nn_components == jp_iam_opa )   nn_fsbc = cpl_freq('O_SFLX') / NINT(rdt) 
     
    268295      ENDIF 
    269296      ! 
     297      !                             !* check consistency between model timeline and nn_fsbc 
    270298      IF( MOD( nitend - nit000 + 1, nn_fsbc) /= 0 .OR.   & 
    271           MOD( nstock             , nn_fsbc) /= 0 ) THEN  
    272          WRITE(ctmp1,*) 'experiment length (', nitend - nit000 + 1, ') or nstock (', nstock,   & 
     299          MOD( nstock             , nn_fsbc) /= 0 ) THEN 
     300         WRITE(ctmp1,*) 'sbc_init : experiment length (', nitend - nit000 + 1, ') or nstock (', nstock,   & 
    273301            &           ' is NOT a multiple of nn_fsbc (', nn_fsbc, ')' 
    274302         CALL ctl_stop( ctmp1, 'Impossible to properly do model restart' ) 
     
    276304      ! 
    277305      IF( MOD( rday, REAL(nn_fsbc, wp) * rdt ) /= 0 )   & 
    278          &  CALL ctl_warn( 'nn_fsbc is NOT a multiple of the number of time steps in a day' ) 
    279       ! 
    280       IF( ln_dm2dc .AND. ( ( NINT(rday) / ( nn_fsbc * NINT(rdt) ) )  < 8 ) )   & 
    281          &   CALL ctl_warn( 'diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 
    282       ! 
    283                           CALL sbc_ssm_init               ! Sea-surface mean fields initialisation 
    284       ! 
    285       IF( ln_ssr      )   CALL sbc_ssr_init               ! Sea-Surface Restoring initialisation 
    286       ! 
    287                           CALL sbc_rnf_init               ! Runof initialisation 
    288       ! 
    289       IF( nn_ice == 3 )   CALL sbc_lim_init               ! LIM3 initialisation 
    290       ! 
    291       IF( nn_ice == 4 )   CALL cice_sbc_init( nsbc )      ! CICE initialisation 
     306         &  CALL ctl_warn( 'sbc_init : nn_fsbc is NOT a multiple of the number of time steps in a day' ) 
     307      ! 
     308      IF( ln_dm2dc .AND. NINT(rday) / ( nn_fsbc * NINT(rdt) ) < 8  )   & 
     309         &   CALL ctl_warn( 'sbc_init : diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 
     310      ! 
     311    
     312      !                       !**  associated modules : initialization 
     313      ! 
     314                          CALL sbc_ssm_init            ! Sea-surface mean fields initialization 
     315      ! 
     316      IF( ln_blk      )   CALL sbc_blk_init            ! bulk formulae initialization 
     317 
     318      IF( ln_ssr      )   CALL sbc_ssr_init            ! Sea-Surface Restoring initialization 
     319      ! 
     320                          CALL sbc_rnf_init            ! Runof initialization 
     321      ! 
     322      IF( nn_ice == 3 )   CALL sbc_lim_init            ! LIM3 initialization 
     323      ! 
     324      IF( nn_ice == 4 )   CALL cice_sbc_init( nsbc )   ! CICE initialization 
    292325      ! 
    293326   END SUBROUTINE sbc_init 
     
    297330      !!--------------------------------------------------------------------- 
    298331      !!                    ***  ROUTINE sbc  *** 
    299       !!               
     332      !! 
    300333      !! ** Purpose :   provide at each time-step the ocean surface boundary 
    301334      !!                condition (momentum, heat and freshwater fluxes) 
    302335      !! 
    303       !! ** Method  :   blah blah  to be written ?????????  
     336      !! ** Method  :   blah blah  to be written ????????? 
    304337      !!                CAUTION : never mask the surface stress field (tke sbc) 
    305338      !! 
    306       !! ** Action  : - set the ocean surface boundary condition at before and now  
    307       !!                time step, i.e.   
     339      !! ** Action  : - set the ocean surface boundary condition at before and now 
     340      !!                time step, i.e. 
    308341      !!                utau_b, vtau_b, qns_b, qsr_b, emp_n, sfx_b, qrp_b, erp_b 
    309342      !!                utau  , vtau  , qns  , qsr  , emp  , sfx  , qrp  , erp 
    310343      !!              - updte the ice fraction : fr_i 
    311344      !!---------------------------------------------------------------------- 
    312       INTEGER, INTENT(in) ::   kt       ! ocean time step 
     345      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     346      ! 
     347      LOGICAL ::   ll_sas, ll_opa   ! local logical 
    313348      !!--------------------------------------------------------------------- 
    314349      ! 
     
    332367      !                                            ! ---------------------------------------- ! 
    333368      ! 
    334       IF( nn_components /= jp_iam_sas )   CALL sbc_ssm ( kt )  ! ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 
    335       !                                                        ! averaged over nf_sbc time-step 
    336       IF( ln_wave                     )   CALL sbc_wave( kt )  ! surface waves 
    337        
    338        
    339                                                    !==  sbc formulation  ==! 
    340                                                              
     369      ll_sas = nn_components == jp_iam_sas               ! component flags 
     370      ll_opa = nn_components == jp_iam_opa 
     371      ! 
     372      IF( .NOT.ll_sas )   CALL sbc_ssm ( kt )            ! mean ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 
     373      IF( ln_wave     )   CALL sbc_wave( kt )            ! surface waves 
     374 
     375      ! 
     376      !                                            !==  sbc formulation  ==! 
     377      !                                                    
    341378      SELECT CASE( nsbc )                                ! Compute ocean surface boundary condition 
    342379      !                                                  ! (i.e. utau,vtau, qns, qsr, emp, sfx) 
    343       CASE( jp_usr   )   ;   CALL usr_def_sbc ( kt )                    ! user defined formulation  
    344       CASE( jp_flx   )   ;   CALL sbc_flx     ( kt )                    ! flux formulation 
    345       CASE( jp_clio  )   ;   CALL sbc_blk_clio( kt )                    ! bulk formulation : CLIO for the ocean 
    346       CASE( jp_core  )    
    347          IF( nn_components == jp_iam_sas ) & 
    348             &                CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: SAS receiving fields from OPA  
    349                              CALL sbc_blk_core( kt )                    ! bulk formulation : CORE for the ocean 
    350                                                                         ! from oce: sea surface variables (sst_m, sss_m,  ssu_m,  ssv_m) 
    351       CASE( jp_purecpl )  ;  CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! pure coupled formulation 
    352                                                                         ! 
    353       CASE( jp_mfs   )   ;   CALL sbc_blk_mfs ( kt )                    ! bulk formulation : MFS for the ocean 
    354       CASE( jp_none  )  
    355          IF( nn_components == jp_iam_opa )   & 
    356             &                CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS 
     380      CASE( jp_usr   )     ;   CALL usr_def_sbc( kt )                    ! user defined formulation  
     381      CASE( jp_flx     )   ;   CALL sbc_flx    ( kt )                    ! flux formulation 
     382      CASE( jp_blk     ) 
     383         IF( ll_sas    )       CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: SAS receiving fields from OPA 
     384                               CALL sbc_blk    ( kt )                    ! bulk formulation for the ocean 
     385                               ! 
     386      CASE( jp_purecpl )   ;   CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! pure coupled formulation 
     387      CASE( jp_none    ) 
     388         IF( ll_opa    )       CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS 
    357389      END SELECT 
    358390 
    359       IF( ln_mixcpl )        CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing 
     391      IF( ln_mixcpl )          CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing 
    360392 
    361393      ! 
     
    367399      CASE(  3 )   ;         CALL sbc_ice_lim  ( kt, nsbc )          ! LIM-3 ice model 
    368400      CASE(  4 )   ;         CALL sbc_ice_cice ( kt, nsbc )          ! CICE ice model 
    369       END SELECT                                               
     401      END SELECT 
    370402 
    371403      IF( ln_icebergs    )   CALL icb_stp( kt )                   ! compute icebergs 
     
    374406 
    375407      IF( ln_rnf         )   CALL sbc_rnf( kt )                   ! add runoffs to fresh water fluxes 
    376   
     408 
    377409      IF( ln_ssr         )   CALL sbc_ssr( kt )                   ! add SST/SSS damping term 
    378410 
    379411      IF( nn_fwb    /= 0 )   CALL sbc_fwb( kt, nn_fwb, nn_fsbc )  ! control the freshwater budget 
    380412 
    381       ! treatment of closed sea in the model domain  
    382       ! (update freshwater fluxes) 
     413      ! treatment of closed sea in the model domain   (update freshwater fluxes) 
    383414      ! Should not be ran if ln_diurnal_only 
    384415      IF( .NOT.ln_diurnal_only .AND. nn_closea == 1 )   CALL sbc_clo( kt, cn_cfg, nn_cfg )    
     
    391422         !                                             ! ---------------------------------------- ! 
    392423         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    393             & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN  
     424            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    394425            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file' 
    395426            CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b )   ! before i-stress  (U-point) 
     
    407438         ELSE                                                   !* no restart: set from nit000 values 
    408439            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields set to nit000' 
    409             utau_b(:,:) = utau(:,:)  
     440            utau_b(:,:) = utau(:,:) 
    410441            vtau_b(:,:) = vtau(:,:) 
    411442            qns_b (:,:) = qns (:,:) 
    412             emp_b (:,:) = emp(:,:) 
    413             sfx_b (:,:) = sfx(:,:) 
     443            emp_b (:,:) = emp (:,:) 
     444            sfx_b (:,:) = sfx (:,:) 
    414445         ENDIF 
    415446      ENDIF 
     
    435466         CALL iom_put( "empmr"  , emp    - rnf )                ! upward water flux 
    436467         CALL iom_put( "empbmr" , emp_b  - rnf )                ! before upward water flux ( needed to recalculate the time evolution of ssh in offline ) 
    437          CALL iom_put( "saltflx", sfx  )                        ! downward salt flux   
    438                                                                 ! (includes virtual salt flux beneath ice  
    439                                                                 ! in linear free surface case) 
     468         CALL iom_put( "saltflx", sfx  )                        ! downward salt flux (includes virtual salt flux beneath ice in linear free surface case) 
    440469         CALL iom_put( "fmmflx", fmmflx  )                      ! Freezing-melting water flux 
    441          CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux  
     470         CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux 
    442471         CALL iom_put( "qns"   , qns        )                   ! solar heat flux 
    443472         CALL iom_put( "qsr"   ,       qsr  )                   ! solar heat flux 
    444          IF( nn_ice > 0 .OR. nn_components == jp_iam_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction  
    445          CALL iom_put( "taum"  , taum       )                   ! wind stress module  
     473         IF( nn_ice > 0 .OR. ll_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction 
     474         CALL iom_put( "taum"  , taum       )                   ! wind stress module 
    446475         CALL iom_put( "wspd"  , wndm       )                   ! wind speed  module over free ocean or leads in presence of sea-ice 
    447476      ENDIF 
    448477      ! 
    449       CALL iom_put( "utau", utau )   ! i-wind stress   (stress can be updated at  
    450       CALL iom_put( "vtau", vtau )   ! j-wind stress    each time step in sea-ice) 
     478      CALL iom_put( "utau", utau )   ! i-wind stress   (stress can be updated at each time step in sea-ice) 
     479      CALL iom_put( "vtau", vtau )   ! j-wind stress 
    451480      ! 
    452481      IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r7278 r7280  
    279279      IF(lwp) THEN 
    280280         WRITE(numout,*) 
    281          WRITE(numout,*) 'sbc_rnf : runoff ' 
    282          WRITE(numout,*) '~~~~~~~ ' 
     281         WRITE(numout,*) 'sbc_rnf_init : runoff ' 
     282         WRITE(numout,*) '~~~~~~~~~~~~ ' 
    283283         WRITE(numout,*) '   Namelist namsbc_rnf' 
    284284         WRITE(numout,*) '      specific river mouths treatment            ln_rnf_mouth = ', ln_rnf_mouth 
     
    296296         IF(lwp) WRITE(numout,*) '          runoffs inflow read in a file' 
    297297         IF( ierror > 0 ) THEN 
    298             CALL ctl_stop( 'sbc_rnf: unable to allocate sf_rnf structure' )   ;   RETURN 
     298            CALL ctl_stop( 'sbc_rnf_init: unable to allocate sf_rnf structure' )   ;   RETURN 
    299299         ENDIF 
    300300         ALLOCATE( sf_rnf(1)%fnow(jpi,jpj,1)   ) 
    301301         IF( sn_rnf%ln_tint ) ALLOCATE( sf_rnf(1)%fdta(jpi,jpj,1,2) ) 
    302          CALL fld_fill( sf_rnf, (/ sn_rnf /), cn_dir, 'sbc_rnf_init', 'read runoffs data', 'namsbc_rnf' ) 
     302         CALL fld_fill( sf_rnf, (/ sn_rnf /), cn_dir, 'sbc_rnf_init', 'read runoffs data', 'namsbc_rnf', no_print ) 
    303303      ENDIF 
    304304      ! 
     
    312312         ALLOCATE( sf_t_rnf(1)%fnow(jpi,jpj,1)   ) 
    313313         IF( sn_t_rnf%ln_tint ) ALLOCATE( sf_t_rnf(1)%fdta(jpi,jpj,1,2) ) 
    314          CALL fld_fill (sf_t_rnf, (/ sn_t_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff temperature data', 'namsbc_rnf' ) 
     314         CALL fld_fill (sf_t_rnf, (/ sn_t_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff temperature data', 'namsbc_rnf', no_print ) 
    315315      ENDIF 
    316316      ! 
     
    324324         ALLOCATE( sf_s_rnf(1)%fnow(jpi,jpj,1)   ) 
    325325         IF( sn_s_rnf%ln_tint ) ALLOCATE( sf_s_rnf(1)%fdta(jpi,jpj,1,2) ) 
    326          CALL fld_fill (sf_s_rnf, (/ sn_s_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff salinity data', 'namsbc_rnf' ) 
     326         CALL fld_fill (sf_s_rnf, (/ sn_s_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff salinity data', 'namsbc_rnf', no_print ) 
    327327      ENDIF 
    328328      ! 
     
    452452            DO WHILE( nkrnf /= jpkm1 .AND. gdepw_1d(nkrnf+1) < rn_hrnf )   ;   nkrnf = nkrnf + 1 
    453453            END DO 
    454             IF( ln_sco )   CALL ctl_warn( 'sbc_rnf: number of levels over which Kz is increased is computed for zco...' ) 
     454            IF( ln_sco )   CALL ctl_warn( 'sbc_rnf_init: number of levels over which Kz is increased is computed for zco...' ) 
    455455         ENDIF 
    456456         IF(lwp) WRITE(numout,*) 
     
    499499      ! 
    500500      IF(lwp) WRITE(numout,*) 
    501       IF(lwp) WRITE(numout,*) 'rnf_mouth : river mouth mask' 
    502       IF(lwp) WRITE(numout,*) '~~~~~~~~~ ' 
     501      IF(lwp) WRITE(numout,*) '   rnf_mouth : river mouth mask' 
     502      IF(lwp) WRITE(numout,*) '   ~~~~~~~~~ ' 
    503503      ! 
    504504      cl_rnfile = TRIM( cn_dir )//TRIM( sn_cnf%clname ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r7278 r7280  
    8888            !                                             ! ----------------------------------------------- ! 
    8989            IF(lwp) WRITE(numout,*) 
    90             IF(lwp) WRITE(numout,*) '~~~~~~~   mean fields initialised to instantaneous values' 
     90            IF(lwp) WRITE(numout,*) 'sbc_ssm : mean fields initialised to instantaneous values' 
     91            IF(lwp) WRITE(numout,*) '~~~~~~~   ' 
    9192            zcoef = REAL( nn_fsbc - 1, wp ) 
    9293            ssu_m(:,:) = zcoef * ub(:,:,1) 
     
    194195         ! 
    195196         IF(lwp) WRITE(numout,*) 
    196          IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields, nn_fsbc=1 : instantaneous values' 
    197          IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
     197         IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields, nn_fsbc=1 : instantaneous values' 
     198         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
    198199         ! 
    199200      ELSE 
    200201         !                
    201202         IF(lwp) WRITE(numout,*) 
    202          IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields' 
    203          IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
     203         IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields' 
     204         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' 
    204205         ! 
    205206         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
     
    220221            ! 
    221222            IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN      ! nn_fsbc has changed between 2 runs 
    222                IF(lwp) WRITE(numout,*) '~~~~~~~   restart with a change in the frequency of mean ',   & 
    223                   &                    'from ', zf_sbc, ' to ', nn_fsbc  
     223               IF(lwp) WRITE(numout,*) '   restart with a change in the frequency of mean from ', zf_sbc, ' to ', nn_fsbc  
    224224               zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc  
    225225               ssu_m(:,:) = zcoef * ssu_m(:,:)  
     
    231231               frq_m(:,:) = zcoef * frq_m(:,:) 
    232232            ELSE 
    233                IF(lwp) WRITE(numout,*) '~~~~~~~   mean fields read in the ocean restart file' 
     233               IF(lwp) WRITE(numout,*) '   mean fields read in the ocean restart file' 
    234234            ENDIF 
    235235         ENDIF 
     
    238238      IF( .NOT. l_ssm_mean ) THEN   ! default initialisation. needed by lim_istate 
    239239         ! 
    240          IF(lwp) WRITE(numout,*) '          default initialisation of ss?_m arrays' 
     240         IF(lwp) WRITE(numout,*) '   default initialisation of ss._m arrays' 
    241241         ssu_m(:,:) = ub(:,:,1) 
    242242         ssv_m(:,:) = vb(:,:,1) 
    243243         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    244          ELSE                    ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
     244         ELSE                   ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
    245245         ENDIF 
    246246         sss_m(:,:) = tsn  (:,:,1,jp_sal) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90

    r6140 r7280  
    199199         ! 
    200200         ! fill sf_sst with sn_sst and control print 
    201          CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr' ) 
     201         CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr', no_print ) 
    202202         IF( sf_sst(1)%ln_tint )   ALLOCATE( sf_sst(1)%fdta(jpi,jpj,1,2), STAT=ierror ) 
    203203         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_ssr: unable to allocate sf_sst data array' ) 
     
    213213         ! 
    214214         ! fill sf_sss with sn_sss and control print 
    215          CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr' ) 
     215         CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr', no_print ) 
    216216         IF( sf_sss(1)%ln_tint )   ALLOCATE( sf_sss(1)%fdta(jpi,jpj,1,2), STAT=ierror ) 
    217217         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_ssr: unable to allocate sf_sss data array' ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r6140 r7280  
    2525   PRIVATE 
    2626 
    27    PUBLIC   sbc_wave    ! routine called in sbc_blk_core or sbc_blk_mfs 
     27   PUBLIC   sbc_wave    ! routine called in sbc_blk 
    2828    
    2929   INTEGER , PARAMETER ::   jpfld  = 3   ! maximum number of files to read for srokes drift 
     
    9494         IF( .NOT.( ln_cdgw .OR. ln_sdw ) )    & 
    9595            &  CALL ctl_warn( 'ln_sbcwave=T but nor drag coefficient (ln_cdgw=F) neither stokes drift activated (ln_sdw=F)' ) 
    96          IF( ln_cdgw .AND. .NOT.(ln_blk_mfs .OR. ln_blk_core) )   &        
    97             &  CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core') 
     96         IF( ln_cdgw .AND. .NOT.ln_blk )   &        
     97            &  CALL ctl_stop( 'drag coefficient read from wave model definable only with bulk formulae') 
    9898         ! 
    9999         IF( ln_cdgw ) THEN 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r6140 r7280  
    255255         WRITE(numout,*) 
    256256         SELECT CASE ( nadv ) 
    257          CASE( np_NO_adv  )   ;   WRITE(numout,*) '         NO T-S advection' 
    258          CASE( np_CEN     )   ;   WRITE(numout,*) '         CEN      scheme is used. Horizontal order: ', nn_cen_h,   & 
     257         CASE( np_NO_adv  )   ;   WRITE(numout,*) '      ===>>   NO T-S advection' 
     258         CASE( np_CEN     )   ;   WRITE(numout,*) '      ===>>   CEN      scheme is used. Horizontal order: ', nn_cen_h,   & 
    259259            &                                                                     ' Vertical   order: ', nn_cen_v 
    260          CASE( np_FCT     )   ;   WRITE(numout,*) '         FCT      scheme is used. Horizontal order: ', nn_fct_h,   & 
     260         CASE( np_FCT     )   ;   WRITE(numout,*) '      ===>>   FCT      scheme is used. Horizontal order: ', nn_fct_h,   & 
    261261            &                                                                      ' Vertical   order: ', nn_fct_v 
    262          CASE( np_FCT_zts )   ;   WRITE(numout,*) '         use 2nd order FCT with ', nn_fct_zts,'vertical sub-timestepping' 
    263          CASE( np_MUS     )   ;   WRITE(numout,*) '         MUSCL    scheme is used' 
    264          CASE( np_UBS     )   ;   WRITE(numout,*) '         UBS      scheme is used' 
    265          CASE( np_QCK     )   ;   WRITE(numout,*) '         QUICKEST scheme is used' 
     262         CASE( np_FCT_zts )   ;   WRITE(numout,*) '      ===>>   use 2nd order FCT with ', nn_fct_zts,'vertical sub-timestepping' 
     263         CASE( np_MUS     )   ;   WRITE(numout,*) '      ===>>   MUSCL    scheme is used' 
     264         CASE( np_UBS     )   ;   WRITE(numout,*) '      ===>>   UBS      scheme is used' 
     265         CASE( np_QCK     )   ;   WRITE(numout,*) '      ===>>   QUICKEST scheme is used' 
    266266         END SELECT 
    267267      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90

    r7277 r7280  
    308308         WRITE(numout,*) 
    309309         IF( ln_mle ) THEN 
    310             WRITE(numout,*) '   Mixed Layer Eddy induced transport added to tracer advection' 
    311             IF( nn_mle == 0 )   WRITE(numout,*) '   Fox-Kemper et al 2010 formulation' 
    312             IF( nn_mle == 1 )   WRITE(numout,*) '   New formulation' 
     310            WRITE(numout,*) '      ===>>   Mixed Layer Eddy induced transport added to tracer advection' 
     311            IF( nn_mle == 0 )   WRITE(numout,*) '              Fox-Kemper et al 2010 formulation' 
     312            IF( nn_mle == 1 )   WRITE(numout,*) '              New formulation' 
    313313         ELSE 
    314             WRITE(numout,*) '   Mixed Layer Eddy parametrisation NOT used' 
     314            WRITE(numout,*) '      ===>>   Mixed Layer Eddy parametrisation NOT used' 
    315315         ENDIF 
    316316      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r6140 r7280  
    176176            ! fill sf_chl with sn_chl and control print 
    177177            CALL fld_fill( sf_qgh, (/ sn_qgh /), cn_dir, 'tra_bbc_init',   & 
    178                &          'bottom temperature boundary condition', 'nambbc' ) 
     178               &          'bottom temperature boundary condition', 'nambbc', no_print ) 
    179179 
    180180            CALL fld_read( nit000, 1, sf_qgh )                         ! Read qgh data 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r7277 r7280  
    519519         WRITE(numout,*) 'tra_bbl_init : bottom boundary layer initialisation' 
    520520         WRITE(numout,*) '~~~~~~~~~~~~' 
    521          WRITE(numout,*) '       Namelist nambbl : set bbl parameters' 
    522          WRITE(numout,*) '          diffusive bbl (=1)   or not (=0)    nn_bbl_ldf = ', nn_bbl_ldf 
    523          WRITE(numout,*) '          advective bbl (=1/2) or not (=0)    nn_bbl_adv = ', nn_bbl_adv 
    524          WRITE(numout,*) '          diffusive bbl coefficient           rn_ahtbbl  = ', rn_ahtbbl, ' m2/s' 
    525          WRITE(numout,*) '          advective bbl coefficient           rn_gambbl  = ', rn_gambbl, ' s' 
     521         WRITE(numout,*) '   Namelist nambbl : set bbl parameters' 
     522         WRITE(numout,*) '      diffusive bbl (=1)   or not (=0)    nn_bbl_ldf = ', nn_bbl_ldf 
     523         WRITE(numout,*) '      advective bbl (=1/2) or not (=0)    nn_bbl_adv = ', nn_bbl_adv 
     524         WRITE(numout,*) '      diffusive bbl coefficient           rn_ahtbbl  = ', rn_ahtbbl, ' m2/s' 
     525         WRITE(numout,*) '      advective bbl coefficient           rn_gambbl  = ', rn_gambbl, ' s' 
    526526      ENDIF 
    527527 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r6140 r7280  
    192192         WRITE(numout,*) 
    193193         WRITE(numout,*) 'tra_dmp_init : T and S newtonian relaxation' 
    194          WRITE(numout,*) '~~~~~~~~~~~' 
     194         WRITE(numout,*) '~~~~~~~~~~~~' 
    195195         WRITE(numout,*) '   Namelist namtra_dmp : set relaxation parameters' 
    196196         WRITE(numout,*) '      Apply relaxation   or not       ln_tradmp = ', ln_tradmp 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r6352 r7280  
    110110         WRITE(numout,*) 
    111111         WRITE(numout,*) 'tra_ldf_init : lateral tracer diffusive operator' 
    112          WRITE(numout,*) '~~~~~~~~~~~' 
     112         WRITE(numout,*) '~~~~~~~~~~~~' 
    113113         WRITE(numout,*) '   Namelist namtra_ldf: already read in ldftra module' 
    114114         WRITE(numout,*) '      see ldf_tra_init report for lateral mixing parameters' 
    115          WRITE(numout,*) 
    116115      ENDIF 
    117116      !                                   ! use of lateral operator or not 
     
    187186         WRITE(numout,*) 
    188187         SELECT CASE( nldf ) 
    189          CASE( np_no_ldf )   ;   WRITE(numout,*) '   NO lateral diffusion' 
    190          CASE( np_lap    )   ;   WRITE(numout,*) '   laplacian iso-level operator' 
    191          CASE( np_lap_i  )   ;   WRITE(numout,*) '   Rotated laplacian operator (standard)' 
    192          CASE( np_lap_it )   ;   WRITE(numout,*) '   Rotated laplacian operator (triad)' 
    193          CASE( np_blp    )   ;   WRITE(numout,*) '   bilaplacian iso-level operator' 
    194          CASE( np_blp_i  )   ;   WRITE(numout,*) '   Rotated bilaplacian operator (standard)' 
    195          CASE( np_blp_it )   ;   WRITE(numout,*) '   Rotated bilaplacian operator (triad)' 
     188         CASE( np_no_ldf )   ;   WRITE(numout,*) '      ===>>   NO lateral diffusion' 
     189         CASE( np_lap    )   ;   WRITE(numout,*) '      ===>>   laplacian iso-level operator' 
     190         CASE( np_lap_i  )   ;   WRITE(numout,*) '      ===>>   Rotated laplacian operator (standard)' 
     191         CASE( np_lap_it )   ;   WRITE(numout,*) '      ===>>   Rotated laplacian operator (triad)' 
     192         CASE( np_blp    )   ;   WRITE(numout,*) '      ===>>   bilaplacian iso-level operator' 
     193         CASE( np_blp_i  )   ;   WRITE(numout,*) '      ===>>   Rotated bilaplacian operator (standard)' 
     194         CASE( np_blp_it )   ;   WRITE(numout,*) '      ===>>   Rotated bilaplacian operator (triad)' 
    196195         END SELECT 
    197196      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r6403 r7280  
    406406            !                                        ! fill sf_chl with sn_chl and control print 
    407407            CALL fld_fill( sf_chl, (/ sn_chl /), cn_dir, 'tra_qsr_init',   & 
    408                &           'Solar penetration function of read chlorophyll', 'namtra_qsr' ) 
     408               &           'Solar penetration function of read chlorophyll', 'namtra_qsr' , no_print ) 
    409409         ENDIF 
    410410         IF( nqsr == np_RGB ) THEN                 ! constant Chl 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r6140 r7280  
    141141         WRITE(numout,*) 'tra_zdf_init : vertical tracer physics scheme' 
    142142         WRITE(numout,*) '~~~~~~~~~~~' 
    143          IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    144          IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
     143         IF( nzdf ==  0 )   WRITE(numout,*) '      ===>>   Explicit time-splitting scheme' 
     144         IF( nzdf ==  1 )   WRITE(numout,*) '      ===>>   Implicit (euler backward) scheme' 
    145145      ENDIF 
    146146      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRD/trdini.F90

    r6140 r7280  
    5757      IF(lwp) THEN                  ! control print 
    5858         WRITE(numout,*) 
    59          WRITE(numout,*) ' trd_init : Momentum/Tracers trends' 
    60          WRITE(numout,*) ' ~~~~~~~~~~' 
     59         WRITE(numout,*) 'trd_init : Momentum/Tracers trends' 
     60         WRITE(numout,*) '~~~~~~~~' 
    6161         WRITE(numout,*) '   Namelist namtrd : set trends parameters' 
    6262         WRITE(numout,*) '      global domain averaged dyn & tra trends   ln_glo_trd  = ', ln_glo_trd 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r6140 r7280  
    9999      ! 
    100100      IF( nn_timing == 1 )  CALL timing_start('zdf_bfr') 
    101       ! 
    102       IF( kt == nit000 .AND. lwp ) THEN 
    103          WRITE(numout,*) 
    104          WRITE(numout,*) 'zdf_bfr : Set bottom friction coefficient (non-linear case)' 
    105          WRITE(numout,*) '~~~~~~~~' 
    106       ENDIF 
    107101      ! 
    108102      IF( nn_bfr == 2 ) THEN                 ! quadratic bottom friction only 
     
    259253      IF(lwp) WRITE(numout,*) 
    260254      IF(lwp) WRITE(numout,*) 'zdf_bfr_init : momentum bottom friction' 
    261       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~' 
     255      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    262256      IF(lwp) WRITE(numout,*) '   Namelist nam_bfr : set bottom friction parameters' 
    263257      ! 
     
    266260      CASE( 0 ) 
    267261         IF(lwp) WRITE(numout,*) '      free-slip ' 
    268          bfrua(:,:) = 0.e0 
    269          bfrva(:,:) = 0.e0 
    270          tfrua(:,:) = 0.e0 
    271          tfrva(:,:) = 0.e0 
     262         bfrua(:,:) = 0._wp 
     263         bfrva(:,:) = 0._wp 
     264         tfrua(:,:) = 0._wp 
     265         tfrva(:,:) = 0._wp 
    272266         ! 
    273267      CASE( 1 ) 
     
    321315         IF(lwp) WRITE(numout,*) '      log formulation   ln_bfr2d = ', ln_loglayer 
    322316         IF(lwp) WRITE(numout,*) '      bottom roughness  rn_bfrz0 [m] = ', rn_bfrz0 
    323          IF( rn_bfrz0<=0.e0 ) THEN 
     317         IF( rn_bfrz0 <= 0._wp ) THEN 
    324318            WRITE(ctmp1,*) '      bottom roughness must be strictly positive' 
    325319            CALL ctl_stop( ctmp1 ) 
     
    336330            IF(lwp) WRITE(numout,*) '      log formulation   ln_tfr2d     = ', ln_loglayer 
    337331            IF(lwp) WRITE(numout,*) '      top roughness     rn_tfrz0 [m] = ', rn_tfrz0 
    338             IF( rn_tfrz0<=0.e0 ) THEN 
     332            IF( rn_tfrz0 <= 0._wp ) THEN 
    339333               WRITE(ctmp1,*) '      top roughness must be strictly positive' 
    340334               CALL ctl_stop( ctmp1 ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90

    r5836 r7280  
    6666      IF(lwp) THEN               !* Parameter print 
    6767         WRITE(numout,*) 
    68          WRITE(numout,*) 'zdf_init: vertical physics' 
     68         WRITE(numout,*) 'zdf_init : vertical physics' 
    6969         WRITE(numout,*) '~~~~~~~~' 
    7070         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters' 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r7277 r7280  
    560560      IF(lwp) THEN                  ! control print 
    561561         WRITE(numout,*) 
    562          WRITE(numout,*) 'namcfg  : configuration initialization through namelist read' 
    563          WRITE(numout,*) '~~~~~~~ ' 
     562         WRITE(numout,*) 'namcfg : configuration initialization through namelist read' 
     563         WRITE(numout,*) '~~~~~~ ' 
    564564         WRITE(numout,*) '   Namelist namcfg' 
    565565         WRITE(numout,*) '      read domain configuration file                ln_read_cfg      = ', ln_read_cfg 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90

    r6140 r7280  
    110110      IF(lwp) THEN 
    111111         WRITE(numout,*) 
    112          WRITE(numout,*) 'trc_oce_rgb : Initialisation of the optical look-up table' 
    113          WRITE(numout,*) '~~~~~~~~~~~ ' 
     112         WRITE(numout,*) '   trc_oce_rgb : Initialisation of the optical look-up table' 
     113         WRITE(numout,*) '   ~~~~~~~~~~~ ' 
    114114      ENDIF 
    115115      ! 
Note: See TracChangeset for help on using the changeset viewer.