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 8569 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_pra.F90 – NEMO

Ignore:
Timestamp:
2017-09-27T18:40:13+02:00 (7 years ago)
Author:
clem
Message:

Prather: allocate specific arrays only when prather is used

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_pra.F90

    r8564 r8569  
    2929 
    3030   PUBLIC   ice_dyn_adv_pra   ! called by icedyn_adv 
    31    PUBLIC   adv_pra_rst       ! called by icedyn_adv 
    32  
     31   PUBLIC   adv_pra_init      ! called by icedyn_adv 
     32 
     33   ! Moments for advection 
     34   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   sxopw, syopw, sxxopw, syyopw, sxyopw   ! open water in sea ice 
     35   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxice, syice, sxxice, syyice, sxyice   ! ice thickness  
     36   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxsn , sysn , sxxsn , syysn , sxysn    ! snow thickness 
     37   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxa  , sya  , sxxa  , syya  , sxya     ! lead fraction 
     38   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxc0 , syc0 , sxxc0 , syyc0 , sxyc0    ! snow thermal content 
     39   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxsal, sysal, sxxsal, syysal, sxysal   ! ice salinity 
     40   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxage, syage, sxxage, syyage, sxyage   ! ice age 
     41   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxap , syap , sxxap , syyap , sxyap    ! melt pond fraction 
     42   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxvp , syvp , sxxvp , syyvp , sxyvp    ! melt pond volume 
     43   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   sxe  , sye  , sxxe  , syye  , sxye     ! ice layers heat content 
     44   ! 
    3345   !! * Substitutions 
    3446#  include "vectopt_loop_substitute.h90" 
     
    246258      DEALLOCATE( zarea , z0opw , z0ice, z0snw , z0ai , z0es , z0smi , z0oi , z0ap , z0vp , z0ei ) 
    247259      ! 
     260      IF( lrst_ice )   CALL adv_pra_rst( 'WRITE', kt )   !* write Prather fields in the restart file 
     261      ! 
    248262   END SUBROUTINE ice_dyn_adv_pra 
    249263    
     
    594608   END SUBROUTINE adv_y 
    595609 
     610   SUBROUTINE adv_pra_init 
     611      !!------------------------------------------------------------------- 
     612      !!                  ***  ROUTINE adv_pra_init  *** 
     613      !! 
     614      !! ** Purpose :   allocate and initialize arrays for Prather advection  
     615      !!------------------------------------------------------------------- 
     616      INTEGER ::   ierr 
     617      !!------------------------------------------------------------------- 
     618      ALLOCATE( sxopw(jpi,jpj)     , syopw(jpi,jpj)     , sxxopw(jpi,jpj)     , syyopw(jpi,jpj)     , sxyopw(jpi,jpj)     ,   & 
     619         &      sxice(jpi,jpj,jpl) , syice(jpi,jpj,jpl) , sxxice(jpi,jpj,jpl) , syyice(jpi,jpj,jpl) , sxyice(jpi,jpj,jpl) ,   & 
     620         &      sxsn (jpi,jpj,jpl) , sysn (jpi,jpj,jpl) , sxxsn (jpi,jpj,jpl) , syysn (jpi,jpj,jpl) , sxysn (jpi,jpj,jpl) ,   & 
     621         &      sxa  (jpi,jpj,jpl) , sya  (jpi,jpj,jpl) , sxxa  (jpi,jpj,jpl) , syya  (jpi,jpj,jpl) , sxya  (jpi,jpj,jpl) ,   & 
     622         &      sxc0 (jpi,jpj,jpl) , syc0 (jpi,jpj,jpl) , sxxc0 (jpi,jpj,jpl) , syyc0 (jpi,jpj,jpl) , sxyc0 (jpi,jpj,jpl) ,   & 
     623         &      sxsal(jpi,jpj,jpl) , sysal(jpi,jpj,jpl) , sxxsal(jpi,jpj,jpl) , syysal(jpi,jpj,jpl) , sxysal(jpi,jpj,jpl) ,   & 
     624         &      sxage(jpi,jpj,jpl) , syage(jpi,jpj,jpl) , sxxage(jpi,jpj,jpl) , syyage(jpi,jpj,jpl) , sxyage(jpi,jpj,jpl) ,   & 
     625         &      sxap(jpi,jpj,jpl)  , syap (jpi,jpj,jpl) , sxxap (jpi,jpj,jpl) , syyap (jpi,jpj,jpl) , sxyap (jpi,jpj,jpl) ,   & 
     626         &      sxvp(jpi,jpj,jpl)  , syvp (jpi,jpj,jpl) , sxxvp (jpi,jpj,jpl) , syyvp (jpi,jpj,jpl) , sxyvp (jpi,jpj,jpl) ,   & 
     627         &      sxe (jpi,jpj,nlay_i,jpl) , sye (jpi,jpj,nlay_i,jpl) , sxxe(jpi,jpj,nlay_i,jpl) , & 
     628         &      syye(jpi,jpj,nlay_i,jpl) , sxye(jpi,jpj,nlay_i,jpl)                            , & 
     629         &      STAT = ierr ) 
     630      ! 
     631      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
     632      IF( ierr /= 0 )   CALL ctl_stop('STOP', 'adv_pra_init : unable to allocate ice arrays for Prather advection scheme') 
     633      ! 
     634      CALL adv_pra_rst( 'READ' )  !* read or initialize all required files 
     635      ! 
     636   END SUBROUTINE adv_pra_init 
     637 
    596638   SUBROUTINE adv_pra_rst( cdrw, kt ) 
    597639      !!--------------------------------------------------------------------- 
     
    713755                  sxyage(:,:,jl)= z2d(:,:) 
    714756               END DO 
    715                ! MV MP 2016 
    716757               IF ( nn_pnd_scheme > 0 ) THEN 
    717758                  DO jl = 1, jpl  
     
    750791                  END DO 
    751792               ENDIF 
    752                ! END MV MP 2016 
    753793 
    754794               CALL iom_get( numrir, jpdom_autoglo, 'sxopw ' ,  sxopw  ) 
     
    793833               syyc0 (:,:,:) = 0._wp   ;   syye (:,:,:,:) = 0._wp   ;   syysal (:,:,:) = 0._wp   ;   syyage (:,:,:) = 0._wp 
    794834               sxyc0 (:,:,:) = 0._wp   ;   sxye (:,:,:,:) = 0._wp   ;   sxysal (:,:,:) = 0._wp   ;   sxyage (:,:,:) = 0._wp 
    795                ! MV MP 2016 
    796835               IF ( nn_pnd_scheme > 0 ) THEN 
    797836                  sxap  (:,:,:) = 0._wp    ; sxvp  (:,:,:) = 0._wp  
     
    801840                  sxyap (:,:,:) = 0._wp    ; sxyvp (:,:,:) = 0._wp 
    802841               ENDIF 
    803                ! END MV MP 2016 
    804842            ENDIF 
    805843         ELSE                                   !* Start from rest 
     
    816854            syyc0 (:,:,:) = 0._wp   ;   syye (:,:,:,:) = 0._wp   ;   syysal (:,:,:) = 0._wp   ;   syyage (:,:,:) = 0._wp 
    817855            sxyc0 (:,:,:) = 0._wp   ;   sxye (:,:,:,:) = 0._wp   ;   sxysal (:,:,:) = 0._wp   ;   sxyage (:,:,:) = 0._wp 
    818             ! MV MP 2016 
    819856            IF ( nn_pnd_scheme > 0 ) THEN 
    820857               sxap  (:,:,:) = 0._wp    ; sxvp  (:,:,:) = 0._wp  
     
    824861               sxyap (:,:,:) = 0._wp    ; sxyvp (:,:,:) = 0._wp 
    825862            ENDIF 
    826             ! END MV MP 2016 
    827863         ENDIF 
    828864         ! 
     
    953989            END DO 
    954990         END DO 
    955          ! MV MP 2016 
    956991         IF ( nn_pnd_scheme > 0 ) THEN 
    957992            DO jl = 1, jpl  
Note: See TracChangeset for help on using the changeset viewer.