Changeset 719 for trunk/NEMO/LIM_SRC/limistate.F90
- Timestamp:
- 2007-10-16T16:59:56+02:00 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC/limistate.F90
- Property svn:keywords changed from Id to Author Date Id Revision
r717 r719 4 4 !! Initialisation of diagnostics ice variables 5 5 !!====================================================================== 6 !! History : 1.0 ! 01-04 (C. Ethe, G. Madec) Original code 7 !! 2.0 ! 03-08 (G. Madec) add lim_istate_init 6 !! History : 2.0 ! 01-04 (C. Ethe, G. Madec) Original code 8 7 !! ! 04-04 (S. Theetten) initialization from a file 9 8 !! ! 06-07 (S. Masson) IOM to read the restart 10 !! ! 07-10 (G. Madec) surface module11 9 !!-------------------------------------------------------------------- 12 10 #if defined key_ice_lim … … 20 18 USE phycst 21 19 USE ocfzpt 20 USE oce ! dynamics and tracers variables !!gm used??? 21 USE dom_oce !!gm used??? 22 22 USE par_ice ! ice parameters 23 23 USE ice_oce ! ice variables 24 24 USE dom_ice 25 USE ice ! ??? 25 26 USE lbclnk 26 USE oce27 27 USE ice 28 28 USE iom … … 32 32 PRIVATE 33 33 34 PUBLIC lim_istate! routine called by lim_init.F9035 36 REAL(wp) :: & !!! ** init namelist (namiceini) **34 PUBLIC lim_istate ! routine called by lim_init.F90 35 36 REAL(wp) :: & !!! ** init namelist (namiceini) ** 37 37 ttest = 2.0 , & ! threshold water temperature for initial sea ice 38 38 hninn = 0.5 , & ! initial snow thickness in the north … … 48 48 !!---------------------------------------------------------------------- 49 49 !! LIM 2.0, UCL-LOCEAN-IPSL (2006) 50 !! $ Id$50 !! $Header$ 51 51 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 52 52 !!---------------------------------------------------------------------- … … 67 67 REAL(wp), DIMENSION(jpi,jpj) :: ztn ! workspace 68 68 !-------------------------------------------------------------------- 69 70 CALL lim_istate_init ! reading the initials parameters of the ice 71 72 IF( .NOT. ln_limini ) THEN 69 70 CALL lim_istate_init ! reading the initials parameters of the ice 71 72 !-- Initialisation of sst,sss,u,v do i=1,jpi 73 u_io(:,:) = 0.e0 ! ice velocity in x direction 74 v_io(:,:) = 0.e0 ! ice velocity in y direction 75 76 IF( ln_limini ) THEN ! 77 78 ! Initialisation at tn if no ice or sst_ini if ice 79 ! Idem for salinity 80 81 !--- Criterion for presence (zidto=1.) or absence (zidto=0.) of ice 82 DO jj = 1 , jpj 83 DO ji = 1 , jpi 84 85 zidto = MAX(zzero, - SIGN(1.,frld(ji,jj) - 1.)) 86 87 sst_io(ji,jj) = ( nfice - 1 ) * (zidto * sst_ini(ji,jj) + & ! use the ocean initial values 88 & (1.0 - zidto ) * ( tn(ji,jj,1) + rt0 )) ! tricky trick *(nfice-1) ! 89 sss_io(ji,jj) = ( nfice - 1 ) * (zidto * sss_ini(ji,jj) + & 90 & (1.0 - zidto ) * sn(ji,jj,1) ) 91 92 ! to avoid the the melting of ice, several layers (mixed layer) should be 93 ! set to sst_ini (sss_ini) if there is ice 94 ! example for one layer 95 ! tn(ji,jj,1) = zidto * ( sst_ini(ji,jj) - rt0 ) + (1.0 - zidto ) * tn(ji,jj,1) 96 ! sn(ji,jj,1) = zidto * sss_ini(ji,jj) + (1.0 - zidto ) * sn(ji,jj,1) 97 ! tb(ji,jj,1) = tn(ji,jj,1) 98 ! sb(ji,jj,1) = sn(ji,jj,1) 99 END DO 100 END DO 101 102 103 ! tfu: Melting point of sea water 104 tfu(:,:) = ztf 105 106 tfu(:,:) = ABS ( rt0 - 0.0575 * sss_ini(:,:) & 107 & + 1.710523e-03 * sss_ini(:,:) * SQRT( sss_ini(:,:) ) & 108 & - 2.154996e-04 * sss_ini(:,:) * sss_ini(:,:) ) 109 ELSE ! 110 73 111 74 112 ! Initialisation at tn or -2 if ice … … 79 117 END DO 80 118 END DO 81 82 ! tfu: Melting point of sea water [Kelvin] 119 120 u_io (:,:) = 0.e0 121 v_io (:,:) = 0.e0 122 sst_io(:,:) = ( nfice - 1 ) * ( tn(:,:,1) + rt0 ) ! use the ocean initial values 123 sss_io(:,:) = ( nfice - 1 ) * sn(:,:,1) ! tricky trick *(nfice-1) ! 124 125 ! reference salinity 34psu 83 126 zs0 = 34.e0 84 ztf = rt0 + ( - 0.0575 + 1.710523e-3 * SQRT( zs0 ) - 2.154996e-4 * zs0 ) * zs0 85 tfu(:,:) = ztf 127 ztf = ABS ( rt0 - 0.0575 * zs0 & 128 & + 1.710523e-03 * zs0 * SQRT( zs0 ) & 129 & - 2.154996e-04 * zs0 *zs0 ) 130 131 ! tfu: Melting point of sea water 132 tfu(:,:) = ztf 86 133 87 134 DO jj = 1, jpj … … 106 153 tbif (:,:,2) = tfu(:,:) 107 154 tbif (:,:,3) = tfu(:,:) 108 155 109 156 ENDIF 110 111 157 fsbbq (:,:) = 0.e0 112 158 qstoif(:,:) = 0.e0 113 u i_ice(:,:) = 0.e0114 v i_ice(:,:) = 0.e0159 u_ice (:,:) = 0.e0 160 v_ice (:,:) = 0.e0 115 161 # if defined key_coupled 116 162 albege(:,:) = 0.8 * tms(:,:) … … 146 192 147 193 CALL lbc_lnk( hsnif, 'T', 1. ) 148 CALL lbc_lnk( sist , 'T', 1. , pval = rt0 ) ! set rt0 on closed boundary (required by bulk formulation)194 CALL lbc_lnk( sist , 'T', 1. ) 149 195 DO jk = 1, jplayersp1 150 196 CALL lbc_lnk(tbif(:,:,jk), 'T', 1. ) … … 152 198 CALL lbc_lnk( fsbbq , 'T', 1. ) 153 199 CALL lbc_lnk( qstoif , 'T', 1. ) 154 200 CALL lbc_lnk( sss_io , 'T', 1. ) 201 ! 155 202 END SUBROUTINE lim_istate 156 203 … … 163 210 !! 164 211 !! ** Method : Read the namiceini namelist and check the parameter 165 !! values called at the first timestep (nit000) 212 !! values called at the first timestep (nit000) 213 !! or 214 !! Read 7 variables from a previous restart file 215 !! sst, sst, hicif, hsnif, frld, ts & tbif 166 216 !! 167 217 !! ** input : Namelist namiceini … … 173 223 & hnins, hgins, alins 174 224 !!------------------------------------------------------------------- 175 ! 176 REWIND ( numnam_ice ) ! Read Namelist namiceini 225 226 ! Read Namelist namiceini 227 REWIND ( numnam_ice ) 177 228 READ ( numnam_ice , namiceini ) 178 179 IF(lwp) THEN 180 WRITE(numout,*) 181 WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 182 WRITE(numout,*) '~~~~~~~~~~~~~~~' 183 WRITE(numout,*) ' threshold water temp. for initial sea-ice ttest = ', ttest 184 WRITE(numout,*) ' initial snow thickness in the north hninn = ', hninn 185 WRITE(numout,*) ' initial ice thickness in the north hginn = ', hginn 186 WRITE(numout,*) ' initial leads area in the north alinn = ', alinn 187 WRITE(numout,*) ' initial snow thickness in the south hnins = ', hnins 188 WRITE(numout,*) ' initial ice thickness in the south hgins = ', hgins 189 WRITE(numout,*) ' initial leads area in the south alins = ', alins 190 WRITE(numout,*) ' Ice state initialization using input file ln_limini = ', ln_limini 229 230 IF(.NOT. ln_limini) THEN 231 IF(lwp) THEN 232 WRITE(numout,*) 233 WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 234 WRITE(numout,*) '~~~~~~~~~~~~~~~' 235 WRITE(numout,*) ' threshold water temp. for initial sea-ice ttest = ', ttest 236 WRITE(numout,*) ' initial snow thickness in the north hninn = ', hninn 237 WRITE(numout,*) ' initial ice thickness in the north hginn = ', hginn 238 WRITE(numout,*) ' initial leads area in the north alinn = ', alinn 239 WRITE(numout,*) ' initial snow thickness in the south hnins = ', hnins 240 WRITE(numout,*) ' initial ice thickness in the south hgins = ', hgins 241 WRITE(numout,*) ' initial leads area in the south alins = ', alins 242 ENDIF 191 243 ENDIF 192 244 193 245 IF( ln_limini ) THEN ! Ice initialization using input file 194 ! 246 195 247 CALL iom_open( 'Ice_initialization.nc', inum_ice ) 196 ! 248 197 249 IF( inum_ice > 0 ) THEN 198 IF(lwp) WRITE(numout,*) 199 IF(lwp) WRITE(numout,*) ' ice state initialization with : Ice_initialization.nc' 250 IF(lwp) THEN 251 WRITE(numout,*) ' ' 252 WRITE(numout,*) 'lim_istate_init : ice state initialization with : Ice_initialization.nc' 253 WRITE(numout,*) '~~~~~~~~~~~~~~~' 254 WRITE(numout,*) ' Ice state initialization using input file ln_limini = ', ln_limini 255 WRITE(numout,*) ' ' 256 ENDIF 200 257 201 CALL iom_get( inum_ice, jpdom_data, 'hicif', hicif ) 202 CALL iom_get( inum_ice, jpdom_data, 'hsnif', hsnif ) 203 CALL iom_get( inum_ice, jpdom_data, 'frld' , frld ) 204 CALL iom_get( inum_ice, jpdom_data, 'ts' , sist ) 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 (:,:) ) 205 264 CALL iom_get( inum_ice, jpdom_unknown, 'tbif', tbif(1:nlci,1:nlcj,:), & 206 265 & kstart = (/ mig(1),mjg(1),1 /), kcount = (/ nlci,nlcj,jplayersp1 /) ) … … 210 269 211 270 CALL iom_close( inum_ice) 212 !271 213 272 ENDIF 214 273 ENDIF 215 ! 274 ! 216 275 END SUBROUTINE lim_istate_init 217 276
Note: See TracChangeset
for help on using the changeset viewer.