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 3294 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90

    r2715 r3294  
    3333   USE trdmld_trc_rst    ! restart for diagnosing the ML trends 
    3434   USE prtctl            ! print control 
    35    USE sms_pisces         
    36    USE sms_lobster 
     35   USE sms_pisces        ! PISCES bio-model 
     36   USE sms_lobster       ! LOBSTER bio-model 
    3737 
    3838   IMPLICIT NONE 
     
    6060   LOGICAL :: lldebug = .TRUE. 
    6161 
    62    ! Workspace array for trd_mld_trc() routine. Declared here as is 4D and 
    63    ! cannot use workspaces in wrk_nemo module. 
    6462   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  ztmltrd2   ! 
    6563#if defined key_lobster 
     
    112110      !!            surface and the control surface is called "mixed-layer" 
    113111      !!---------------------------------------------------------------------- 
    114       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    115       USE wrk_nemo, ONLY:   zvlmsk => wrk_2d_1 
    116112      !! 
    117113      INTEGER, INTENT( in ) ::   ktrd, kjn                        ! ocean trend index and passive tracer rank 
    118114      CHARACTER(len=2), INTENT( in ) ::  ctype                    ! surface/bottom (2D) or interior (3D) physics 
    119115      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::  ptrc_trdmld ! passive tracer trend 
     116      ! 
    120117      INTEGER ::   ji, jj, jk, isum 
    121       !!---------------------------------------------------------------------- 
    122  
    123       IF( wrk_in_use(2, 1) ) THEN 
    124          CALL ctl_stop('trd_mld_trc_zint: requested workspace array unavailable')   ;   RETURN 
    125       ENDIF 
     118      REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk 
     119      !!---------------------------------------------------------------------- 
     120 
     121      CALL wrk_alloc( jpi, jpj, zvlmsk ) 
    126122 
    127123      ! I. Definition of control surface and integration weights 
     
    208204      END SELECT 
    209205      ! 
    210       IF( wrk_not_released(2, 1) )   CALL ctl_stop('trd_mld_trc_zint: failed to release workspace array') 
     206      CALL wrk_dealloc( jpi, jpj, zvlmsk ) 
    211207      ! 
    212208   END SUBROUTINE trd_mld_trc_zint 
     
    231227      !!            surface and the control surface is called "mixed-layer" 
    232228      !!---------------------------------------------------------------------- 
    233       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    234       USE wrk_nemo, ONLY:   zvlmsk => wrk_2d_1 
    235229      !! 
    236230      INTEGER                         , INTENT(in) ::   ktrd          ! bio trend index 
     
    239233      ! 
    240234      INTEGER ::   ji, jj, jk, isum 
    241       !!---------------------------------------------------------------------- 
    242  
    243       IF( wrk_in_use(2, 1) ) THEN 
    244          CALL ctl_stop('trd_mld_bio_zint: requested workspace array unavailable')   ;   RETURN 
    245       ENDIF 
     235      REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk 
     236      !!---------------------------------------------------------------------- 
     237 
     238      CALL wrk_alloc( jpi, jpj, zvlmsk ) 
    246239 
    247240      ! I. Definition of control surface and integration weights 
     
    325318      END DO 
    326319 
    327       IF( wrk_not_released(2, 1) )   CALL ctl_stop('trd_mld_bio_zint: failed to release workspace array') 
     320      CALL wrk_alloc( jpi, jpj, zvlmsk ) 
    328321#endif 
    329322      ! 
     
    378371      !!       - See NEMO documentation (in preparation) 
    379372      !!---------------------------------------------------------------------- 
    380       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    381       USE wrk_nemo, ONLY:   wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4 
    382       USE wrk_nemo, ONLY:   wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, wrk_3d_9 
    383373      ! 
    384374      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     
    397387      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlatf2            !  | passive tracers 
    398388      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlrad2            !  | (-> for trb<0 corr in trcrad) 
    399       !REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) ::  ztmltrd2  ! -+ 
    400389      ! 
    401390      CHARACTER (LEN= 5) ::   clvar 
     
    406395      !!---------------------------------------------------------------------- 
    407396 
    408       IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9) ) THEN 
    409          CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable')   ;   RETURN 
    410       ENDIF 
    411397      ! Set-up pointers into sub-arrays of workspaces 
    412       ztmltot   => wrk_3d_1(:,:,1:jptra) 
    413       ztmlres   => wrk_3d_2(:,:,1:jptra) 
    414       ztmlatf   => wrk_3d_3(:,:,1:jptra) 
    415       ztmlrad   => wrk_3d_4(:,:,1:jptra) 
    416       ztmltot2  => wrk_3d_5(:,:,1:jptra) 
    417       ztmlres2  => wrk_3d_6(:,:,1:jptra) 
    418       ztmltrdm2 => wrk_3d_7(:,:,1:jptra) 
    419       ztmlatf2  => wrk_3d_8(:,:,1:jptra) 
    420       ztmlrad2  => wrk_3d_9(:,:,1:jptra) 
    421  
     398      CALL wrk_alloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad             ) 
     399      CALL wrk_alloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 ) 
    422400 
    423401      IF( nn_dttrc  /= 1  )   CALL ctl_stop( " Be careful, trends diags never validated " ) 
     
    475453      ! II.1 Set before values of vertically averages passive tracers 
    476454      ! ------------------------------------------------------------- 
    477       IF( kt > nit000 ) THEN 
     455      IF( kt > nittrc000 ) THEN 
    478456         DO jn = 1, jptra 
    479457            IF( ln_trdtrc(jn) ) THEN 
     
    497475      ! II.3 Initialize mixed-layer "before" arrays for the 1rst analysis window     
    498476      ! ------------------------------------------------------------------------ 
    499       IF( kt == 2 ) THEN  !  i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1)    ??? 
     477      IF( kt == nittrc000 + nn_dttrc ) THEN  !  i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1)    ??? 
    500478         ! 
    501479         DO jn = 1, jptra 
     
    560538      tmltrd_trc(:,:,:,:) = tmltrd_trc(:,:,:,:) * rn_ucf_trc 
    561539 
    562       itmod = kt - nit000 + 1 
     540      itmod = kt - nittrc000 + 1 
    563541      it    = kt 
    564542 
     
    907885      IF( lrst_trc )   CALL trd_mld_trc_rst_write( kt )  ! this must be after the array swap above (III.3) 
    908886 
    909       IF( wrk_not_released(3, 1,2,3,4,5,6,7,8,9) )   CALL ctl_stop('trd_mld_trc: failed to release workspace arrays') 
     887      CALL wrk_dealloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad             ) 
     888      CALL wrk_dealloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 ) 
    910889      ! 
    911890   END SUBROUTINE trd_mld_trc 
     
    980959      ! II.3 Initialize mixed-layer "before" arrays for the 1rst analysis window 
    981960      ! ------------------------------------------------------------------------ 
    982       IF( kt == 2 ) THEN  !  i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) 
     961      IF( kt == nittrc000 + nn_dttrc ) THEN  !  i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) 
    983962         ! 
    984963         tmltrd_csum_ub_bio (:,:,:) = 0.e0 
     
    10861065 
    10871066      ! define time axis 
    1088       itmod = kt - nit000 + 1 
     1067      itmod = kt - nittrc000 + 1 
    10891068      it    = kt 
    10901069 
     
    13311310      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    13321311      IF(lwp) WRITE(numout,*)' '   
    1333       IF(lwp) WRITE(numout,*)' Date 0 used :', nit000                  & 
     1312      IF(lwp) WRITE(numout,*)' Date 0 used :', nittrc000               & 
    13341313           &   ,' YEAR ', nyear, ' MONTH ', nmonth,' DAY ', nday       & 
    13351314           &   ,'Julian day : ', zjulian 
     
    13601339            CALL dia_nam( clhstnam, nn_trd_trc, csuff ) 
    13611340            CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,                                            & 
    1362                &        1, jpi, 1, jpj, nit000, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set ) 
     1341               &        1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set ) 
    13631342       
    13641343            !-- Define the ML depth variable 
     
    13731352          CALL dia_nam( clhstnam, nn_trd_trc, 'trdbio' ) 
    13741353          CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,                                            & 
    1375              &             1, jpi, 1, jpj, nit000, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set ) 
     1354             &             1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set ) 
    13761355#endif 
    13771356 
Note: See TracChangeset for help on using the changeset viewer.