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/OPA_SRC/TRA/traqsr.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/OPA_SRC/TRA/traqsr.F90

    r2715 r3294  
    2929   USE restart         ! ocean restart 
    3030   USE lib_mpp         ! MPP library 
     31   USE wrk_nemo       ! Memory Allocation 
     32   USE timing         ! Timing 
     33 
    3134 
    3235   IMPLICIT NONE 
     
    9093      !!              Lengaigne et al. 2007, Clim. Dyn., V28, 5, 503-516. 
    9194      !!---------------------------------------------------------------------- 
    92       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    93       USE wrk_nemo, ONLY:   zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3 
    94       USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2  => wrk_3d_3 
    95       USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
    9695      ! 
    9796      INTEGER, INTENT(in) ::   kt     ! ocean time-step 
     
    102101      REAL(wp) ::   zc0, zc1, zc2, zc3   !    -         - 
    103102      REAL(wp) ::   zz0, zz1, z1_e3t     !    -         - 
    104       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt 
     103      REAL(wp), POINTER, DIMENSION(:,:  ) :: zekb, zekg, zekr 
     104      REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
    105105      !!---------------------------------------------------------------------- 
    106  
    107       IF( wrk_in_use(3, 1,2,3,4,5) .OR. wrk_in_use(2, 1,2,3) )THEN 
    108          CALL ctl_stop('tra_qsr: requested workspace arrays unavailable')   ;   RETURN 
    109       ENDIF 
    110  
     106      ! 
     107      IF( nn_timing == 1 )  CALL timing_start('tra_qsr') 
     108      ! 
     109      CALL wrk_alloc( jpi, jpj,      zekb, zekg, zekr        )  
     110      CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     111      ! 
    111112      IF( kt == nit000 ) THEN 
    112113         IF(lwp) WRITE(numout,*) 
     
    117118 
    118119      IF( l_trdtra ) THEN      ! Save ta and sa trends 
    119          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     120         CALL wrk_alloc( jpi, jpj, jpk, ztrdt )  
     121         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    120122      ENDIF 
    121123 
     
    237239               zz1   = ( 1. - rn_abs ) * ro0cpr 
    238240               DO jk = 1, nksr                    ! solar heat absorbed at T-point in the top 400m  
    239                   DO jj = 2, jpjm1 
    240                      DO ji = 2, jpim1 
     241                  DO jj = 1, jpj 
     242                     DO ji = 1, jpi 
    241243                        zc0 = zz0 * EXP( -fsdepw(ji,jj,jk  )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk  )*xsi1r ) 
    242244                        zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) 
     
    283285         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    284286         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_qsr, ztrdt ) 
    285          DEALLOCATE( ztrdt ) 
     287         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt )  
    286288      ENDIF 
    287289      !                       ! print mean trends (used for debugging) 
    288290      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' qsr  - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 
    289291      ! 
    290       IF( wrk_not_released(3, 1,2,3,4,5) .OR.   & 
    291           wrk_not_released(2, 1,2,3)     )   CALL ctl_stop('tra_qsr: failed to release workspace arrays') 
     292      CALL wrk_dealloc( jpi, jpj,      zekb, zekg, zekr        )  
     293      CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     294      ! 
     295      IF( nn_timing == 1 )  CALL timing_stop('tra_qsr') 
    292296      ! 
    293297   END SUBROUTINE tra_qsr 
     
    311315      !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 
    312316      !!---------------------------------------------------------------------- 
    313       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    314       USE wrk_nemo, ONLY:   zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3 
    315       USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2 => wrk_3d_3 
    316       USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
    317317      ! 
    318318      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     
    320320      REAL(wp) ::   zz0, zc0  , zc1, zcoef       ! local scalars 
    321321      REAL(wp) ::   zz1, zc2  , zc3, zchl        !   -      - 
     322      REAL(wp), POINTER, DIMENSION(:,:  ) :: zekb, zekg, zekr 
     323      REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea 
    322324      ! 
    323325      CHARACTER(len=100) ::   cn_dir   ! Root directory for location of ssr files 
     
    328330      !!---------------------------------------------------------------------- 
    329331 
    330       IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 
    331          CALL ctl_stop('tra_qsr_init: requested workspace arrays unavailable')   ;   RETURN 
    332       ENDIF 
     332      ! 
     333      IF( nn_timing == 1 )  CALL timing_start('tra_qsr_init') 
     334      ! 
     335      CALL wrk_alloc( jpi, jpj,      zekb, zekg, zekr        )  
     336      CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     337      ! 
    333338 
    334339      cn_dir = './'       ! directory in which the model is executed 
     
    504509      ENDIF 
    505510      ! 
    506       IF( wrk_not_released(2, 1,2,3)     .OR.   & 
    507           wrk_not_released(3, 1,2,3,4,5) )   CALL ctl_stop('tra_qsr_init: failed to release workspace arrays') 
     511      CALL wrk_dealloc( jpi, jpj,      zekb, zekg, zekr        )  
     512      CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     513      ! 
     514      IF( nn_timing == 1 )  CALL timing_stop('tra_qsr_init') 
    508515      ! 
    509516   END SUBROUTINE tra_qsr_init 
Note: See TracChangeset for help on using the changeset viewer.