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 508 for trunk/NEMO/LIM_SRC/limistate.F90 – NEMO

Ignore:
Timestamp:
2006-10-03T17:58:55+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_071:RB: add iom for restart and reorganization of restart

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC/limistate.F90

    r474 r508  
    44   !!              Initialisation of diagnostics ice variables 
    55   !!====================================================================== 
     6   !! History :   2.0  !  01-04  (C. Ethe, G. Madec)  Original code 
     7   !!                  !  04-04  (S. Theetten) initialization from a file 
     8   !!                  !  06-07  (S. Masson)  IOM to read the restart 
     9   !!-------------------------------------------------------------------- 
    610#if defined key_ice_lim 
    711   !!---------------------------------------------------------------------- 
    812   !!   'key_ice_lim' :                                   LIM sea-ice model 
     13   !!---------------------------------------------------------------------- 
    914   !!---------------------------------------------------------------------- 
    1015   !!   lim_istate      :  Initialisation of diagnostics ice variables 
    1116   !!   lim_istate_init :  initialization of ice state and namelist read 
    1217   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1418   USE phycst 
    1519   USE ocfzpt 
    16    USE oce             ! dynamics and tracers variables 
    17    USE dom_oce 
     20   USE oce             ! dynamics and tracers variables      !!gm used??? 
     21   USE dom_oce                                                     !!gm used??? 
    1822   USE par_ice         ! ice parameters 
    1923   USE ice_oce         ! ice variables 
     24   USE dom_ice 
     25   USE ice             ! ??? 
     26   USE lbclnk 
     27   USE ice 
     28   USE iom 
    2029   USE in_out_manager 
    21    USE dom_ice 
    22    USE ice 
    23    USE lbclnk 
    2430 
    2531   IMPLICIT NONE 
    2632   PRIVATE 
    2733 
    28    !! * Accessibility 
    2934   PUBLIC lim_istate      ! routine called by lim_init.F90 
    3035 
    31    !! * Module variables 
    32    REAL(wp) ::           & !!! ** init namelist (namiceini) ** 
     36   REAL(wp) ::           &  !!! ** init namelist (namiceini) ** 
    3337      ttest  = 2.0  ,    &  ! threshold water temperature for initial sea ice 
    3438      hninn  = 0.5  ,    &  ! initial snow thickness in the north 
     
    4347      zone    = 1.e0 
    4448   !!---------------------------------------------------------------------- 
    45    !!   LIM 2.0,  UCL-LOCEAN-IPSL (2005)  
     49   !!   LIM 2.0,  UCL-LOCEAN-IPSL (2006)  
    4650   !! $Header$  
    47    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     51   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4852   !!---------------------------------------------------------------------- 
    4953 
     
    5862      !! ** Method  :   restart from a state defined in a binary file 
    5963      !!                or from arbitrary sea-ice conditions 
    60       !! 
    61       !! History : 
    62       !!   2.0  !  01-04  (C. Ethe, G. Madec)  Original code 
    63       !!        !  04-04  (S. Theetten) initialization from a file 
    6464      !!-------------------------------------------------------------------- 
    65       !! * Local variables 
    66       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    67       REAL(wp) ::   zidto,    &  ! temporary scalar 
    68          zs0, ztf, zbin 
    69       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    70          ztn 
     65      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     66      REAL(wp) ::   zidto, zs0, ztf, zbin     ! temporary scalar 
     67      REAL(wp), DIMENSION(jpi,jpj) ::   ztn   ! workspace 
    7168      !-------------------------------------------------------------------- 
    7269 
    73   
    74       CALL lim_istate_init     !  reading the initials parameters of the ice 
     70       CALL lim_istate_init     !  reading the initials parameters of the ice 
    7571 
    7672      !-- Initialisation of sst,sss,u,v do i=1,jpi 
     
    203199      CALL lbc_lnk( qstoif , 'T', 1. ) 
    204200      CALL lbc_lnk( sss_io , 'T', 1. ) 
    205  
     201      ! 
    206202   END SUBROUTINE lim_istate 
    207203 
     
    220216      !! 
    221217      !! ** input   :   Namelist namiceini 
    222       !! 
    223       !! history 
    224       !!  8.5  ! 03-08 (C. Ethe) original code 
    225       !!  9.0  ! 04-04 (S. Theetten) read a file 
    226       !!------------------------------------------------------------------- 
    227       !! * Modules used 
    228       USE ice 
    229       USE ioipsl 
     218      !!------------------------------------------------------------------- 
     219      INTEGER :: inum_ice 
    230220 
    231221      NAMELIST/namiceini/ ln_limini, ln_limdmp, ttest, hninn, hginn, alinn, & 
    232222         &                hnins, hgins, alins 
    233223      !!------------------------------------------------------------------- 
    234       !! local declaration 
    235       INTEGER, PARAMETER ::   jpmois=1 
    236        
    237       INTEGER ::                   & 
    238            itime, ipi, ipj, ipk  , & ! temporary integers 
    239            inum_ice 
    240        
    241       INTEGER ::  istep(jpmois) 
    242        
    243       REAL(wp) ::   zdate0, zdt 
    244       REAL(wp), DIMENSION(jpi,jpj) ::   zlon, zlat 
    245       REAL(wp), DIMENSION(3) ::   zlev 
    246        
    247       CHARACTER (len=32) :: cl_icedata 
    248        
    249       LOGICAL :: llbon 
    250       !!------------------------------------------------------------------- 
    251224       
    252225      ! Read Namelist namiceini  
    253  
    254226      REWIND ( numnam_ice ) 
    255227      READ   ( numnam_ice , namiceini ) 
     
    272244      IF( ln_limini ) THEN                      ! Ice initialization using input file 
    273245 
    274          cl_icedata = 'Ice_initialization.nc' 
    275          INQUIRE( FILE=cl_icedata, EXIST=llbon ) 
    276          IF( llbon ) THEN 
     246         CALL iom_open( 'Ice_initialization.nc', inum_ice ) 
     247 
     248         IF( inum_ice > 0 ) THEN 
    277249            IF(lwp) THEN 
    278250               WRITE(numout,*) ' ' 
    279                WRITE(numout,*) 'lim_istate_init : ice state initialization with : ',cl_icedata 
     251               WRITE(numout,*) 'lim_istate_init : ice state initialization with : Ice_initialization.nc' 
    280252               WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    281253               WRITE(numout,*) '         Ice state initialization using input file    ln_limini  = ', ln_limini 
     
    284256            ENDIF 
    285257             
    286             itime = 1 
    287             ipi=jpiglo 
    288             ipj=jpjglo 
    289             ipk=1 
    290             zdt=rdt 
     258            CALL iom_get( inum_ice, jpdom_data, 'sst'  , sst_ini(:,:) )         
     259            CALL iom_get( inum_ice, jpdom_data, 'sss'  , sss_ini(:,:) )        
     260            CALL iom_get( inum_ice, jpdom_data, 'hicif', hicif  (:,:) )       
     261            CALL iom_get( inum_ice, jpdom_data, 'hsnif', hsnif  (:,:) )       
     262            CALL iom_get( inum_ice, jpdom_data, 'frld' , frld   (:,:) )      
     263            CALL iom_get( inum_ice, jpdom_data, 'ts'   , sist   (:,:) ) 
     264            CALL iom_get( inum_ice, jpdom_unknown, 'tbif', tbif(:,:,:),   & 
     265                 &        kstart = (/ mig(1),mjg(1),1 /), kcount = (/ nlci,nlcj,jplayersp1 /) ) 
     266 
     267            CALL iom_close( inum_ice) 
    291268             
    292             CALL flinopen( TRIM(cl_icedata), mig(1), nlci, mjg(1), nlcj, .FALSE., & 
    293                &           ipi, ipj, ipk, zlon, zlat, zlev, itime, istep, zdate0, zdt, inum_ice ) 
    294              
    295             CALL flinget( inum_ice, 'sst', jpidta, jpjdta, 1,  & 
    296                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, sst_ini(1:nlci,1:nlcj) ) 
    297              
    298             CALL flinget( inum_ice, 'sss', jpidta, jpjdta, 1,  & 
    299                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, sss_ini(1:nlci,1:nlcj) ) 
    300              
    301             CALL flinget( inum_ice, 'hicif', jpidta, jpjdta, 1,  & 
    302                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, hicif(1:nlci,1:nlcj) ) 
    303              
    304             CALL flinget( inum_ice, 'hsnif', jpidta, jpjdta, 1,  & 
    305                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, hsnif(1:nlci,1:nlcj) ) 
    306              
    307             CALL flinget( inum_ice, 'frld', jpidta, jpjdta, 1,  & 
    308                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, frld(1:nlci,1:nlcj) ) 
    309              
    310             CALL flinget( inum_ice, 'ts', jpidta, jpjdta, 1,  & 
    311                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, sist(1:nlci,1:nlcj) ) 
    312              
    313             CALL flinclo( inum_ice) 
    314              
    315             itime = 1 
    316             ipi=jpiglo 
    317             ipj=jpjglo 
    318             ipk=jplayersp1 
    319              
    320             CALL flinopen( TRIM(cl_icedata), mig(1), nlci, mjg(1), nlcj, .FALSE.,  & 
    321                &           ipi, ipj, ipk, zlon, zlat, zlev, itime, istep, zdate0, zdt, inum_ice ) 
    322              
    323             CALL flinget( inum_ice, 'tbif', jpidta, jpjdta, ipk,  & 
    324                &          jpmois, 1, 0, mig(1), nlci, mjg(1), nlcj, tbif(1:nlci,1:nlcj,1:ipk) ) 
    325              
    326             CALL flinclo( inum_ice) 
    327              
    328          ELSE 
    329             WRITE(ctmp1,*) '            ',cl_icedata, ' not found !' 
    330             CALL ctl_stop( ctmp1 ) 
    331269         ENDIF 
    332270      ENDIF 
    333  
     271      ! 
    334272   END SUBROUTINE lim_istate_init 
    335273 
Note: See TracChangeset for help on using the changeset viewer.