Changeset 2528 for trunk/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
r2477 r2528 4 4 !! Sea-ice model : LIM Sea ice model Initialization 5 5 !!====================================================================== 6 !! History : 3.0 ! 2008-03 (M. Vancoppenolle) LIM-3 original code 7 !! 3.3 ! 2010-12 (G. Madec) add call to lim_thd_init and lim_thd_sal_init 8 !!---------------------------------------------------------------------- 6 9 #if defined key_lim3 7 10 !!---------------------------------------------------------------------- … … 10 13 !! ice_init : sea-ice model initialization 11 14 !!---------------------------------------------------------------------- 12 USE dom_oce13 USE in_out_manager14 USE sbc_oce 15 USE sbc_ice 16 USE phycst ! Define parameters for the routines17 USE ice18 USE lim msh19 USE lim istate20 USE limthd ! LIM: ice thermodynamics 21 USE limthd_sal ! LIM: ice thermodynamics: salinity 22 USE limrst23 USE par_ice24 USE limvar25 USE lib_mpp 15 USE phycst ! physical constants 16 USE dom_oce ! ocean domain 17 USE sbc_oce ! Surface boundary condition: ocean fields 18 USE sbc_ice ! Surface boundary condition: ice fields 19 USE ice ! LIM: sea-ice variables 20 USE limmsh ! LIM: mesh 21 USE limistate ! LIM: initial state 22 USE limrst ! LIM: restart 23 USE limthd ! LIM: ice thermodynamics 24 USE limthd_sal ! LIM: ice thermodynamics: salinity 25 USE par_ice ! LIM: sea-ice parameters 26 USE limvar ! LIM: variables 27 USE in_out_manager ! I/O manager 28 USE lib_mpp ! MPP library 26 29 27 30 IMPLICIT NONE 28 31 PRIVATE 29 32 30 PUBLIC ice_init ! called by opa.F90 31 !!---------------------------------------------------------------------- 32 !! LIM 3.0, UCL-ASTR-LOCEAN-IPSL (2008) 33 PUBLIC ice_init ! called by opa.F90 34 35 !!---------------------------------------------------------------------- 36 !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010) 33 37 !! $Id$ 34 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 35 !!---------------------------------------------------------------------- 36 38 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 39 !!---------------------------------------------------------------------- 37 40 CONTAINS 38 41 … … 42 45 !! 43 46 !! ** purpose : 44 !!45 !! History :46 !! 2.0 ! 02-08 (G. Madec) F90: Free form and modules47 !! 3.0 ! 08-03 (M. Vancop) ITD, salinity, EVP-C48 47 !!---------------------------------------------------------------------- 49 50 ! Open the namelist file48 ! 49 ! ! Open the namelist file 51 50 CALL ctl_opn( numnam_ice, 'namelist_ice', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 52 53 CALL ice_run ! read in namelist some run parameters51 ! 52 CALL ice_run ! namelist read some ice run parameters 54 53 ! 55 54 CALL lim_thd_init ! namelist read ice thermodynics parameters … … 63 62 CALL lim_itd_ini ! initialize the ice thickness distribution 64 63 65 ! ! Initial sea-ice state64 ! ! Initial sea-ice state 66 65 IF( .NOT.ln_rstart ) THEN ! start from rest 67 66 numit = 0 … … 79 78 fr_i(:,:) = at_i(:,:) ! initialisation of sea-ice fraction 80 79 ! 81 nstart = numit + nn_fsbc 82 nitrun = nitend - nit000 + 1 83 nlast = numit + nitrun 80 nstart = numit + nn_fsbc 81 nitrun = nitend - nit000 + 1 82 nlast = numit + nitrun 84 83 ! 85 84 IF( nstock == 0 ) nstock = nlast + 1 86 85 ! 87 86 END SUBROUTINE ice_init 87 88 88 89 89 SUBROUTINE ice_run … … 97 97 !! 98 98 !! ** input : Namelist namicerun 99 !!100 !! history :101 !! 2.0 ! 03-08 (C. Ethe) Original code102 !! 3.0 ! 08-03 (M. Vancop) LIM3103 99 !!------------------------------------------------------------------- 104 100 NAMELIST/namicerun/ cn_icerst_in, cn_icerst_out, ln_limdyn, acrit, hsndif, hicdif, cai, cao, ln_nicep 105 101 !!------------------------------------------------------------------- 106 107 ! ! Read Namelist namicerun 108 REWIND ( numnam_ice ) 109 READ ( numnam_ice , namicerun ) 110 102 ! 103 REWIND( numnam_ice ) ! Read Namelist namicerun 104 READ ( numnam_ice , namicerun ) 105 ! 111 106 IF( lk_mpp .AND. ln_nicep ) THEN 112 107 ln_nicep = .FALSE. 113 108 CALL ctl_warn( 'ice_run : specific control print for LIM3 desactivated with MPI' ) 114 109 ENDIF 115 116 IF(lwp) THEN 110 ! 111 IF(lwp) THEN ! control print 117 112 WRITE(numout,*) 118 113 WRITE(numout,*) 'ice_run : ice share parameters for dynamics/advection/thermo of sea-ice' … … 124 119 WRITE(numout,*) ' atmospheric drag over sea ice = ', cai 125 120 WRITE(numout,*) ' atmospheric drag over ocean = ', cao 126 WRITE(numout,*) ' Several ice points in the ice or not in ocean.output = ', ln_nicep127 ENDIF 128 121 WRITE(numout,*) ' Several ice points in the ice or not in ocean.output = ', ln_nicep 122 ENDIF 123 ! 129 124 END SUBROUTINE ice_run 125 130 126 131 127 SUBROUTINE lim_itd_ini 132 128 !!------------------------------------------------------------------ 133 129 !! *** ROUTINE lim_itd_ini *** 134 !! ** Purpose : 135 !! Initializes the ice thickness distribution 136 !! ** Method : 137 !! Very simple. Currently there are no ice types in the 138 !! model... 139 !! 140 !! ** Arguments : 141 !! kideb , kiut : Starting and ending points on which the 142 !! the computation is applied 143 !! 144 !! ** Inputs / Ouputs : (global commons) 145 !! 146 !! ** External : 147 !! 148 !! ** References : 149 !! 150 !! ** History : 151 !! (12-2005) Martin Vancoppenolle 152 !! 130 !! 131 !! ** Purpose : Initializes the ice thickness distribution 132 !! ** Method : ... 153 133 !!------------------------------------------------------------------ 154 !! * Arguments 155 156 !! * Local variables 157 INTEGER :: jl, & ! ice category dummy loop index 158 jm ! ice types dummy loop index 159 160 REAL(wp) :: & ! constant values 161 zeps = 1.0e-10, & ! 162 zc1 , & ! 163 zc2 , & ! 164 zc3 , & ! 165 zx1 166 134 INTEGER :: jl, jm ! dummy loop index 135 REAL(wp) :: zc1, zc2, zc3, zx1 ! local scalars 136 !!------------------------------------------------------------------ 137 138 IF(lwp) WRITE(numout,*) 167 139 IF(lwp) WRITE(numout,*) 'lim_itd_ini : Initialization of ice thickness distribution ' 168 140 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 169 170 !!-- End of declarations171 !!------------------------------------------------------------------------------172 141 173 142 !------------------------------------------------------------------------------! … … 207 176 !- Thickness categories boundaries 208 177 !---------------------------------- 209 hi_max(:) = 0. 0210 hi_max_typ(:,:) = 0. 0178 hi_max(:) = 0._wp 179 hi_max_typ(:,:) = 0._wp 211 180 212 181 !- Type 1 - undeformed ice 213 zc1 = 3./REAL(ice_cat_bounds(1,2)-ice_cat_bounds(1,1)+1)214 zc2 = 10. 0*zc1215 zc3 = 3.0182 zc1 = 3._wp / REAL( ice_cat_bounds(1,2) - ice_cat_bounds(1,1) + 1 , wp ) 183 zc2 = 10._wp * zc1 184 zc3 = 3._wp 216 185 217 186 DO jl = ice_cat_bounds(1,1), ice_cat_bounds(1,2) 218 zx1 = REAL( jl-1) / REAL(ice_cat_bounds(1,2)-ice_cat_bounds(1,1)+1)219 hi_max(jl) = hi_max(jl-1) + zc1 + zc2 * (1. 0 + TANH ( zc3 * (zx1 - 1.0) ) )187 zx1 = REAL( jl-1 , wp ) / REAL( ice_cat_bounds(1,2) - ice_cat_bounds(1,1) + 1 , wp ) 188 hi_max(jl) = hi_max(jl-1) + zc1 + zc2 * (1._wp + TANH( zc3 * (zx1 - 1._wp ) ) ) 220 189 END DO 221 190 222 191 !- Fill in the hi_max_typ vector, useful in other circumstances 223 ! Tricky trick 224 ! hi_max_typ is actually not used in the code and will be removed in a 225 ! next flyspray at this time, the tricky trick will also be removed 226 ! Martin, march 08 192 ! Tricky trick: hi_max_typ is actually not used in the code and will be removed in a 193 ! next flyspray at this time, the tricky trick will also be removed (Martin, march 08) 227 194 DO jl = ice_cat_bounds(1,1), ice_cat_bounds(1,2) 228 195 hi_max_typ(jl,1) = hi_max(jl) … … 239 206 END DO 240 207 ENDIF 241 208 ! 242 209 DO jl = 1, jpl 243 hi_mean(jl) = ( hi_max(jl) + hi_max(jl-1) ) / 2.0244 END DO 245 210 hi_mean(jl) = ( hi_max(jl) + hi_max(jl-1) ) * 0.5_wp 211 END DO 212 ! 246 213 tn_ice(:,:,:) = t_su(:,:,:) 247 214 ! 248 215 END SUBROUTINE lim_itd_ini 249 216 … … 255 222 SUBROUTINE ice_init ! Empty routine 256 223 END SUBROUTINE ice_init 257 258 SUBROUTINE lim_itd_ini259 END SUBROUTINE lim_itd_ini260 224 #endif 261 225
Note: See TracChangeset
for help on using the changeset viewer.