- Timestamp:
- 2020-04-08T18:54:44+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceistate.F90
r12398 r12720 45 45 REAL(wp) :: rn_hti_ini_n, rn_hts_ini_n, rn_ati_ini_n, rn_smi_ini_n, rn_tmi_ini_n, rn_tsu_ini_n, rn_tms_ini_n 46 46 REAL(wp) :: rn_hti_ini_s, rn_hts_ini_s, rn_ati_ini_s, rn_smi_ini_s, rn_tmi_ini_s, rn_tsu_ini_s, rn_tms_ini_s 47 REAL(wp) :: rn_apd_ini_n, rn_hpd_ini_n 48 REAL(wp) :: rn_apd_ini_s, rn_hpd_ini_s 47 REAL(wp) :: rn_apd_ini_n, rn_hpd_ini_n, rn_hld_ini_n 48 REAL(wp) :: rn_apd_ini_s, rn_hpd_ini_s, rn_hld_ini_s 49 49 ! 50 50 ! ! if ln_iceini_file = T 51 INTEGER , PARAMETER :: jpfldi = 9! maximum number of files to read51 INTEGER , PARAMETER :: jpfldi = 10 ! maximum number of files to read 52 52 INTEGER , PARAMETER :: jp_hti = 1 ! index of ice thickness (m) 53 53 INTEGER , PARAMETER :: jp_hts = 2 ! index of snw thickness (m) … … 59 59 INTEGER , PARAMETER :: jp_apd = 8 ! index of pnd fraction (-) 60 60 INTEGER , PARAMETER :: jp_hpd = 9 ! index of pnd depth (m) 61 INTEGER , PARAMETER :: jp_hld = 10 ! index of pnd lid depth (m) 61 62 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: si ! structure of input fields (file informations, fields read) 62 63 ! … … 98 99 REAL(wp), DIMENSION(jpi,jpj) :: zht_i_ini, zat_i_ini, ztm_s_ini !data from namelist or nc file 99 100 REAL(wp), DIMENSION(jpi,jpj) :: zt_su_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 100 REAL(wp), DIMENSION(jpi,jpj) :: zapnd_ini, zhpnd_ini 101 REAL(wp), DIMENSION(jpi,jpj) :: zapnd_ini, zhpnd_ini, zhlid_ini !data from namelist or nc file 101 102 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zti_3d , zts_3d !temporary arrays 102 103 !! 103 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zhi_2d, zhs_2d, zai_2d, zti_2d, zts_2d, ztsu_2d, zsi_2d, zaip_2d, zhip_2d 104 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zhi_2d, zhs_2d, zai_2d, zti_2d, zts_2d, ztsu_2d, zsi_2d, zaip_2d, zhip_2d, zhil_2d 104 105 !-------------------------------------------------------------------- 105 106 … … 155 156 a_ip (:,:,:) = 0._wp 156 157 v_ip (:,:,:) = 0._wp 158 v_il (:,:,:) = 0._wp 157 159 a_ip_frac(:,:,:) = 0._wp 160 a_ip_eff (:,:,:) = 0._wp 158 161 h_ip (:,:,:) = 0._wp 162 h_il (:,:,:) = 0._wp 159 163 ! 160 164 ! ice velocities … … 216 220 & si(jp_hpd)%fnow(:,:,1) = ( rn_hpd_ini_n * zswitch + rn_hpd_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 217 221 ! 222 ! pond lid depth 223 IF( TRIM(si(jp_hld)%clrootname) == 'NOT USED' ) & 224 & si(jp_hld)%fnow(:,:,1) = ( rn_hld_ini_n * zswitch + rn_hld_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 225 ! 218 226 zsm_i_ini(:,:) = si(jp_smi)%fnow(:,:,1) 219 227 ztm_i_ini(:,:) = si(jp_tmi)%fnow(:,:,1) … … 222 230 zapnd_ini(:,:) = si(jp_apd)%fnow(:,:,1) 223 231 zhpnd_ini(:,:) = si(jp_hpd)%fnow(:,:,1) 232 zhlid_ini(:,:) = si(jp_hld)%fnow(:,:,1) 224 233 ! 225 234 ! change the switch for the following … … 246 255 zapnd_ini(:,:) = rn_apd_ini_n * zswitch(:,:) * zat_i_ini(:,:) ! rn_apd = pond fraction => rn_apd * a_i = pond conc. 247 256 zhpnd_ini(:,:) = rn_hpd_ini_n * zswitch(:,:) 257 zhlid_ini(:,:) = rn_hld_ini_n * zswitch(:,:) 248 258 ELSEWHERE 249 259 zht_i_ini(:,:) = rn_hti_ini_s * zswitch(:,:) … … 256 266 zapnd_ini(:,:) = rn_apd_ini_s * zswitch(:,:) * zat_i_ini(:,:) ! rn_apd = pond fraction => rn_apd * a_i = pond conc. 257 267 zhpnd_ini(:,:) = rn_hpd_ini_s * zswitch(:,:) 268 zhlid_ini(:,:) = rn_hld_ini_s * zswitch(:,:) 258 269 END WHERE 259 270 ! … … 264 275 zapnd_ini(:,:) = 0._wp 265 276 zhpnd_ini(:,:) = 0._wp 277 zhlid_ini(:,:) = 0._wp 266 278 ENDIF 267 279 … … 290 302 CALL tab_2d_1d( npti, nptidx(1:npti), a_ip_1d(1:npti) , zapnd_ini ) 291 303 CALL tab_2d_1d( npti, nptidx(1:npti), h_ip_1d(1:npti) , zhpnd_ini ) 304 CALL tab_2d_1d( npti, nptidx(1:npti), h_il_1d(1:npti) , zhlid_ini ) 292 305 293 306 ! allocate temporary arrays 294 ALLOCATE( zhi_2d(npti,jpl), zhs_2d(npti,jpl), zai_2d (npti,jpl), & 295 & zti_2d(npti,jpl), zts_2d(npti,jpl), ztsu_2d(npti,jpl), zsi_2d(npti,jpl), zaip_2d(npti,jpl), zhip_2d(npti,jpl) ) 307 ALLOCATE( zhi_2d (npti,jpl), zhs_2d (npti,jpl), zai_2d (npti,jpl), & 308 & zti_2d (npti,jpl), zts_2d (npti,jpl), ztsu_2d(npti,jpl), zsi_2d(npti,jpl), & 309 & zaip_2d(npti,jpl), zhip_2d(npti,jpl), zhil_2d(npti,jpl) ) 296 310 297 311 ! distribute 1-cat into jpl-cat: (jpi*jpj) -> (jpi*jpj,jpl) 298 CALL ice_var_itd( h_i_1d(1:npti) , h_s_1d(1:npti) , at_i_1d(1:npti), & 299 & zhi_2d , zhs_2d , zai_2d , & 300 & t_i_1d(1:npti,1), t_s_1d(1:npti,1), t_su_1d(1:npti), s_i_1d(1:npti), a_ip_1d(1:npti), h_ip_1d(1:npti), & 301 & zti_2d , zts_2d , ztsu_2d , zsi_2d , zaip_2d , zhip_2d ) 312 CALL ice_var_itd( h_i_1d(1:npti) , h_s_1d(1:npti) , at_i_1d(1:npti), & 313 & zhi_2d , zhs_2d , zai_2d , & 314 & t_i_1d(1:npti,1), t_s_1d(1:npti,1), t_su_1d(1:npti), & 315 & s_i_1d(1:npti) , a_ip_1d(1:npti) , h_ip_1d(1:npti), h_il_1d(1:npti), & 316 & zti_2d , zts_2d , ztsu_2d , & 317 & zsi_2d , zaip_2d , zhip_2d , zhil_2d ) 302 318 303 319 ! move to 3D arrays: (jpi*jpj,jpl) -> (jpi,jpj,jpl) … … 315 331 CALL tab_2d_3d( npti, nptidx(1:npti), zaip_2d , a_ip ) 316 332 CALL tab_2d_3d( npti, nptidx(1:npti), zhip_2d , h_ip ) 333 CALL tab_2d_3d( npti, nptidx(1:npti), zhil_2d , h_il ) 317 334 318 335 ! deallocate temporary arrays 319 336 DEALLOCATE( zhi_2d, zhs_2d, zai_2d , & 320 & zti_2d, zts_2d, ztsu_2d, zsi_2d, zaip_2d, zhip_2d )337 & zti_2d, zts_2d, ztsu_2d, zsi_2d, zaip_2d, zhip_2d, zhil_2d ) 321 338 322 339 ! calculate extensive and intensive variables … … 365 382 a_ip_frac(:,:,:) = 0._wp 366 383 END WHERE 384 a_ip_eff(:,:,:) = a_ip_frac(:,:,:) 367 385 v_ip(:,:,:) = h_ip(:,:,:) * a_ip(:,:,:) 386 v_il(:,:,:) = h_il(:,:,:) * a_ip(:,:,:) 368 387 369 388 ! specific temperatures for coupled runs … … 466 485 ! 467 486 CHARACTER(len=256) :: cn_dir ! Root directory for location of ice files 468 TYPE(FLD_N) :: sn_hti, sn_hts, sn_ati, sn_smi, sn_tmi, sn_tsu, sn_tms, sn_apd, sn_hpd 487 TYPE(FLD_N) :: sn_hti, sn_hts, sn_ati, sn_smi, sn_tmi, sn_tsu, sn_tms, sn_apd, sn_hpd, sn_hld 469 488 TYPE(FLD_N), DIMENSION(jpfldi) :: slf_i ! array of namelist informations on the fields to read 470 489 ! … … 473 492 & rn_ati_ini_n, rn_ati_ini_s, rn_smi_ini_n, rn_smi_ini_s, & 474 493 & rn_tmi_ini_n, rn_tmi_ini_s, rn_tsu_ini_n, rn_tsu_ini_s, rn_tms_ini_n, rn_tms_ini_s, & 475 & rn_apd_ini_n, rn_apd_ini_s, rn_hpd_ini_n, rn_hpd_ini_s, &476 & sn_hti, sn_hts, sn_ati, sn_tsu, sn_tmi, sn_smi, sn_tms, sn_apd, sn_hpd, cn_dir494 & rn_apd_ini_n, rn_apd_ini_s, rn_hpd_ini_n, rn_hpd_ini_s, rn_hld_ini_n, rn_hld_ini_s, & 495 & sn_hti, sn_hts, sn_ati, sn_tsu, sn_tmi, sn_smi, sn_tms, sn_apd, sn_hpd, sn_hld, cn_dir 477 496 !!----------------------------------------------------------------------------- 478 497 ! … … 488 507 slf_i(jp_ati) = sn_ati ; slf_i(jp_smi) = sn_smi 489 508 slf_i(jp_tmi) = sn_tmi ; slf_i(jp_tsu) = sn_tsu ; slf_i(jp_tms) = sn_tms 490 slf_i(jp_apd) = sn_apd ; slf_i(jp_hpd) = sn_hpd 509 slf_i(jp_apd) = sn_apd ; slf_i(jp_hpd) = sn_hpd ; slf_i(jp_hld) = sn_hld 491 510 ! 492 511 IF(lwp) THEN ! control print … … 508 527 WRITE(numout,*) ' initial pnd fraction in the north-south rn_apd_ini = ', rn_apd_ini_n,rn_apd_ini_s 509 528 WRITE(numout,*) ' initial pnd depth in the north-south rn_hpd_ini = ', rn_hpd_ini_n,rn_hpd_ini_s 529 WRITE(numout,*) ' initial pnd lid depth in the north-south rn_hld_ini = ', rn_hld_ini_n,rn_hld_ini_s 510 530 ENDIF 511 531 ENDIF … … 532 552 rn_apd_ini_n = 0. ; rn_apd_ini_s = 0. 533 553 rn_hpd_ini_n = 0. ; rn_hpd_ini_s = 0. 534 CALL ctl_warn( 'rn_apd_ini & rn_hpd_ini = 0 when no ponds' ) 554 rn_hld_ini_n = 0. ; rn_hld_ini_s = 0. 555 CALL ctl_warn( 'rn_apd_ini & rn_hpd_ini = 0 & rn_hld_ini = 0 when no ponds' ) 535 556 ENDIF 536 557 !
Note: See TracChangeset
for help on using the changeset viewer.