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 9124 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA – NEMO

Ignore:
Timestamp:
2017-12-19T09:26:25+01:00 (6 years ago)
Author:
gm
Message:

dev_merge_2017: ln_timing instead of nn_timing + restricted timing to nemo_init and routine called by step in OPA_SRC

Location:
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r9019 r9124  
    1313   USE dom_oce        ! ocean space and time domain 
    1414   USE eosbn2         ! equation of state                (eos_bn2 routine) 
    15    USE lib_mpp        ! distribued memory computing library 
    16    USE iom            ! I/O manager library 
    17    USE timing         ! preformance summary 
    18    USE wrk_nemo       ! working arrays 
    19    USE fldread        ! type FLD_N 
    2015   USE phycst         ! physical constant 
    2116   USE in_out_manager  ! I/O manager 
    2217   USE zdfddm 
    2318   USE zdf_oce 
     19   ! 
     20   USE lib_mpp        ! distribued memory computing library 
     21   USE iom            ! I/O manager library 
     22   USE fldread        ! type FLD_N 
     23   USE timing         ! preformance summary 
     24   USE wrk_nemo       ! working arrays 
    2425 
    2526   IMPLICIT NONE 
     
    8081      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace 
    8182      !!-------------------------------------------------------------------- 
    82       IF( nn_timing == 1 )   CALL timing_start('dia_ar5') 
     83      IF( ln_timing )   CALL timing_start('dia_ar5') 
    8384  
    8485      IF( kt == nit000 )     CALL dia_ar5_init 
     
    255256      ENDIF 
    256257      ! 
    257       IF( nn_timing == 1 )   CALL timing_stop('dia_ar5') 
     258      IF( ln_timing )   CALL timing_stop('dia_ar5') 
    258259      ! 
    259260   END SUBROUTINE dia_ar5 
     261 
    260262 
    261263   SUBROUTINE dia_ar5_hst( ktra, cptr, pua, pva )  
     
    332334      !!---------------------------------------------------------------------- 
    333335      ! 
    334       IF( nn_timing == 1 )   CALL timing_start('dia_ar5_init') 
    335       ! 
    336336      l_ar5 = .FALSE. 
    337337      IF(   iom_use( 'voltot'  ) .OR. iom_use( 'sshtot'    )  .OR. iom_use( 'sshdyn' )  .OR.  &  
     
    380380      ENDIF 
    381381      ! 
    382       IF( nn_timing == 1 )   CALL timing_stop('dia_ar5_init') 
    383       ! 
    384382   END SUBROUTINE dia_ar5_init 
    385383 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diacfl.F90

    r9019 r9124  
    6060      !!---------------------------------------------------------------------- 
    6161      ! 
    62       IF( nn_timing == 1 )   CALL timing_start('dia_cfl') 
     62      IF( ln_timing )   CALL timing_start('dia_cfl') 
    6363      ! 
    6464      !                       ! setup timestep multiplier to account for initial Eulerian timestep 
     
    138138      ENDIF 
    139139      ! 
    140       IF( nn_timing == 1 )   CALL timing_stop('dia_cfl') 
     140      IF( ln_timing )   CALL timing_stop('dia_cfl') 
    141141      ! 
    142142   END SUBROUTINE dia_cfl 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r9019 r9124  
    3737   USE domvvl 
    3838   USE timing          ! preformance summary 
    39    USE wrk_nemo        ! working arrays 
    4039 
    4140   IMPLICIT NONE 
     
    121120 
    122121 
    123   SUBROUTINE dia_dct_init 
    124      !!--------------------------------------------------------------------- 
    125      !!               ***  ROUTINE diadct  ***   
    126      !! 
    127      !!  ** Purpose: Read the namelist parameters 
    128      !!              Open output files 
    129      !! 
    130      !!--------------------------------------------------------------------- 
    131      NAMELIST/namdct/nn_dct,nn_dctwri,nn_secdebug 
    132      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    133  
    134      IF( nn_timing == 1 )   CALL timing_start('dia_dct_init') 
     122   SUBROUTINE dia_dct_init 
     123      !!--------------------------------------------------------------------- 
     124      !!               ***  ROUTINE diadct  ***   
     125      !! 
     126      !!  ** Purpose: Read the namelist parameters 
     127      !!              Open output files 
     128      !! 
     129      !!--------------------------------------------------------------------- 
     130      INTEGER  ::   ios                 ! Local integer output status for namelist read 
     131      !! 
     132      NAMELIST/namdct/nn_dct,nn_dctwri,nn_secdebug 
     133      !!--------------------------------------------------------------------- 
    135134 
    136135     REWIND( numnam_ref )              ! Namelist namdct in reference namelist : Diagnostic: transport through sections 
     
    140139     REWIND( numnam_cfg )              ! Namelist namdct in configuration namelist : Diagnostic: transport through sections 
    141140     READ  ( numnam_cfg, namdct, IOSTAT = ios, ERR = 902 ) 
    142 902  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp ) 
     141902  IF( ios > 0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp ) 
    143142     IF(lwm) WRITE ( numond, namdct ) 
    144143 
     
    175174     transports_3d(:,:,:,:)=0.0  
    176175     transports_2d(:,:,:)  =0.0  
    177  
    178      IF( nn_timing == 1 )   CALL timing_stop('dia_dct_init') 
    179176     ! 
    180177  END SUBROUTINE dia_dct_init 
    181178  
    182179  
    183   SUBROUTINE dia_dct(kt) 
     180  SUBROUTINE dia_dct( kt ) 
    184181     !!--------------------------------------------------------------------- 
    185182     !!               ***  ROUTINE diadct  ***   
     
    198195     !!               Reinitialise all relevant arrays to zero  
    199196     !!--------------------------------------------------------------------- 
    200      INTEGER,INTENT(in)        ::kt 
     197     INTEGER, INTENT(in) ::   kt 
    201198     ! 
    202      INTEGER             :: jsec,            &! loop on sections 
    203                             itotal            ! nb_sec_max*nb_type_class*nb_class_max 
    204      LOGICAL             :: lldebug =.FALSE.  ! debug a section   
    205       
    206      INTEGER , DIMENSION(1)             :: ish   ! tmp array for mpp_sum 
    207      INTEGER , DIMENSION(3)             :: ish2  !   " 
    208      REAL(wp), POINTER, DIMENSION(:)    :: zwork !   "   
    209      REAL(wp), POINTER, DIMENSION(:,:,:):: zsum  !   " 
     199     INTEGER ::   jsec              ! loop on sections 
     200     INTEGER ::   itotal            ! nb_sec_max*nb_type_class*nb_class_max 
     201     LOGICAL ::   lldebug =.FALSE.  ! debug a section   
     202     INTEGER              , DIMENSION(1)    ::   ish     ! work array for mpp_sum 
     203     INTEGER              , DIMENSION(3)    ::   ish2    !   " 
     204     REAL(wp), ALLOCATABLE, DIMENSION(:)    ::   zwork   !   "   
     205     REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)::   zsum    !   " 
    210206     !!---------------------------------------------------------------------     
    211207     ! 
    212      IF( nn_timing == 1 )   CALL timing_start('dia_dct') 
     208     IF( ln_timing )   CALL timing_start('dia_dct') 
    213209 
    214210     IF( lk_mpp )THEN 
    215211        itotal = nb_sec_max*nb_type_class*nb_class_max 
    216         CALL wrk_alloc( itotal                                , zwork )  
    217         CALL wrk_alloc( nb_sec_max,nb_type_class,nb_class_max , zsum  ) 
     212        ALLOCATE( zwork(itotal) , zsum(nb_sec_max,nb_type_class,nb_class_max) ) 
    218213     ENDIF     
    219214  
     
    286281     IF( lk_mpp )THEN 
    287282        itotal = nb_sec_max*nb_type_class*nb_class_max 
    288         CALL wrk_dealloc( itotal                                , zwork )  
    289         CALL wrk_dealloc( nb_sec_max,nb_type_class,nb_class_max , zsum  ) 
     283        DEALLOCATE( zwork , zsum  ) 
    290284     ENDIF     
    291285 
    292      IF( nn_timing == 1 )   CALL timing_stop('dia_dct') 
     286     IF( ln_timing )   CALL timing_stop('dia_dct') 
    293287     ! 
    294288  END SUBROUTINE dia_dct 
     289 
    295290 
    296291  SUBROUTINE readsec  
     
    304299     !! 
    305300     !!--------------------------------------------------------------------- 
    306      !! * Local variables 
    307301     INTEGER :: iptglo , iptloc                               ! Global and local number of points for a section 
    308302     INTEGER :: isec, iiglo, ijglo, iiloc, ijloc,iost,i1 ,i2  ! temporary  integer 
    309303     INTEGER :: jsec, jpt                                     ! dummy loop indices 
    310  
    311304     INTEGER, DIMENSION(2) :: icoord  
    312      CHARACTER(len=160)    :: clname                          !filename 
     305     LOGICAL               :: llbon, lldebug   ! local logical 
     306     CHARACTER(len=160)    :: clname           ! filename 
    313307     CHARACTER(len=200)    :: cltmp 
    314      CHARACTER(len=200)    :: clformat                        !automatic format 
    315      TYPE(POINT_SECTION),DIMENSION(nb_point_max)  ::coordtemp !contains listpoints coordinates  
    316                                                               !read in the file 
    317      INTEGER, POINTER, DIMENSION(:) :: directemp              !contains listpoints directions 
    318                                                               !read in the files 
    319      LOGICAL :: llbon                                       ,&!local logical 
    320                 lldebug                                       !debug the section 
     308     CHARACTER(len=200)    :: clformat                          !automatic format 
     309     TYPE(POINT_SECTION),DIMENSION(nb_point_max)  ::coordtemp   !contains listpoints coordinates read in the file 
     310     INTEGER, DIMENSION(nb_point_max) :: directemp              !contains listpoints directions read in the files 
    321311     !!------------------------------------------------------------------------------------- 
    322      CALL wrk_alloc( nb_point_max, directemp ) 
    323312 
    324313     !open input file 
     
    491480  
    492481     nb_sec = jsec-1   !number of section read in the file 
    493  
    494      CALL wrk_dealloc( nb_point_max, directemp ) 
    495482     ! 
    496483  END SUBROUTINE readsec 
     484 
    497485 
    498486  SUBROUTINE removepoints(sec,cdind,cdextr,ld_debug) 
     
    518506                istart,iend      !first and last points selected in listpoint 
    519507     INTEGER :: jpoint           !loop on list points 
    520      INTEGER, POINTER, DIMENSION(:)   :: idirec !contains temporary sec%direction 
    521      INTEGER, POINTER, DIMENSION(:,:) :: icoord !contains temporary sec%listpoint 
     508     INTEGER, POINTER, DIMENSION(nb_point_max)   :: idirec !contains temporary sec%direction 
     509     INTEGER, POINTER, DIMENSION(2,nb_point_max) :: icoord !contains temporary sec%listpoint 
    522510     !---------------------------------------------------------------------------- 
    523      CALL wrk_alloc(    nb_point_max, idirec ) 
    524      CALL wrk_alloc( 2, nb_point_max, icoord ) 
    525  
     511      ! 
    526512     IF( ld_debug )WRITE(numout,*)'      -------------------------' 
    527513     IF( ld_debug )WRITE(numout,*)'      removepoints in listpoint' 
     
    571557        WRITE(numout,*)'      sec%direction after removepoints :',sec%direction(1:sec%nb_point) 
    572558     ENDIF 
    573  
    574      CALL wrk_dealloc(    nb_point_max, idirec ) 
    575      CALL wrk_dealloc( 2, nb_point_max, icoord ) 
    576   END SUBROUTINE removepoints 
    577  
    578   SUBROUTINE transport(sec,ld_debug,jsec) 
     559      ! 
     560   END SUBROUTINE removepoints 
     561 
     562   SUBROUTINE transport(sec,ld_debug,jsec) 
    579563     !!------------------------------------------------------------------------------------------- 
    580564     !!                     ***  ROUTINE transport  *** 
     
    596580     !! 
    597581     !!------------------------------------------------------------------------------------------- 
    598      !! * Arguments 
    599582     TYPE(SECTION),INTENT(INOUT) :: sec 
    600583     LOGICAL      ,INTENT(IN)    :: ld_debug 
    601584     INTEGER      ,INTENT(IN)    :: jsec        ! numeric identifier of section 
    602      
    603      !! * Local variables 
    604      INTEGER             :: jk, jseg, jclass,jl,                 &!loop on level/segment/classes/ice categories 
    605                             isgnu, isgnv                          !  
    606      REAL(wp)            :: zumid, zvmid,                        &!U/V velocity on a cell segment  
    607                             zumid_ice, zvmid_ice,                &!U/V ice velocity  
    608                             zTnorm                                !transport of velocity through one cell's sides  
    609      REAL(wp)            :: ztn, zsn, zrhoi, zrhop, zsshn, zdep !temperature/salinity/potential density/ssh/depth at u/v point 
    610  
    611      TYPE(POINT_SECTION) :: k 
     585     ! 
     586     INTEGER ::   jk, jseg, jclass,jl, isgnu, isgnv    ! loop on level/segment/classes/ice categories 
     587     REAL(wp)::   zumid, zvmid, zumid_ice, zvmid_ice   ! U/V ocean & ice velocity on a cell segment  
     588     REAL(wp)::   zTnorm                               ! transport of velocity through one cell's sides  
     589     REAL(wp)::   ztn, zsn, zrhoi, zrhop, zsshn, zdep  ! temperature/salinity/potential density/ssh/depth at u/v point 
     590     TYPE(POINT_SECTION) ::   k 
    612591      !!-------------------------------------------------------- 
    613592      ! 
     
    1008987     REAL(wp)              :: zslope             ! section's slope coeff 
    1009988     ! 
    1010      REAL(wp), POINTER, DIMENSION(:):: zsumclasses ! 1D workspace  
     989     REAL(wp), DIMENSION(nb_type_class)::   zsumclasses  ! 1D workspace  
    1011990     !!-------------------------------------------------------------  
    1012      CALL wrk_alloc(nb_type_class , zsumclasses )   
    1013991 
    1014992     zsumclasses(:)=0._wp 
     
    11211099118   FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3F12.4) 
    11221100119   FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3E15.6) 
    1123  
    1124       CALL wrk_dealloc(nb_type_class , zsumclasses )   
    11251101      ! 
    11261102   END SUBROUTINE dia_dct_wri 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90

    r7646 r9124  
    2222   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2323   USE timing          ! preformance summary 
    24    USE wrk_nemo        ! working arrays 
    2524 
    2625   IMPLICIT NONE 
     
    177176      REAL(wp) :: ztime, ztemp 
    178177      !!-------------------------------------------------------------------- 
    179       IF( nn_timing == 1 )   CALL timing_start('dia_harm') 
    180  
    181       IF( kt == nit000 ) CALL dia_harm_init 
    182  
     178      IF( ln_timing )   CALL timing_start('dia_harm') 
     179      ! 
     180      IF( kt == nit000 )   CALL dia_harm_init 
     181      ! 
    183182      IF( kt >= nit000_han .AND. kt <= nitend_han .AND. MOD(kt,nstep_han) == 0 ) THEN 
    184  
     183         ! 
    185184         ztime = (kt-nit000+1) * rdt  
    186         
     185         ! 
    187186         nhc = 0 
    188187         DO jh = 1, nb_ana 
     
    191190               ztemp =(     MOD(jc,2) * ft(jh) *COS(ana_freq(jh)*ztime + vt(jh) + ut(jh))  & 
    192191                  &    +(1.-MOD(jc,2))* ft(jh) *SIN(ana_freq(jh)*ztime + vt(jh) + ut(jh))) 
    193  
     192                  ! 
    194193               DO jj = 1,jpj 
    195194                  DO ji = 1,jpi 
     
    205204         !        
    206205      END IF 
    207  
    208       IF ( kt == nitend_han )   CALL dia_harm_end 
    209  
    210       IF( nn_timing == 1 )   CALL timing_stop('dia_harm') 
    211   
     206      ! 
     207      IF( kt == nitend_han )   CALL dia_harm_end 
     208      ! 
     209      IF( ln_timing )   CALL timing_stop('dia_harm') 
     210      ! 
    212211   END SUBROUTINE dia_harm 
    213212 
     
    225224      INTEGER :: ksp, kun, keq 
    226225      REAL(wp) :: ztime, ztime_ini, ztime_end 
    227       REAL(wp) :: X1,X2 
    228       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ana_amp 
    229       !!-------------------------------------------------------------------- 
    230       CALL wrk_alloc( jpi , jpj , jpmax_harmo , 2 , ana_amp ) 
    231  
     226      REAL(wp) :: X1, X2 
     227      REAL(wp), DIMENSION(jpi,jpj,jpmax_harmo,2) ::   ana_amp   ! workspace 
     228      !!-------------------------------------------------------------------- 
     229      ! 
    232230      IF(lwp) WRITE(numout,*) 
    233231      IF(lwp) WRITE(numout,*) 'anharmo_end: kt=nitend_han: Perform harmonic analysis' 
     
    364362         END DO 
    365363      END DO 
    366  
     364      ! 
    367365      CALL dia_wri_harm ! Write results in files 
    368       CALL wrk_dealloc( jpi , jpj , jpmax_harmo , 2 , ana_amp ) 
    369366      ! 
    370367   END SUBROUTINE dia_harm_end 
     
    427424      INTEGER                         :: ji_sd, jj_sd, ji1_sd, ji2_sd, jk1_sd, jk2_sd 
    428425      REAL(wp)                        :: zval1, zval2, zx1 
    429       REAL(wp), POINTER, DIMENSION(:) :: ztmpx, zcol1, zcol2 
    430       INTEGER , POINTER, DIMENSION(:) :: ipos2, ipivot 
     426      REAL(wp), DIMENSION(jpincomax) :: ztmpx, zcol1, zcol2 
     427      INTEGER , DIMENSION(jpincomax) :: ipos2, ipivot 
    431428      !--------------------------------------------------------------------------------- 
    432       CALL wrk_alloc( jpincomax , ztmpx , zcol1 , zcol2 ) 
    433       CALL wrk_alloc( jpincomax , ipos2 , ipivot        ) 
    434              
     429      !             
    435430      IF( init == 1 ) THEN 
    436431         IF( nsparse > jpdimsparse )   CALL ctl_stop( 'STOP', 'SUR_DETERMINE : nsparse .GT. jpdimsparse') 
     
    517512         ztmp7(ipos1(jj_sd))=ztmpx(jj_sd) 
    518513      END DO 
    519  
    520       CALL wrk_dealloc( jpincomax , ztmpx , zcol1 , zcol2 ) 
    521       CALL wrk_dealloc( jpincomax , ipos2 , ipivot        ) 
    522514      ! 
    523515   END SUBROUTINE SUR_DETERMINE 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r7753 r9124  
    3131   USE lib_mpp         ! distributed memory computing library 
    3232   USE timing          ! preformance summary 
    33    USE wrk_nemo        ! work arrays 
    3433 
    3534   IMPLICIT NONE 
     
    8281      REAL(wp)   ::   z_wn_trd_t , z_wn_trd_s     !    -     - 
    8382      REAL(wp)   ::   z_ssh_hc , z_ssh_sc         !    -     - 
    84       REAL(wp), DIMENSION(:,:), POINTER ::   z2d0, z2d1 
    85       !!--------------------------------------------------------------------------- 
    86       IF( nn_timing == 1 )   CALL timing_start('dia_hsb')       
    87       ! 
    88       CALL wrk_alloc( jpi,jpj,   z2d0, z2d1 ) 
     83      REAL(wp), DIMENSION(jpi,jpj) ::   z2d0, z2d1   ! 2D workspace 
     84      !!--------------------------------------------------------------------------- 
     85      IF( ln_timing )   CALL timing_start('dia_hsb')       
    8986      ! 
    9087      tsn(:,:,:,1) = tsn(:,:,:,1) * tmask(:,:,:) ; tsb(:,:,:,1) = tsb(:,:,:,1) * tmask(:,:,:) ; 
     
    228225      IF( lrst_oce )   CALL dia_hsb_rst( kt, 'WRITE' ) 
    229226      ! 
    230       CALL wrk_dealloc( jpi,jpj,   z2d0, z2d1 ) 
    231       ! 
    232       IF( nn_timing == 1 )   CALL timing_stop('dia_hsb') 
     227      IF( ln_timing )   CALL timing_stop('dia_hsb') 
    233228      ! 
    234229   END SUBROUTINE dia_hsb 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90

    r9019 r9124  
    104104      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   zdelr      ! delta rho equivalent to deltaT = 0.2 
    105105      !!---------------------------------------------------------------------- 
    106       IF( nn_timing == 1 )   CALL timing_start('dia_hth') 
     106      IF( ln_timing )   CALL timing_start('dia_hth') 
    107107 
    108108      IF( kt == nit000 ) THEN 
     
    332332      CALL iom_put( "hc300", htc3 )      ! first 300m heat content 
    333333      ! 
    334       IF( nn_timing == 1 )   CALL timing_stop('dia_hth') 
     334      IF( ln_timing )   CALL timing_stop('dia_hth') 
    335335      ! 
    336336   END SUBROUTINE dia_hth 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r9019 r9124  
    3737   PUBLIC   ptr_sj         ! call by tra_ldf & tra_adv routines 
    3838   PUBLIC   ptr_sjk        !  
    39    PUBLIC   dia_ptr_init   ! call in step module 
     39   PUBLIC   dia_ptr_init   ! call in memogcm 
    4040   PUBLIC   dia_ptr        ! call in step module 
    4141   PUBLIC   dia_ptr_hst    ! called from tra_ldf/tra_adv routines 
     
    9696      !!---------------------------------------------------------------------- 
    9797      ! 
    98       IF( nn_timing == 1 )   CALL timing_start('dia_ptr') 
     98      IF( ln_timing )   CALL timing_start('dia_ptr') 
    9999 
    100100      ! 
     
    373373      ENDIF 
    374374      ! 
    375       IF( nn_timing == 1 )   CALL timing_stop('dia_ptr') 
     375      IF( ln_timing )   CALL timing_stop('dia_ptr') 
    376376      ! 
    377377   END SUBROUTINE dia_ptr 
     
    457457      !  
    458458   END SUBROUTINE dia_ptr_init 
     459 
    459460 
    460461   SUBROUTINE dia_ptr_hst( ktra, cptr, pva )  
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90

    r7646 r9124  
    1212   USE in_out_manager  ! I/O units 
    1313   USE iom             ! I/0 library 
    14    USE wrk_nemo        ! working arrays 
    15  
    1614 
    1715   IMPLICIT NONE 
     
    4240      !!---------------------------------------------------------------------- 
    4341      ! 
    44       REWIND ( numnam_ref )              ! Read Namelist nam_diatmb in reference namelist : TMB diagnostics 
    45       READ   ( numnam_ref, nam_diatmb, IOSTAT=ios, ERR= 901 ) 
     42      REWIND( numnam_ref )              ! Read Namelist nam_diatmb in reference namelist : TMB diagnostics 
     43      READ  ( numnam_ref, nam_diatmb, IOSTAT=ios, ERR= 901 ) 
    4644901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diatmb in reference namelist', lwp ) 
    4745  
    4846      REWIND( numnam_cfg )              ! Namelist nam_diatmb in configuration namelist  TMB diagnostics 
    4947      READ  ( numnam_cfg, nam_diatmb, IOSTAT = ios, ERR = 902 ) 
    50 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diatmb in configuration namelist', lwp ) 
     48902   IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_diatmb in configuration namelist', lwp ) 
    5149      IF(lwm) WRITE ( numond, nam_diatmb ) 
    5250 
     
    7270      !! 
    7371      !!---------------------------------------------------------------------- 
    74       REAL(wp), DIMENSION(jpi, jpj, jpk), INTENT(in   ) :: pfield   ! Input 3d field and mask 
    75       REAL(wp), DIMENSION(jpi, jpj,  3 ), INTENT(  out) :: ptmb     ! top, middle, bottom extracted from pfield 
     72      REAL(wp), DIMENSION(jpi, jpj, jpk), INTENT(in   ) ::   pfield   ! Input 3D field and mask 
     73      REAL(wp), DIMENSION(jpi, jpj,  3 ), INTENT(  out) ::   ptmb     ! top, middle, bottom extracted from pfield 
    7674      ! 
    77       INTEGER  ::   ji, jj  ! Dummy loop indices 
    78       INTEGER  ::   itop, imid, ibot  ! local integers 
    79       REAL(wp) ::   zmdi = 1.e+20_wp  ! land value 
     75      INTEGER ::   ji, jj   ! Dummy loop indices 
     76      INTEGER ::   itop, imid, ibot   ! local integers 
     77      REAL(wp)::   zmdi = 1.e+20_wp   ! land value 
    8078      !!--------------------------------------------------------------------- 
    8179      ! 
     
    8684            imid =  itop + ( ibot - itop + 1 ) / 2    ! middle ocean           
    8785            !                     
    88             ptmb(ji,jj,1) = pfield(ji,jj,itop)*tmask(ji,jj,itop)  + zmdi*( 1._wp-tmask(ji,jj,itop) ) 
    89             ptmb(ji,jj,2) = pfield(ji,jj,imid)*tmask(ji,jj,imid)  + zmdi*( 1._wp-tmask(ji,jj,imid) ) 
    90             ptmb(ji,jj,3) = pfield(ji,jj,ibot)*tmask(ji,jj,ibot)  + zmdi*( 1._wp-tmask(ji,jj,ibot) ) 
     86            ptmb(ji,jj,1) = pfield(ji,jj,itop)*tmask(ji,jj,itop) + zmdi*( 1._wp-tmask(ji,jj,itop) ) 
     87            ptmb(ji,jj,2) = pfield(ji,jj,imid)*tmask(ji,jj,imid) + zmdi*( 1._wp-tmask(ji,jj,imid) ) 
     88            ptmb(ji,jj,3) = pfield(ji,jj,ibot)*tmask(ji,jj,ibot) + zmdi*( 1._wp-tmask(ji,jj,ibot) ) 
    9189         END DO 
    9290      END DO 
     
    105103      !!-------------------------------------------------------------------- 
    106104      REAL(wp) ::   zmdi =1.e+20     ! land value 
    107       REAL(wp), POINTER, DIMENSION(:,:,:) :: zwtmb    ! workspace  
     105      REAL(wp), DIMENSION(jpi,jpj,3) ::   zwtmb   ! workspace  
    108106      !!-------------------------------------------------------------------- 
    109107      ! 
    110       IF (ln_diatmb) THEN 
    111          CALL wrk_alloc( jpi,jpj,3   , zwtmb ) 
    112          CALL dia_calctmb(  tsn(:,:,:,jp_tem),zwtmb ) 
    113          !ssh already output but here we output it masked 
    114          CALL iom_put( "sshnmasked" , sshn(:,:)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) ) 
    115          CALL iom_put( "top_temp" , zwtmb(:,:,1) )    ! tmb Temperature 
    116          CALL iom_put( "mid_temp" , zwtmb(:,:,2) )    ! tmb Temperature 
    117          CALL iom_put( "bot_temp" , zwtmb(:,:,3) )    ! tmb Temperature 
    118 !         CALL iom_put( "sotrefml" , hmld_tref(:,:) )    ! "T criterion Mixed Layer Depth 
    119  
    120          CALL dia_calctmb(  tsn(:,:,:,jp_sal),zwtmb ) 
    121          CALL iom_put( "top_sal" , zwtmb(:,:,1) )    ! tmb Salinity  
    122          CALL iom_put( "mid_sal" , zwtmb(:,:,2) )    ! tmb Salinity 
    123          CALL iom_put( "bot_sal" , zwtmb(:,:,3) )    ! tmb Salinity 
    124  
    125          CALL dia_calctmb(  un(:,:,:),zwtmb ) 
    126          CALL iom_put( "top_u" , zwtmb(:,:,1) )    ! tmb  U Velocity 
    127          CALL iom_put( "mid_u" , zwtmb(:,:,2) )    ! tmb  U Velocity 
    128          CALL iom_put( "bot_u" , zwtmb(:,:,3) )    ! tmb  U Velocity 
    129 !Called in  dynspg_ts.F90        CALL iom_put( "baro_u" , un_b )    ! Barotropic  U Velocity 
    130  
    131          CALL dia_calctmb(  vn(:,:,:),zwtmb ) 
    132          CALL iom_put( "top_v" , zwtmb(:,:,1) )    ! tmb  V Velocity 
    133          CALL iom_put( "mid_v" , zwtmb(:,:,2) )    ! tmb  V Velocity 
    134          CALL iom_put( "bot_v" , zwtmb(:,:,3) )    ! tmb  V Velocity 
    135 !Called in  dynspg_ts.F90       CALL iom_put( "baro_v" , vn_b )    ! Barotropic  V Velocity 
    136          CALL wrk_dealloc( jpi,jpj,3   , zwtmb ) 
    137       ELSE 
    138          CALL ctl_warn('dia_tmb: tmb diagnostic is set to false you should not have seen this') 
    139       ENDIF 
     108      CALL dia_calctmb( tsn(:,:,:,jp_tem), zwtmb ) 
     109      !ssh already output but here we output it masked 
     110      CALL iom_put( "sshnmasked", sshn(:,:)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) ) 
     111      CALL iom_put( "top_temp"  , zwtmb(:,:,1) )    ! tmb Temperature 
     112      CALL iom_put( "mid_temp"  , zwtmb(:,:,2) )    ! tmb Temperature 
     113      CALL iom_put( "bot_temp"  , zwtmb(:,:,3) )    ! tmb Temperature 
     114      ! 
     115      CALL dia_calctmb( tsn(:,:,:,jp_sal), zwtmb ) 
     116      CALL iom_put( "top_sal"   , zwtmb(:,:,1) )    ! tmb Salinity  
     117      CALL iom_put( "mid_sal"   , zwtmb(:,:,2) )    ! tmb Salinity 
     118      CALL iom_put( "bot_sal"   , zwtmb(:,:,3) )    ! tmb Salinity 
     119      ! 
     120      CALL dia_calctmb( un(:,:,:), zwtmb ) 
     121      CALL iom_put( "top_u"     , zwtmb(:,:,1) )    ! tmb  U Velocity 
     122      CALL iom_put( "mid_u"     , zwtmb(:,:,2) )    ! tmb  U Velocity 
     123      CALL iom_put( "bot_u"     , zwtmb(:,:,3) )    ! tmb  U Velocity 
     124      ! 
     125      CALL dia_calctmb( vn(:,:,:), zwtmb ) 
     126      CALL iom_put( "top_v"     , zwtmb(:,:,1) )    ! tmb  V Velocity 
     127      CALL iom_put( "mid_v"     , zwtmb(:,:,2) )    ! tmb  V Velocity 
     128      CALL iom_put( "bot_v"     , zwtmb(:,:,3) )    ! tmb  V Velocity 
    140129      ! 
    141130   END SUBROUTINE dia_tmb 
     131 
    142132   !!====================================================================== 
    143133END MODULE diatmb 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r9023 r9124  
    126126      !!---------------------------------------------------------------------- 
    127127      !  
    128       IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
     128      IF( ln_timing )   CALL timing_start('dia_wri') 
    129129      !  
    130130      ! Output the initial state and forcings 
     
    402402      IF (ln_dia25h)   CALL dia_25h( kt )             ! 25h averaging 
    403403 
    404       IF( nn_timing == 1 )   CALL timing_stop('dia_wri') 
     404      IF( ln_timing )   CALL timing_stop('dia_wri') 
    405405      ! 
    406406   END SUBROUTINE dia_wri 
     
    438438      !!---------------------------------------------------------------------- 
    439439      !  
    440       IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
     440      IF( ln_timing )   CALL timing_start('dia_wri') 
    441441      ! 
    442442      IF( ninist == 1 ) THEN     !==  Output the initial state and forcings  ==! 
     
    859859      ENDIF 
    860860      ! 
    861       IF( nn_timing == 1 )   CALL timing_stop('dia_wri') 
     861      IF( ln_timing )   CALL timing_stop('dia_wri') 
    862862      ! 
    863863   END SUBROUTINE dia_wri 
Note: See TracChangeset for help on using the changeset viewer.