source: trunk/NEMO/LIM_SRC_2/iceini_2.F90 @ 888

Last change on this file since 888 was 888, checked in by ctlod, 13 years ago

merge dev_001_SBC branche with the trunk to include the New Surface Module package, see ticket: #113

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.7 KB
Line 
1MODULE iceini_2
2   !!======================================================================
3   !!                       ***  MODULE iceini   ***
4   !!   Sea-ice model : LIM 2.0 Sea ice model Initialization
5   !!======================================================================
6   !! History :   1.0  !  02-08  (G. Madec)  F90: Free form and modules
7   !!             2.0  !  03-08  (C. Ethe)  add ice_run
8   !!----------------------------------------------------------------------
9#if defined key_lim2
10   !!----------------------------------------------------------------------
11   !!   'key_lim2' :                                  LIM 2.0 sea-ice model
12   !!----------------------------------------------------------------------
13   !!----------------------------------------------------------------------
14   !!   ice_init_2       : sea-ice model initialization
15   !!   ice_run_2        : Definition some run parameter for ice model
16   !!----------------------------------------------------------------------
17   USE dom_oce
18   USE dom_ice_2
19   USE ice_oce         ! ice variables
20   USE sbc_oce         ! surface boundary condition: ocean
21   USE sbc_ice         ! surface boundary condition: ice
22   USE phycst          ! Define parameters for the routines
23   USE ocfzpt
24   USE ice_2
25   USE limmsh_2
26   USE limistate_2
27   USE limrst_2   
28   USE ini1d           ! initialization of the 1D configuration
29   USE in_out_manager
30     
31   IMPLICIT NONE
32   PRIVATE
33
34   PUBLIC   ice_init_2               ! called by opa.F90
35
36   LOGICAL , PUBLIC               ::   ln_limdyn = .TRUE.   !: flag for ice dynamics (T) or not (F)
37   REAL(wp), PUBLIC               ::   hsndif = 0.e0        !: computation of temp. in snow (0) or not (9999)
38   REAL(wp), PUBLIC               ::   hicdif = 0.e0        !: computation of temp. in ice (0) or not (9999)
39   REAL(wp), PUBLIC, DIMENSION(2) ::   acrit  = (/ 1.e-06 , 1.e-06 /)    !: minimum fraction for leads in
40      !                                                                  !  north and south hemisphere
41   !!----------------------------------------------------------------------
42   !!   LIM 2.0,  UCL-LOCEAN-IPSL (2005)
43   !! $ Id: $
44   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
45   !!----------------------------------------------------------------------
46
47CONTAINS
48
49   SUBROUTINE ice_init_2
50      !!----------------------------------------------------------------------
51      !!                  ***  ROUTINE ice_init_2  ***
52      !!
53      !! ** purpose :   
54      !!----------------------------------------------------------------------
55      CHARACTER(len=80) :: namelist_icename
56      !!----------------------------------------------------------------------
57      !
58      ! Open the namelist file
59      namelist_icename = 'namelist_ice'
60      CALL ctlopn(numnam_ice,namelist_icename,'OLD', 'FORMATTED', 'SEQUENTIAL',   &
61                     1,numout,.FALSE.,1)     
62      CALL ice_run_2                    !  read in namelist some run parameters
63                 
64      ! Louvain la Neuve Ice model
65      dtsd2   = nn_fsbc * rdttra(1) * 0.5
66      rdt_ice = nn_fsbc * rdttra(1)
67
68      CALL lim_msh_2                  ! ice mesh initialization
69     
70      ! Initial sea-ice state
71      IF( .NOT.ln_rstart ) THEN
72         CALL lim_istate_2            ! start from rest: sea-ice deduced from sst
73      ELSE
74         CALL lim_rst_read_2          ! start from a restart file
75      ENDIF
76     
77      tn_ice(:,:) = sist(:,:)         ! initialisation of ice temperature   
78      freeze(:,:) = 1.0 - frld(:,:)   ! initialisation of sea/ice cover   
79# if defined key_coupled
80      alb_ice(:,:) = albege(:,:)      ! sea-ice albedo
81# endif
82      !
83   END SUBROUTINE ice_init_2
84
85
86   SUBROUTINE ice_run_2
87      !!-------------------------------------------------------------------
88      !!                  ***  ROUTINE ice_run_2 ***
89      !!                 
90      !! ** Purpose :   Definition some run parameter for ice model
91      !!
92      !! ** Method  :   Read the namicerun namelist and check the parameter
93      !!       values called at the first timestep (nit000)
94      !!
95      !! ** input   :   Namelist namicerun
96      !!-------------------------------------------------------------------
97      NAMELIST/namicerun/ ln_limdyn, ln_limdmp, acrit, hsndif, hicdif
98      !!-------------------------------------------------------------------
99      !                   
100      REWIND ( numnam_ice )                       ! Read Namelist namicerun
101      READ   ( numnam_ice , namicerun )
102
103      IF( lk_cfg_1d  )   ln_limdyn = .FALSE.      ! No ice transport in 1D configuration
104
105      IF(lwp) THEN
106         WRITE(numout,*)
107         WRITE(numout,*) 'ice_run : ice share parameters for dynamics/advection/thermo of sea-ice'
108         WRITE(numout,*) ' ~~~~~~'
109         WRITE(numout,*) '   switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn
110         WRITE(numout,*) '   Ice damping                                 ln_limdmp   = ', ln_limdmp
111         WRITE(numout,*) '   minimum fraction for leads in the NH (SH)  acrit(1/2)   = ', acrit(:)
112         WRITE(numout,*) '   computation of temp. in snow (=0) or not (=9999) hsndif = ', hsndif
113         WRITE(numout,*) '   computation of temp. in ice  (=0) or not (=9999) hicdif = ', hicdif
114      ENDIF
115      !
116   END SUBROUTINE ice_run_2
117
118#else
119   !!----------------------------------------------------------------------
120   !!   Default option :        Empty module       NO LIM 2.0 sea-ice model
121   !!----------------------------------------------------------------------
122CONTAINS
123   SUBROUTINE ice_init_2      ! Empty routine
124   END SUBROUTINE ice_init_2
125#endif
126
127   !!======================================================================
128END MODULE iceini_2
Note: See TracBrowser for help on using the repository browser.