Changeset 13135 for NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/ABL
- Timestamp:
- 2020-06-19T17:37:47+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@12931 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/ABL/ablmod.F90
r12546 r13135 592 592 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 593 593 ! ! 8 *** Swap time indices for the next timestep 594 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 595 nt_n = 1 + MOD( kt, 2)596 nt_a = 1 + MOD( kt+1, 2)597 ! 594 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 595 nt_n = 1 + MOD( nt_n, 2) 596 nt_a = 1 + MOD( nt_a, 2) 597 ! 598 598 !--------------------------------------------------------------------------------------------------- 599 599 END SUBROUTINE abl_stp -
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/ABL/ablrst.F90
r11945 r13135 74 74 ENDIF 75 75 ! 76 CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka )76 CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka, cdcomp = 'ABL' ) 77 77 lrst_abl = .TRUE. 78 78 ENDIF … … 146 146 ENDIF 147 147 148 CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar , kdlev = jpka)148 CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar ) 149 149 150 150 ! Time info -
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/ABL/par_abl.F90
r12489 r13135 29 29 LOGICAL , PUBLIC :: ln_smth_pblh !: smoothing of atmospheric PBL height 30 30 31 LOGICAL , PUBLIC :: ln_rstart_abl !: (de)activate abl restart 31 32 CHARACTER(len=256), PUBLIC :: cn_ablrst_in !: suffix of abl restart name (input) 32 33 CHARACTER(len=256), PUBLIC :: cn_ablrst_out !: suffix of abl restart name (output) -
NEMO/branches/2020/dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation/src/ABL/sbcabl.F90
r12489 r13135 68 68 LOGICAL :: lluldl 69 69 NAMELIST/namsbc_abl/ cn_dir, cn_dom, cn_ablrst_in, cn_ablrst_out, & 70 & cn_ablrst_indir, cn_ablrst_outdir, 70 & cn_ablrst_indir, cn_ablrst_outdir, ln_rstart_abl, & 71 71 & ln_hpgls_frc, ln_geos_winds, nn_dyn_restore, & 72 72 & rn_ldyn_min , rn_ldyn_max, rn_ltra_min, rn_ltra_max, & … … 75 75 !!--------------------------------------------------------------------- 76 76 77 REWIND( numnam_ref )! Namelist namsbc_abl in reference namelist : ABL parameters77 ! Namelist namsbc_abl in reference namelist : ABL parameters 78 78 READ ( numnam_ref, namsbc_abl, IOSTAT = ios, ERR = 901 ) 79 79 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_abl in reference namelist' ) 80 ! 81 REWIND( numnam_cfg ) ! Namelist namsbc_abl in configuration namelist : ABL parameters 80 ! Namelist namsbc_abl in configuration namelist : ABL parameters 82 81 READ ( numnam_cfg, namsbc_abl, IOSTAT = ios, ERR = 902 ) 83 82 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_abl in configuration namelist' ) … … 264 263 265 264 ! Initialize the time index for now time (nt_n) and after time (nt_a) 266 nt_n = 1 + MOD( nit000 , 2) 267 nt_a = 1 + MOD( nit000+1, 2) 265 nt_n = 1; nt_a = 2 268 266 269 267 ! initialize ABL from data or restart 270 IF( ln_rstart ) THEN268 IF( ln_rstart_abl ) THEN 271 269 CALL abl_rst_read 272 270 ELSE … … 289 287 ENDIF 290 288 291 rhoa(:,:) = rho_air( tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), sf(jp_slp)%fnow(:,:,1) ) !!GS: rhoa must be (re)computed here here to avoid division by zero in blk_ice_1 (TBI)292 293 289 END SUBROUTINE sbc_abl_init 294 290 … … 330 326 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 331 327 332 !!------------------------------------------------------------------------------------------- 333 !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields 334 !!------------------------------------------------------------------------------------------- 335 336 CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 337 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 338 & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in 339 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in 340 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 341 342 #if defined key_si3 343 CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 344 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 345 & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in 346 & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out 347 #endif 348 349 !!------------------------------------------------------------------------------------------- 350 !! 3 - Advance ABL variables from now (n) to after (n+1) 351 !!------------------------------------------------------------------------------------------- 352 353 CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in 354 & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in 355 & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in 356 & sf(jp_slp )%fnow(:,:,1), & ! <<= in 357 & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in 358 & zcd_du, zsen, zevp, & ! <=> in/out 359 & wndm, utau, vtau, taum & ! =>> out 360 #if defined key_si3 361 & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in 362 & , zseni, zevpi, wndm_ice, ato_i & ! <<= in 363 & , utau_ice, vtau_ice & ! =>> out 364 #endif 365 & ) 366 !!------------------------------------------------------------------------------------------- 367 !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since 368 !! time swap is done in abl_stp 369 !!------------------------------------------------------------------------------------------- 370 371 CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), & 372 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), & 373 & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), & 374 & tsk_m, zsen, zevp ) 375 376 CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary) 377 IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file 378 379 #if defined key_si3 380 ! Avoid a USE abl in icesbc module 381 sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa) 382 #endif 328 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 329 330 !!------------------------------------------------------------------------------------------- 331 !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields 332 !!------------------------------------------------------------------------------------------- 333 334 CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 335 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 336 & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in 337 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in 338 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 339 340 #if defined key_si3 341 CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 342 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 343 & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in 344 & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out 345 #endif 346 347 !!------------------------------------------------------------------------------------------- 348 !! 3 - Advance ABL variables from now (n) to after (n+1) 349 !!------------------------------------------------------------------------------------------- 350 351 CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in 352 & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in 353 & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in 354 & sf(jp_slp )%fnow(:,:,1), & ! <<= in 355 & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in 356 & zcd_du, zsen, zevp, & ! <=> in/out 357 & wndm, utau, vtau, taum & ! =>> out 358 #if defined key_si3 359 & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in 360 & , zseni, zevpi, wndm_ice, ato_i & ! <<= in 361 & , utau_ice, vtau_ice & ! =>> out 362 #endif 363 & ) 364 !!------------------------------------------------------------------------------------------- 365 !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since 366 !! time swap is done in abl_stp 367 !!------------------------------------------------------------------------------------------- 368 369 CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), & 370 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), & 371 & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), & 372 & tsk_m, zsen, zevp ) 373 374 CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary) 375 IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file 376 377 #if defined key_si3 378 ! Avoid a USE abl in icesbc module 379 sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa) 380 #endif 381 END IF 383 382 384 383 END SUBROUTINE sbc_abl
Note: See TracChangeset
for help on using the changeset viewer.