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 8882 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90 – NEMO

Ignore:
Timestamp:
2017-12-01T18:44:09+01:00 (6 years ago)
Author:
flavoni
Message:

dev_CNRS_2017 branch: merged dev_r7881_ENHANCE09_RK3 with trunk r8864

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r7753 r8882  
    2929   USE in_out_manager ! I/O manager 
    3030   USE prtctl         ! Print control 
    31    USE iom            ! I/O manager 
     31   USE iom            ! I/O library 
    3232   USE fldread        ! read input fields 
    3333   USE restart        ! ocean restart 
    3434   USE lib_mpp        ! MPP library 
    3535   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    36    USE wrk_nemo       ! Memory Allocation 
    3736   USE timing         ! Timing 
    3837 
     
    4847   LOGICAL , PUBLIC ::   ln_qsr_2bd   !: 2 band         light absorption flag 
    4948   LOGICAL , PUBLIC ::   ln_qsr_bio   !: bio-model      light absorption flag 
    50    LOGICAL , PUBLIC ::   ln_qsr_ice   !: light penetration for ice-model LIM3 (clem) 
    5149   INTEGER , PUBLIC ::   nn_chldta    !: use Chlorophyll data (=1) or not (=0) 
    5250   REAL(wp), PUBLIC ::   rn_abs       !: fraction absorbed in the very near surface (RGB & 2 bands) 
     
    113111      REAL(wp) ::   zCb, zCmax, zze, zpsi, zpsimax, zdelpsi, zCtot, zCze 
    114112      REAL(wp) ::   zlogc, zlogc2, zlogc3  
    115       REAL(wp), POINTER, DIMENSION(:,:)   :: zekb, zekg, zekr 
    116       REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
    117       REAL(wp), POINTER, DIMENSION(:,:,:) :: zetot, zchl3d 
    118       !!---------------------------------------------------------------------- 
    119       ! 
    120       IF( nn_timing == 1 )  CALL timing_start('tra_qsr') 
     113      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   :: zekb, zekg, zekr 
     114      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
     115      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zetot, zchl3d 
     116      !!---------------------------------------------------------------------- 
     117      ! 
     118      IF( ln_timing )   CALL timing_start('tra_qsr') 
    121119      ! 
    122120      IF( kt == nit000 ) THEN 
     
    127125      ! 
    128126      IF( l_trdtra ) THEN      ! trends diagnostic: save the input temperature trend 
    129          CALL wrk_alloc( jpi,jpj,jpk,   ztrdt )  
     127         ALLOCATE( ztrdt(jpi,jpj,jpk) )  
    130128         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    131129      ENDIF 
     
    161159      CASE( np_RGB , np_RGBc )         !==  R-G-B fluxes  ==! 
    162160         ! 
    163          CALL wrk_alloc( jpi,jpj,       zekb, zekg, zekr        )  
    164          CALL wrk_alloc( jpi,jpj,jpk,   ze0, ze1, ze2, ze3, zea, zchl3d )  
     161         ALLOCATE( zekb(jpi,jpj)     , zekg(jpi,jpj)     , zekr  (jpi,jpj)     , & 
     162            &      ze0 (jpi,jpj,jpk) , ze1 (jpi,jpj,jpk) , ze2   (jpi,jpj,jpk) , & 
     163            &      ze3 (jpi,jpj,jpk) , zea (jpi,jpj,jpk) , zchl3d(jpi,jpj,jpk)   )  
    165164         ! 
    166165         IF( nqsr == np_RGBc ) THEN          !*  Variable Chlorophyll 
     
    240239         END DO 
    241240         ! 
    242          CALL wrk_dealloc( jpi,jpj,        zekb, zekg, zekr        )  
    243          CALL wrk_dealloc( jpi,jpj,jpk,   ze0, ze1, ze2, ze3, zea, zchl3d )  
     241         DEALLOCATE( zekb , zekg , zekr , ze0 , ze1 , ze2 , ze3 , zea , zchl3d )  
    244242         ! 
    245243      CASE( np_2BD  )            !==  2-bands fluxes  ==! 
     
    269267      END DO 
    270268      ! 
    271       IF( ln_qsr_ice ) THEN      ! sea-ice: store the 1st ocean level attenuation coefficient 
    272          DO jj = 2, jpjm1  
    273             DO ji = fs_2, fs_jpim1   ! vector opt. 
    274                IF( qsr(ji,jj) /= 0._wp ) THEN   ;   fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) 
    275                ELSE                             ;   fraqsr_1lev(ji,jj) = 1._wp 
    276                ENDIF 
    277             END DO 
    278          END DO 
    279          ! Update haloes since lim_thd needs fraqsr_1lev to be defined everywhere 
    280          CALL lbc_lnk( fraqsr_1lev(:,:), 'T', 1._wp ) 
    281       ENDIF 
     269      ! sea-ice: store the 1st ocean level attenuation coefficient 
     270      DO jj = 2, jpjm1  
     271         DO ji = fs_2, fs_jpim1   ! vector opt. 
     272            IF( qsr(ji,jj) /= 0._wp ) THEN   ;   fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) 
     273            ELSE                             ;   fraqsr_1lev(ji,jj) = 1._wp 
     274            ENDIF 
     275         END DO 
     276      END DO 
     277      CALL lbc_lnk( fraqsr_1lev(:,:), 'T', 1._wp ) 
    282278      ! 
    283279      IF( iom_use('qsr3d') ) THEN      ! output the shortwave Radiation distribution 
    284          CALL wrk_alloc( jpi,jpj,jpk,   zetot ) 
    285          ! 
     280         ALLOCATE( zetot(jpi,jpj,jpk) ) 
    286281         zetot(:,:,nksr+1:jpk) = 0._wp     ! below ~400m set to zero 
    287282         DO jk = nksr, 1, -1 
    288             zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) / r1_rau0_rcp 
     283            zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) * rau0_rcp 
    289284         END DO          
    290285         CALL iom_put( 'qsr3d', zetot )   ! 3D distribution of shortwave Radiation 
    291          ! 
    292          CALL wrk_dealloc( jpi,jpj,jpk,   zetot )  
     286         DEALLOCATE( zetot )  
    293287      ENDIF 
    294288      ! 
     
    301295         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    302296         CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
    303          CALL wrk_dealloc( jpi,jpj,jpk,  ztrdt )  
     297         DEALLOCATE( ztrdt )  
    304298      ENDIF 
    305299      !                       ! print mean trends (used for debugging) 
    306300      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' qsr  - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 
    307301      ! 
    308       IF( nn_timing == 1 )  CALL timing_stop('tra_qsr') 
     302      IF( ln_timing )   CALL timing_stop('tra_qsr') 
    309303      ! 
    310304   END SUBROUTINE tra_qsr 
     
    336330      TYPE(FLD_N)        ::   sn_chl   ! informations about the chlorofyl field to be read 
    337331      !! 
    338       NAMELIST/namtra_qsr/  sn_chl, cn_dir, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 
     332      NAMELIST/namtra_qsr/  sn_chl, cn_dir, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, & 
    339333         &                  nn_chldta, rn_abs, rn_si0, rn_si1 
    340334      !!---------------------------------------------------------------------- 
    341335      ! 
    342       IF( nn_timing == 1 )   CALL timing_start('tra_qsr_init') 
     336      IF( ln_timing )   CALL timing_start('tra_qsr_init') 
    343337      ! 
    344338      REWIND( numnam_ref )              ! Namelist namtra_qsr in reference     namelist 
     
    359353         WRITE(numout,*) '      2 band               light penetration       ln_qsr_2bd = ', ln_qsr_2bd 
    360354         WRITE(numout,*) '      bio-model            light penetration       ln_qsr_bio = ', ln_qsr_bio 
    361          WRITE(numout,*) '      light penetration for ice-model (LIM3)       ln_qsr_ice = ', ln_qsr_ice 
    362355         WRITE(numout,*) '      RGB : Chl data (=1) or cst value (=0)        nn_chldta  = ', nn_chldta 
    363356         WRITE(numout,*) '      RGB & 2 bands: fraction of light (rn_si1)    rn_abs     = ', rn_abs 
     
    435428      ENDIF 
    436429      ! 
    437       IF( nn_timing == 1 )   CALL timing_stop('tra_qsr_init') 
     430      IF( ln_timing )   CALL timing_stop('tra_qsr_init') 
    438431      ! 
    439432   END SUBROUTINE tra_qsr_init 
Note: See TracChangeset for help on using the changeset viewer.