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 11403 for NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isf.F90 – NEMO

Ignore:
Timestamp:
2019-08-05T19:14:52+02:00 (5 years ago)
Author:
mathiot
Message:

ENHANCE-02_ISF_nemo : add comments, renaming file (AGRIF), add isfload module (ticket #2142)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isf.F90

    r11395 r11403  
    1111 
    1212   !!---------------------------------------------------------------------- 
    13    !!   isfmlt       : compute iceshelf melt and heat flux 
     13   !!   isf          : define and allocate ice shelf variables 
    1414   !!---------------------------------------------------------------------- 
    1515 
     
    3232   REAL(wp), PUBLIC ::   rn_gammas0                  !: salinity    exchange coeficient    [] 
    3333   REAL(wp), PUBLIC ::   rn_htbl                     !: Losch top boundary layer thickness [m] 
     34   CHARACTER(LEN=256), PUBLIC :: cn_isfload          !: ice shelf load computation method 
    3435   CHARACTER(LEN=256), PUBLIC :: cn_gammablk         !: gamma formulation 
    3536   CHARACTER(LEN=256), PUBLIC :: cn_isfcav_mlt, cn_isfpar_mlt !: melt formulation (cavity/param) 
     
    4748   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   mskisf_par, mskisf_cav   !: Level of ice shelf base 
    4849   ! 
    49    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rhisf_tbl, rhisf_tbl_0   !: thickness of tbl  [m] 
    50    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rhisf_tbl_cav, rhisf_tbl_par !: thickness of tbl  [m] 
     50   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   risfload                     !: ice shelf load 
     51   ! 
     52   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rhisf_tbl_0                  !: thickness of tbl (initial value)  [m] 
     53   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rhisf_tbl_cav, rhisf_tbl_par !: thickness of tbl                  [m] 
    5154   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rfrac_tbl_cav, rfrac_tbl_par !: fraction of the deepest cell affect by isf tbl  [] 
    5255   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rhisf0_tbl_par 
    5356   ! 
     57   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   fwfisf_cpl 
    5458   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   fwfisf_par, fwfisf_par_b !: net fwf from the ice shelf        [kg/m2/s] 
    5559   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   fwfisf_cav, fwfisf_cav_b !: net fwf from the ice shelf        [kg/m2/s] 
    5660   ! 
    57    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   risfdep                  !: Iceshelf draft                              (ISF) 
    58    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   bathy                    !: Bathymetry (needed for isf tbl definition)  (ISF) 
    5961   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   risfLeff 
    6062   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   risf_cav_tsc_b, risf_cav_tsc     !: before and now T & S isf contents [K.m/s & PSU.m/s]   
     
    9193   SUBROUTINE isf_alloc_par() 
    9294      !!--------------------------------------------------------------------- 
    93       !!                  ***  ROUTINE isfmlt_alloc  *** 
     95      !!                  ***  ROUTINE isf_alloc_par  *** 
    9496      !! 
    9597      !! ** Purpose :  
     
    105107      ierr = ierr + ialloc 
    106108      ! 
     109      ALLOCATE(misfkt_par(jpi,jpj), misfkb_par(jpi,jpj), STAT=ialloc ) 
     110      ierr = ierr + ialloc 
     111      ! 
     112      ALLOCATE( rfrac_tbl_par(jpi,jpj), STAT=ialloc) 
     113      ierr = ierr + ialloc 
     114      ! 
     115      ALLOCATE( rhisf_tbl_par(jpi,jpj), rhisf0_tbl_par(jpi,jpj), STAT=ialloc) 
     116      ierr = ierr + ialloc 
     117      ! 
     118      ALLOCATE( mskisf_par(jpi,jpj), STAT=ialloc) 
     119      ierr = ierr + ialloc 
     120      ! 
    107121      CALL mpp_sum ( 'isf', ierr ) 
    108122      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'isf: failed to allocate arrays.' ) 
     
    111125   SUBROUTINE isf_alloc_cav() 
    112126      !!--------------------------------------------------------------------- 
    113       !!                  ***  ROUTINE isfmlt_alloc  *** 
     127      !!                  ***  ROUTINE isf_alloc_cav  *** 
    114128      !! 
    115129      !! ** Purpose :  
     
    122136      ierr = 0       ! set to zero if no array to be allocated 
    123137      ! 
     138      ALLOCATE(misfkt_cav(jpi,jpj), misfkb_cav(jpi,jpj), STAT=ialloc ) 
     139      ierr = ierr + ialloc 
     140      ! 
     141      ALLOCATE( rfrac_tbl_cav(jpi,jpj), STAT=ialloc) 
     142      ierr = ierr + ialloc 
     143      ! 
     144      ALLOCATE( rhisf_tbl_cav(jpi,jpj), STAT=ialloc) 
     145      ierr = ierr + ialloc 
     146      ! 
     147      ALLOCATE( mskisf_cav(jpi,jpj), STAT=ialloc) 
     148      ierr = ierr + ialloc 
     149      ! 
    124150      CALL mpp_sum ( 'isf', ierr ) 
    125151      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'isf: failed to allocate arrays.' ) 
     
    128154   SUBROUTINE isf_alloc() 
    129155      !!--------------------------------------------------------------------- 
    130       !!                  ***  ROUTINE isfmlt_alloc  *** 
     156      !!                  ***  ROUTINE isf_alloc  *** 
    131157      !! 
    132158      !! ** Purpose :  
     
    140166      ierr = 0       ! set to zero if no array to be allocated 
    141167      ! 
    142       ALLOCATE(misfkt_par(jpi,jpj), misfkb_par(jpi,jpj),             & 
    143          &     misfkt_cav(jpi,jpj), misfkb_cav(jpi,jpj), STAT=ialloc ) 
     168      ALLOCATE(fwfisf_par(jpi,jpj), fwfisf_par_b(jpi,jpj), & 
     169         &     fwfisf_cav(jpi,jpj), fwfisf_cav_b(jpi,jpj), & 
     170         &     fwfisf_cpl(jpi,jpj),            STAT=ialloc ) 
    144171      ierr = ierr + ialloc 
    145172      ! 
    146       ALLOCATE(fwfisf_par(jpi,jpj), fwfisf_par_b(jpi,jpj),             & 
    147          &     fwfisf_cav(jpi,jpj), fwfisf_cav_b(jpi,jpj), STAT=ialloc ) 
     173      ALLOCATE(risf_par_tsc(jpi,jpj,jpts), risf_par_tsc_b(jpi,jpj,jpts), STAT=ialloc ) 
    148174      ierr = ierr + ialloc 
    149175      ! 
    150       ALLOCATE(risf_cav_tsc(jpi,jpj,jpts), risf_cav_tsc_b(jpi,jpj,jpts),             & 
    151          &     risf_par_tsc(jpi,jpj,jpts), risf_par_tsc_b(jpi,jpj,jpts), STAT=ialloc ) 
     176      ALLOCATE(risf_cav_tsc(jpi,jpj,jpts), risf_cav_tsc_b(jpi,jpj,jpts), STAT=ialloc ) 
    152177      ierr = ierr + ialloc 
    153178      ! 
    154       ALLOCATE( rfrac_tbl_cav(jpi,jpj), rfrac_tbl_par(jpi,jpj), STAT=ialloc) 
    155       ierr = ierr + ialloc 
    156       ! 
    157       ALLOCATE( rhisf_tbl_par(jpi,jpj), rhisf_tbl_cav(jpi,jpj), STAT=ialloc) 
    158       ierr = ierr + ialloc 
    159       ! 
    160       ALLOCATE( mskisf_cav(jpi,jpj), mskisf_par(jpi,jpj), STAT=ialloc) 
    161       ierr = ierr + ialloc 
    162       ! 
    163       ALLOCATE(risfdep(jpi,jpj), bathy(jpi,jpj), STAT=ialloc) 
     179      ALLOCATE(risfload(jpi,jpj), STAT=ialloc) 
    164180      ierr = ierr + ialloc 
    165181      ! 
Note: See TracChangeset for help on using the changeset viewer.