Changeset 12565
- Timestamp:
- 2020-03-17T15:51:51+01:00 (5 years ago)
- Location:
- NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/AGRIF_DEMO/EXPREF/1_namelist_cfg
r12495 r12565 94 94 ! ! bulk algorithm : 95 95 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 96 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003)97 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)98 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31)99 !100 rn_zqt = 10. ! Air temperature & humidity reference height (m)101 rn_zu = 10. ! Wind vector reference height (m)102 ln_Cd_L12 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2012)103 ln_Cd_L15 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2015)104 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow)105 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.)106 rn_vfac = 0. ! multiplicative factor for ocean & ice velocity used to107 ! ! calculate the wind stress (0.=absolute or 1.=relative winds)108 ln_skin_cs = .false. ! use the cool-skin parameterization (only available in ECMWF and COARE algorithms) !LB109 ln_skin_wl = .false. ! use the warm-layer " " "110 !111 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true.112 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true.113 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true.114 96 ! 115 97 cn_dir = './' ! root directory for the bulk data location -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/AGRIF_DEMO/EXPREF/2_namelist_cfg
r12495 r12565 90 90 ! ! bulk algorithm : 91 91 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 92 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003)93 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)94 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31)95 !96 rn_zqt = 10. ! Air temperature & humidity reference height (m)97 rn_zu = 10. ! Wind vector reference height (m)98 ln_Cd_L12 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2012)99 ln_Cd_L15 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2015)100 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow)101 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.)102 rn_vfac = 0. ! multiplicative factor for ocean & ice velocity used to103 ! ! calculate the wind stress (0.=absolute or 1.=relative winds)104 ln_skin_cs = .false. ! use the cool-skin parameterization (only available in ECMWF and COARE algorithms) !LB105 ln_skin_wl = .false. ! use the warm-layer " " "106 !107 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true.108 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true.109 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true.110 92 ! 111 93 cn_dir = './' ! root directory for the bulk data location -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/AGRIF_DEMO/EXPREF/namelist_cfg
r12495 r12565 94 94 ! ! bulk algorithm : 95 95 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 96 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003)97 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)98 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31)99 !100 rn_zqt = 10. ! Air temperature & humidity reference height (m)101 rn_zu = 10. ! Wind vector reference height (m)102 ln_Cd_L12 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2012)103 ln_Cd_L15 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2015)104 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow)105 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.)106 rn_vfac = 0. ! multiplicative factor for ocean & ice velocity used to107 ! ! calculate the wind stress (0.=absolute or 1.=relative winds)108 ln_skin_cs = .false. ! use the cool-skin parameterization (only available in ECMWF and COARE algorithms) !LB109 ln_skin_wl = .false. ! use the warm-layer " " "110 !111 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true.112 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true.113 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true.114 96 ! 115 97 cn_dir = './' ! root directory for the bulk data location -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/ORCA2_ICE_ABL/EXPREF/namelist_cfg
r12495 r12565 109 109 ! ! bulk algorithm : 110 110 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 111 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003)112 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)113 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31)114 rn_zqt = 10. ! Air temperature & humidity reference height (m)115 rn_zu = 10. ! Wind vector reference height (m)116 !117 ! Skin is ONLY available in ECMWF and COARE algorithms:118 ln_skin_cs = .false. ! use the cool-skin parameterization => set nn_fsbc=1 and ln_dm2dc=.true.!119 ln_skin_wl = .false. ! use the warm-layer " => set nn_fsbc=1 and ln_dm2dc=.true.!120 !121 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true.122 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true.123 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true.124 111 ! 125 112 cn_dir = './' ! root directory for the bulk data location … … 131 118 sn_tair = 'tair_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'tair' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bilinear' , '' , '' 132 119 sn_humi = 'humi_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'humi' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bilinear' , '' , '' 133 sn_hpgi = 'uhpg_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'uhpg' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic' , 'UG' , ''134 sn_hpgj = 'vhpg_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'vhpg' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic' , 'VG' , ''135 136 120 sn_qsr = 'ncar_rad.15JUNE2009_fill' , 24., 'SWDN_MOD', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 137 121 sn_qlw = 'ncar_rad.15JUNE2009_fill' , 24., 'LWDN_MOD', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' … … 139 123 sn_snow = 'ncar_precip.15JUNE2009_fill' , -1., 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 140 124 sn_slp = 'slp.15JUNE2009_fill' , 6., 'SLP' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 125 sn_hpgi = 'uhpg_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'uhpg' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic' , 'UG' , '' 126 sn_hpgj = 'vhpg_drwnlnd_ERAI_L25Z10_GLOBAL_F128R_ana1d', 24., 'vhpg' , .false. , .false. , 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic' , 'VG' , '' 141 127 / 142 128 -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/ORCA2_SAS_ICE/EXPREF/namelist_cfg
r12377 r12565 66 66 ! ! bulk algorithm : 67 67 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 68 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003)69 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)70 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31)71 !72 rn_zqt = 10. ! Air temperature & humidity reference height (m)73 rn_zu = 10. ! Wind vector reference height (m)74 ln_Cd_L12 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2012)75 ln_Cd_L15 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2015)76 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow)77 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.)78 rn_vfac = 0. ! multiplicative factor for ocean & ice velocity used to79 ! ! calculate the wind stress (0.=absolute or 1.=relative winds)80 ln_skin_cs = .false. ! use the cool-skin parameterization (only available in ECMWF and COARE algorithms) !LB81 ln_skin_wl = .false. ! use the warm-layer " " "82 !83 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true.84 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true.85 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true.86 68 ! 87 69 cn_dir = './' ! root directory for the bulk data location -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/SHARED/namelist_ref
r12551 r12565 268 268 ln_Cd_L12 = .false. ! air-ice drags = F(ice conc.) (Lupkes et al. 2012) 269 269 ln_Cd_L15 = .false. ! air-ice drags = F(ice conc.) (Lupkes et al. 2015) 270 ! ! - module of the mean stress" data 270 ln_crt_fbk = .false. ! Add surface current feedback to the wind stress (Renault et al. 2020, doi: 10.1029/2019MS001715) 271 rn_stau_a = -2.9e-3 ! Alpha from eq. 10: Stau = Alpha * Wnd + Beta 272 rn_stau_b = 8.0e-3 ! Beta 271 273 rn_pfac = 1. ! multipl. factor for precipitation (total & snow) 272 274 rn_efac = 1. ! multipl. factor for evaporation (0. or 1.) 273 rn_vfac = 0. ! multipl. factor for ocean & ice velocity274 ! ! used to calculate the wind stress275 ! ! (0. => absolute or 1. => relative winds)276 275 ln_skin_cs = .false. ! use the cool-skin parameterization 277 276 ln_skin_wl = .false. ! use the warm-layer parameterization … … 291 290 sn_tair = 't_10.15JUNE2009_fill' , 6. , 'T_10_MOD', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 292 291 sn_humi = 'q_10.15JUNE2009_fill' , 6. , 'Q_10_MOD', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 293 sn_hpgi = 'NOT USED' , 24. , 'uhpg' , .false. , .false., 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic', 'UG' , ''294 sn_hpgj = 'NOT USED' , 24. , 'vhpg' , .false. , .false., 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic', 'VG' , ''295 292 sn_prec = 'ncar_precip.15JUNE2009_fill', -1. , 'PRC_MOD1', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 296 293 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 297 294 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 295 sn_uoatm = 'NOT USED' , 6. , 'UOATM' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , 'Uoceatm', '' 296 sn_voatm = 'NOT USED' , 6. , 'VOATM' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , 'Voceatm', '' 297 sn_hpgi = 'NOT USED' , 24. , 'uhpg' , .false. , .false., 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic', 'UG' , '' 298 sn_hpgj = 'NOT USED' , 24. , 'vhpg' , .false. , .false., 'monthly' , 'weights_ERAI3D_F128_2_ORCA2_bicubic', 'VG' , '' 298 299 / 299 300 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/cfgs/WED025/EXPREF/namelist_cfg
r12495 r12565 139 139 !----------------------------------------------------------------------- 140 140 ! ! bulk algorithm : 141 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 142 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003) 143 ln_COARE_3p5 = .false. ! "COARE 3.5" algorithm (Edson et al. 2013) 144 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31) 145 141 ln_NCAR = .true. 142 ! 146 143 cn_dir = './' ! root directory for the bulk data location 147 144 !___________!_________________________!___________________!___________!_____________!________!___________!______________________________________!__________!_______________! -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/ABL/ablmod.F90
r12495 r12565 18 18 USE dom_oce, ONLY : tmask 19 19 USE sbc_oce, ONLY : ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka, jpkam1, rhoa 20 USE sbcblk ! use rn_?fac20 USE sbcblk, ONLY : rn_efac 21 21 USE sbcblk_phy ! use some physical constants for flux computation 22 22 ! … … 530 530 531 531 DO_2D_01_01 532 zwnd_i(ji,jj) = u_abl(ji ,jj,2,nt_a) - 0.5_wp * rn_vfac *( pssu(ji ,jj) + pssu(ji-1,jj) )533 zwnd_j(ji,jj) = v_abl(ji,jj ,2,nt_a) - 0.5_wp * rn_vfac *( pssv(ji,jj ) + pssv(ji,jj-1) )532 zwnd_i(ji,jj) = u_abl(ji ,jj,2,nt_a) - 0.5_wp * ( pssu(ji ,jj) + pssu(ji-1,jj) ) 533 zwnd_j(ji,jj) = v_abl(ji,jj ,2,nt_a) - 0.5_wp * ( pssv(ji,jj ) + pssv(ji,jj-1) ) 534 534 END_2D 535 535 ! … … 570 570 571 571 #if defined key_si3 572 ! ------------------------------------------------------------ ! 573 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 574 ! ------------------------------------------------------------ ! 575 DO_2D_00_00 576 577 zztmp1 = 0.5_wp * ( u_abl(ji+1,jj,2,nt_a) + u_abl(ji,jj,2,nt_a) ) 578 zztmp2 = 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) 579 580 ptaui_ice(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * pCd_du_ice(ji+1,jj) & 581 & + rhoa(ji ,jj) * pCd_du_ice(ji ,jj) ) & 582 & * ( zztmp1 - rn_vfac * pssu_ice(ji,jj) ) 583 ptauj_ice(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * pCd_du_ice(ji,jj+1) & 584 & + rhoa(ji,jj ) * pCd_du_ice(ji,jj ) ) & 585 & * ( zztmp2 - rn_vfac * pssv_ice(ji,jj) ) 586 END_2D 587 CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1., ptauj_ice, 'V', -1. ) 588 ! 589 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: putaui : ' & 590 & , tab2d_2=ptauj_ice , clinfo2=' pvtaui : ' ) 572 ! ------------------------------------------------------------ ! 573 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 574 ! ------------------------------------------------------------ ! 575 DO_2D_00_00 576 ptaui_ice(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * pCd_du_ice(ji+1,jj) + rhoa(ji,jj) * pCd_du_ice(ji,jj) ) & 577 & * ( 0.5_wp * ( u_abl(ji+1,jj,2,nt_a) + u_abl(ji,jj,2,nt_a) ) - pssu_ice(ji,jj) ) 578 ptauj_ice(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * pCd_du_ice(ji,jj+1) + rhoa(ji,jj) * pCd_du_ice(ji,jj) ) & 579 & * ( 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) - pssv_ice(ji,jj) ) 580 END_2D 581 CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1., ptauj_ice, 'V', -1. ) 582 ! 583 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: putaui : ' & 584 & , tab2d_2=ptauj_ice , clinfo2=' pvtaui : ' ) 591 585 #endif 592 586 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 599 593 END SUBROUTINE abl_stp 600 594 !=================================================================================================== 601 602 603 604 605 606 607 608 609 610 611 612 613 614 595 615 596 -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/ABL/sbcabl.F90
r12551 r12565 335 335 CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 336 336 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 337 & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in 338 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in 337 & sf(jp_slp )%fnow(:,:,1), sst_m, ssu_m, ssv_m , & ! <<= in 338 & sf(jp_uoatm)%fnow(:,:,1), sf(jp_voatm)%fnow(:,:,1), & ! <<= in 339 & sf(jp_qsr )%fnow(:,:,1), sf(jp_qlw )%fnow(:,:,1), & ! <<= in 339 340 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 340 341 -
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/OCE/SBC/sbcblk.F90
r12495 r12565 74 74 #endif 75 75 76 INTEGER , PUBLIC :: jpfld ! maximum number of files to read 77 INTEGER , PUBLIC, PARAMETER :: jp_wndi = 1 ! index of 10m wind velocity (i-component) (m/s) at T-point 78 INTEGER , PUBLIC, PARAMETER :: jp_wndj = 2 ! index of 10m wind velocity (j-component) (m/s) at T-point 79 INTEGER , PUBLIC, PARAMETER :: jp_tair = 3 ! index of 10m air temperature (Kelvin) 80 INTEGER , PUBLIC, PARAMETER :: jp_humi = 4 ! index of specific humidity ( % ) 81 INTEGER , PUBLIC, PARAMETER :: jp_qsr = 5 ! index of solar heat (W/m2) 82 INTEGER , PUBLIC, PARAMETER :: jp_qlw = 6 ! index of Long wave (W/m2) 83 INTEGER , PUBLIC, PARAMETER :: jp_prec = 7 ! index of total precipitation (rain+snow) (Kg/m2/s) 84 INTEGER , PUBLIC, PARAMETER :: jp_snow = 8 ! index of snow (solid prcipitation) (kg/m2/s) 85 INTEGER , PUBLIC, PARAMETER :: jp_slp = 9 ! index of sea level pressure (Pa) 86 INTEGER , PUBLIC, PARAMETER :: jp_hpgi =10 ! index of ABL geostrophic wind or hpg (i-component) (m/s) at T-point 87 INTEGER , PUBLIC, PARAMETER :: jp_hpgj =11 ! index of ABL geostrophic wind or hpg (j-component) (m/s) at T-point 88 76 INTEGER , PUBLIC, PARAMETER :: jp_wndi = 1 ! index of 10m wind velocity (i-component) (m/s) at T-point 77 INTEGER , PUBLIC, PARAMETER :: jp_wndj = 2 ! index of 10m wind velocity (j-component) (m/s) at T-point 78 INTEGER , PUBLIC, PARAMETER :: jp_tair = 3 ! index of 10m air temperature (Kelvin) 79 INTEGER , PUBLIC, PARAMETER :: jp_humi = 4 ! index of specific humidity ( % ) 80 INTEGER , PUBLIC, PARAMETER :: jp_qsr = 5 ! index of solar heat (W/m2) 81 INTEGER , PUBLIC, PARAMETER :: jp_qlw = 6 ! index of Long wave (W/m2) 82 INTEGER , PUBLIC, PARAMETER :: jp_prec = 7 ! index of total precipitation (rain+snow) (Kg/m2/s) 83 INTEGER , PUBLIC, PARAMETER :: jp_snow = 8 ! index of snow (solid prcipitation) (kg/m2/s) 84 INTEGER , PUBLIC, PARAMETER :: jp_slp = 9 ! index of sea level pressure (Pa) 85 INTEGER , PUBLIC, PARAMETER :: jp_uoatm = 10 ! index of surface current (i-component) 86 ! ! seen by the atmospheric forcing (m/s) at T-point 87 INTEGER , PUBLIC, PARAMETER :: jp_voatm = 11 ! index of surface current (j-component) 88 ! ! seen by the atmospheric forcing (m/s) at T-point 89 INTEGER , PUBLIC, PARAMETER :: jp_hpgi = 12 ! index of ABL geostrophic wind or hpg (i-component) (m/s) at T-point 90 INTEGER , PUBLIC, PARAMETER :: jp_hpgj = 13 ! index of ABL geostrophic wind or hpg (j-component) (m/s) at T-point 91 INTEGER , PUBLIC, PARAMETER :: jpfld = 13 ! maximum number of files to read 92 93 ! Warning: keep this structure allocatable for Agrif... 89 94 TYPE(FLD), PUBLIC, ALLOCATABLE, DIMENSION(:) :: sf ! structure of input atmospheric fields (file informations, fields read) 90 95 … … 98 103 LOGICAL :: ln_Cd_L15 ! ice-atm drag = F( ice concentration, atmospheric stability ) (Lupkes et al. JGR2015) 99 104 ! 105 LOGICAL :: ln_crt_fbk ! Add surface current feedback to the wind stress computation (Renault et al. 2020) 106 REAL(wp) :: rn_stau_a ! Alpha and Beta coefficients of Renault et al. 2020, eq. 10: Stau = Alpha * Wnd + Beta 107 REAL(wp) :: rn_stau_b ! 108 ! 100 109 REAL(wp) :: rn_pfac ! multiplication factor for precipitation 101 110 REAL(wp), PUBLIC :: rn_efac ! multiplication factor for evaporation 102 REAL(wp), PUBLIC :: rn_vfac ! multiplication factor for ice/ocean velocity in the calculation of wind stress103 111 REAL(wp) :: rn_zqt ! z(q,t) : height of humidity and temperature measurements 104 112 REAL(wp) :: rn_zu ! z(u) : height of wind measurements … … 162 170 !! 163 171 CHARACTER(len=100) :: cn_dir ! Root directory for location of atmospheric forcing files 164 TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) :: slf_i ! array of namelist informations on the fields to read 165 TYPE(FLD_N) :: sn_wndi, sn_wndj, sn_humi, sn_qsr ! informations about the fields to be read 166 TYPE(FLD_N) :: sn_qlw , sn_tair, sn_prec, sn_snow ! " " 167 TYPE(FLD_N) :: sn_slp , sn_hpgi, sn_hpgj ! " " 172 TYPE(FLD_N), DIMENSION(jpfld) :: slf_i ! array of namelist informations on the fields to read 173 TYPE(FLD_N) :: sn_wndi, sn_wndj , sn_humi, sn_qsr ! informations about the fields to be read 174 TYPE(FLD_N) :: sn_qlw , sn_tair , sn_prec, sn_snow ! " " 175 TYPE(FLD_N) :: sn_slp , sn_uoatm, sn_voatm ! " " 176 TYPE(FLD_N) :: sn_hpgi, sn_hpgj ! " " 177 INTEGER :: ipka ! number of levels in the atmospheric variable 168 178 NAMELIST/namsbc_blk/ sn_wndi, sn_wndj, sn_humi, sn_qsr, sn_qlw , & ! input fields 169 & sn_tair, sn_prec, sn_snow, sn_slp, sn_hpgi, sn_hpgj, & 179 & sn_tair, sn_prec, sn_snow, sn_slp, sn_uoatm, sn_voatm, & 180 & sn_hpgi, sn_hpgj, & 170 181 & ln_NCAR, ln_COARE_3p0, ln_COARE_3p6, ln_ECMWF, & ! bulk algorithm 171 182 & cn_dir , rn_zqt, rn_zu, & 172 & rn_pfac, rn_efac, rn_vfac, ln_Cd_L12, ln_Cd_L15, & 183 & rn_pfac, rn_efac, ln_Cd_L12, ln_Cd_L15, & 184 & ln_crt_fbk, rn_stau_a, rn_stau_b, & ! current feedback 173 185 & ln_skin_cs, ln_skin_wl, ln_humi_sph, ln_humi_dpt, ln_humi_rlh ! cool-skin / warm-layer !LB 174 186 !!--------------------------------------------------------------------- … … 242 254 ! !* set the bulk structure 243 255 ! !- store namelist information in an array 244 IF( ln_blk ) jpfld = 9 245 IF( ln_abl ) jpfld = 11 246 ALLOCATE( slf_i(jpfld) ) 247 ! 248 slf_i(jp_wndi) = sn_wndi ; slf_i(jp_wndj) = sn_wndj 249 slf_i(jp_qsr ) = sn_qsr ; slf_i(jp_qlw ) = sn_qlw 250 slf_i(jp_tair) = sn_tair ; slf_i(jp_humi) = sn_humi 251 slf_i(jp_prec) = sn_prec ; slf_i(jp_snow) = sn_snow 252 slf_i(jp_slp ) = sn_slp 253 IF( ln_abl ) THEN 254 slf_i(jp_hpgi) = sn_hpgi ; slf_i(jp_hpgj) = sn_hpgj 255 END IF 256 ! 257 slf_i(jp_wndi ) = sn_wndi ; slf_i(jp_wndj ) = sn_wndj 258 slf_i(jp_qsr ) = sn_qsr ; slf_i(jp_qlw ) = sn_qlw 259 slf_i(jp_tair ) = sn_tair ; slf_i(jp_humi ) = sn_humi 260 slf_i(jp_prec ) = sn_prec ; slf_i(jp_snow ) = sn_snow 261 slf_i(jp_slp ) = sn_slp 262 slf_i(jp_uoatm) = sn_uoatm ; slf_i(jp_voatm) = sn_voatm 263 slf_i(jp_hpgi ) = sn_hpgi ; slf_i(jp_hpgj ) = sn_hpgj 264 ! 265 IF( .NOT. ln_abl ) THEN ! force to not use jp_hpgi and jp_hpgj, should already be done in namelist_* but we never know... 266 slf_i(jp_hpgi)%clname = 'NOT USED' 267 slf_i(jp_hpgj)%clname = 'NOT USED' 268 ENDIF 256 269 ! 257 270 ! !- allocate the bulk structure … … 264 277 DO jfpr= 1, jpfld 265 278 ! 266 IF( TRIM(sf(jfpr)%clrootname) == 'NOT USED' ) THEN !-- not used field --! (only now allocated and set to zero) 267 ALLOCATE( sf(jfpr)%fnow(jpi,jpj,1) ) 268 sf(jfpr)%fnow(:,:,1) = 0._wp 279 IF( ln_abl .AND. & 280 & ( jfpr == jp_wndi .OR. jfpr == jp_wndj .OR. jfpr == jp_humi .OR. & 281 & jfpr == jp_hpgi .OR. jfpr == jp_hpgj .OR. jfpr == jp_tair ) ) THEN 282 ipka = jpka ! ABL: some fields are 3D input 283 ELSE 284 ipka = 1 285 ENDIF 286 ! 287 ALLOCATE( sf(jfpr)%fnow(jpi,jpj,ipka) ) 288 ! 289 IF( TRIM(sf(jfpr)%clrootname) == 'NOT USED' ) THEN !-- not used field --! (only now allocated and set to default) 290 IF( jfpr == jp_slp ) THEN 291 sf(jfpr)%fnow(:,:,1:ipka) = 101325._wp ! use standard pressure in Pa 292 ELSEIF( jfpr == jp_prec .OR. jfpr == jp_snow .OR. jfpr == jp_uoatm .OR. jfpr == jp_voatm ) THEN 293 sf(jfpr)%fnow(:,:,1:ipka) = 0._wp ! no precip or no snow or no surface currents 294 ELSEIF( ( jfpr == jp_hpgi .OR. jfpr == jp_hpgj ) .AND. .NOT. ln_abl ) THEN 295 DEALLOCATE( sf(jfpr)%fnow ) ! deallocate as not used in this case 296 ELSE 297 WRITE(ctmp1,*) 'sbc_blk_init: no default value defined for field number', jfpr 298 CALL ctl_stop( ctmp1 ) 299 ENDIF 269 300 ELSE !-- used field --! 270 IF( ln_abl .AND. & 271 & ( jfpr == jp_wndi .OR. jfpr == jp_wndj .OR. jfpr == jp_humi .OR. & 272 & jfpr == jp_hpgi .OR. jfpr == jp_hpgj .OR. jfpr == jp_tair ) ) THEN ! ABL: some fields are 3D input 273 ALLOCATE( sf(jfpr)%fnow(jpi,jpj,jpka) ) 274 IF( sf(jfpr)%ln_tint ) ALLOCATE( sf(jfpr)%fdta(jpi,jpj,jpka,2) ) 275 ELSE ! others or Bulk fields are 2D fiels 276 ALLOCATE( sf(jfpr)%fnow(jpi,jpj,1) ) 277 IF( sf(jfpr)%ln_tint ) ALLOCATE( sf(jfpr)%fdta(jpi,jpj,1,2) ) 278 ENDIF 301 IF( sf(jfpr)%ln_tint ) ALLOCATE( sf(jfpr)%fdta(jpi,jpj,ipka,2) ) ! allocate array for temporal interpolation 279 302 ! 280 303 IF( sf(jfpr)%freqh > 0. .AND. MOD( NINT(3600. * sf(jfpr)%freqh), nn_fsbc * NINT(rn_Dt) ) /= 0 ) & … … 327 350 WRITE(numout,*) ' factor applied on precipitation (total & snow) rn_pfac = ', rn_pfac 328 351 WRITE(numout,*) ' factor applied on evaporation rn_efac = ', rn_efac 329 WRITE(numout,*) ' factor applied on ocean/ice velocity rn_vfac = ', rn_vfac330 352 WRITE(numout,*) ' (form absolute (=0) to relative winds(=1))' 331 353 WRITE(numout,*) ' use ice-atm drag from Lupkes2012 ln_Cd_L12 = ', ln_Cd_L12 332 354 WRITE(numout,*) ' use ice-atm drag from Lupkes2015 ln_Cd_L15 = ', ln_Cd_L15 355 WRITE(numout,*) ' use surface current feedback on wind stress ln_crt_fbk = ', ln_crt_fbk 356 IF(ln_crt_fbk) THEN 357 WRITE(numout,*) ' Renault et al. 2020, eq. 10: Stau = Alpha * Wnd + Beta' 358 WRITE(numout,*) ' Alpha rn_stau_a = ', rn_stau_a 359 WRITE(numout,*) ' Beta rn_stau_b = ', rn_stau_b 360 ENDIF 333 361 ! 334 362 WRITE(numout,*) … … 429 457 ! ! compute the surface ocean fluxes using bulk formulea 430 458 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 431 CALL blk_oce_1( kt, sf(jp_wndi)%fnow(:,:,1), sf(jp_wndj)%fnow(:,:,1), & ! <<= in 432 & sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), & ! <<= in 433 & sf(jp_slp )%fnow(:,:,1), sst_m, ssu_m, ssv_m, & ! <<= in 434 & sf(jp_qsr )%fnow(:,:,1), sf(jp_qlw )%fnow(:,:,1), & ! <<= in (wl/cs) 435 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 436 437 CALL blk_oce_2( sf(jp_tair)%fnow(:,:,1), sf(jp_qsr )%fnow(:,:,1), & ! <<= in 438 & sf(jp_qlw )%fnow(:,:,1), sf(jp_prec)%fnow(:,:,1), & ! <<= in 439 & sf(jp_snow)%fnow(:,:,1), tsk_m, & ! <<= in 440 & zsen, zevp ) ! <=> in out 459 CALL blk_oce_1( kt, sf(jp_wndi )%fnow(:,:,1), sf(jp_wndj )%fnow(:,:,1), & ! <<= in 460 & sf(jp_tair )%fnow(:,:,1), sf(jp_humi )%fnow(:,:,1), & ! <<= in 461 & sf(jp_slp )%fnow(:,:,1), sst_m, ssu_m, ssv_m, & ! <<= in 462 & sf(jp_uoatm)%fnow(:,:,1), sf(jp_voatm)%fnow(:,:,1), & ! <<= in 463 & sf(jp_qsr )%fnow(:,:,1), sf(jp_qlw )%fnow(:,:,1), & ! <<= in (wl/cs) 464 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 465 466 CALL blk_oce_2( sf(jp_tair )%fnow(:,:,1), sf(jp_qsr )%fnow(:,:,1), & ! <<= in 467 & sf(jp_qlw )%fnow(:,:,1), sf(jp_prec )%fnow(:,:,1), & ! <<= in 468 & sf(jp_snow )%fnow(:,:,1), tsk_m, & ! <<= in 469 & zsen, zevp ) ! <=> in out 441 470 ENDIF 442 471 ! … … 470 499 471 500 472 SUBROUTINE blk_oce_1( kt, pwndi, pwndj , ptair, phumi,& ! inp473 & pslp , pst , pu , pv,& ! inp474 & pqsr , pqlw ,& ! inp475 & ptsk, pssq , pcd_du, psen , pevp )! out501 SUBROUTINE blk_oce_1( kt, pwndi, pwndj, ptair, phumi, & ! inp 502 & pslp , pst , pu , pv, & ! inp 503 & puatm, pvatm, pqsr , pqlw , & ! inp 504 & ptsk , pssq , pcd_du, psen, pevp ) ! out 476 505 !!--------------------------------------------------------------------- 477 506 !! *** ROUTINE blk_oce_1 *** … … 498 527 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pu ! surface current at U-point (i-component) [m/s] 499 528 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pv ! surface current at V-point (j-component) [m/s] 529 REAL(wp), INTENT(in ), DIMENSION(:,:) :: puatm ! surface current seen by the atm at T-point (i-component) [m/s] 530 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pvatm ! surface current seen by the atm at T-point (j-component) [m/s] 500 531 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pqsr ! 501 532 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pqlw ! … … 508 539 INTEGER :: ji, jj ! dummy loop indices 509 540 REAL(wp) :: zztmp ! local variable 541 REAL(wp) :: zstmax, zstau 542 #if defined key_cyclone 510 543 REAL(wp), DIMENSION(jpi,jpj) :: zwnd_i, zwnd_j ! wind speed components at T-point 544 #endif 545 REAL(wp), DIMENSION(jpi,jpj) :: ztau_i, ztau_j ! wind stress components at T-point 511 546 REAL(wp), DIMENSION(jpi,jpj) :: zU_zu ! bulk wind speed at height zu [m/s] 512 547 REAL(wp), DIMENSION(jpi,jpj) :: ztpot ! potential temperature of air at z=rn_zqt [K] … … 532 567 zwnd_j(:,:) = 0._wp 533 568 CALL wnd_cyc( kt, zwnd_i, zwnd_j ) ! add analytical tropical cyclone (Vincent et al. JGR 2012) 534 DO_2D_00_00 535 pwndi(ji,jj) = pwndi(ji,jj) + zwnd_i(ji,jj) 536 pwndj(ji,jj) = pwndj(ji,jj) + zwnd_j(ji,jj) 569 DO_2D_11_11 570 zwnd_i(ji,jj) = pwndi(ji,jj) + zwnd_i(ji,jj) 571 zwnd_j(ji,jj) = pwndj(ji,jj) + zwnd_j(ji,jj) 572 ! ... scalar wind at T-point (not masked) 573 wndm(ji,jj) = SQRT( zwnd_i(ji,jj) * zwnd_i(ji,jj) + zwnd_j(ji,jj) * zwnd_j(ji,jj) ) 574 END_2D 575 #else 576 ! ... scalar wind module at T-point (not masked) 577 DO_2D_11_11 578 wndm(ji,jj) = SQRT( pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj) ) 537 579 END_2D 538 580 #endif 539 DO_2D_00_00540 zwnd_i(ji,jj) = ( pwndi(ji,jj) - rn_vfac * 0.5 * ( pu(ji-1,jj ) + pu(ji,jj) ) )541 zwnd_j(ji,jj) = ( pwndj(ji,jj) - rn_vfac * 0.5 * ( pv(ji ,jj-1) + pv(ji,jj) ) )542 END_2D543 CALL lbc_lnk_multi( 'sbcblk', zwnd_i, 'T', -1., zwnd_j, 'T', -1. )544 ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked)545 wndm(:,:) = SQRT( zwnd_i(:,:) * zwnd_i(:,:) &546 & + zwnd_j(:,:) * zwnd_j(:,:) ) * tmask(:,:,1)547 548 581 ! ----------------------------------------------------------------------------- ! 549 582 ! I Solar FLUX ! … … 597 630 END_2D 598 631 ENDIF 599 600 601 632 602 633 !! Time to call the user-selected bulk parameterization for … … 673 704 pevp(:,:) = pevp(:,:) * tmask(:,:,1) 674 705 675 ! Tau i and j component on T-grid points, using array "zcd_oce" as a temporary array... 676 zcd_oce = 0._wp 677 WHERE ( wndm > 0._wp ) zcd_oce = taum / wndm 678 zwnd_i = zcd_oce * zwnd_i 679 zwnd_j = zcd_oce * zwnd_j 680 681 CALL iom_put( "taum_oce", taum ) ! output wind stress module 706 DO_2D_11_11 707 IF( wndm(ji,jj) > 0._wp ) THEN 708 zztmp = taum(ji,jj) / wndm(ji,jj) 709 #if defined key_cyclone 710 ztau_i(ji,jj) = zztmp * zwnd_i(ji,jj) 711 ztau_j(ji,jj) = zztmp * zwnd_j(ji,jj) 712 #else 713 ztau_i(ji,jj) = zztmp * pwndi(ji,jj) 714 ztau_j(ji,jj) = zztmp * pwndj(ji,jj) 715 #endif 716 ELSE 717 ztau_i(ji,jj) = 0._wp 718 ztau_j(ji,jj) = 0._wp 719 ENDIF 720 END_2D 721 722 IF( ln_crt_fbk ) THEN ! aply eq. 10 and 11 of Renault et al. 2020 (doi: 10.1029/2019MS001715) 723 zstmax = MIN( rn_stau_a * 3._wp + rn_stau_b, 0._wp ) ! set the max value of Stau corresponding to a wind of 3 m/s (<0) 724 DO_2D_01_01 ! end at jpj and jpi, as ztau_j(ji,jj+1) ztau_i(ji+1,jj) used in the next loop 725 zstau = MIN( rn_stau_a * wndm(ji,jj) + rn_stau_b, zstmax ) ! stau (<0) must be smaller than zstmax 726 ztau_i(ji,jj) = ztau_i(ji,jj) + zstau * ( 0.5_wp * ( pu(ji-1,jj ) + pu(ji,jj) ) - puatm(ji,jj) ) 727 ztau_j(ji,jj) = ztau_j(ji,jj) + zstau * ( 0.5_wp * ( pv(ji ,jj-1) + pv(ji,jj) ) - pvatm(ji,jj) ) 728 taum(ji,jj) = SQRT( ztau_i(ji,jj) * ztau_i(ji,jj) + ztau_j(ji,jj) * ztau_j(ji,jj) ) 729 END_2D 730 ENDIF 682 731 683 732 ! ... utau, vtau at U- and V_points, resp. 684 733 ! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 685 734 ! Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 686 DO_2D_ 10_10687 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( z wnd_i(ji,jj) + zwnd_i(ji+1,jj ) ) &688 & * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1))689 vtau(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( z wnd_j(ji,jj) + zwnd_j(ji ,jj+1) ) &690 & * MAX(tmask(ji,jj,1),tmask(ji,jj+1,1))735 DO_2D_00_00 ! start loop at 2, in case ln_crt_fbk = T 736 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( ztau_i(ji,jj) + ztau_i(ji+1,jj ) ) & 737 & * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) 738 vtau(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( ztau_j(ji,jj) + ztau_j(ji ,jj+1) ) & 739 & * MAX(tmask(ji,jj,1),tmask(ji,jj+1,1)) 691 740 END_2D 692 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 741 742 IF( ln_crt_fbk ) THEN 743 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. ) 744 ELSE 745 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 746 ENDIF 747 748 CALL iom_put( "taum_oce", taum ) ! output wind stress module 693 749 694 750 IF(sn_cfctl%l_prtctl) THEN … … 861 917 ! 862 918 INTEGER :: ji, jj ! dummy loop indices 863 REAL(wp) :: zwndi_t , zwndj_t ! relative wind components at T-point864 919 REAL(wp) :: zootm_su ! sea-ice surface mean temperature 865 920 REAL(wp) :: zztmp1, zztmp2 ! temporary arrays … … 872 927 ! ------------------------------------------------------------ ! 873 928 ! C-grid ice dynamics : U & V-points (same as ocean) 874 DO_2D_00_00 875 zwndi_t = ( pwndi(ji,jj) - rn_vfac * 0.5_wp * ( puice(ji-1,jj ) + puice(ji,jj) ) ) 876 zwndj_t = ( pwndj(ji,jj) - rn_vfac * 0.5_wp * ( pvice(ji ,jj-1) + pvice(ji,jj) ) ) 877 wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 929 DO_2D_11_11 930 wndm_ice(ji,jj) = SQRT( pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj) ) 878 931 END_2D 879 CALL lbc_lnk( 'sbcblk', wndm_ice, 'T', 1. )880 932 ! 881 933 ! Make ice-atm. drag dependent on ice concentration … … 902 954 ! C-grid ice dynamics : U & V-points (same as ocean) 903 955 DO_2D_00_00 904 putaui(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) & 905 & + rhoa(ji ,jj) * zcd_dui(ji ,jj) ) & 906 & * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) ) 907 pvtaui(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) & 908 & + rhoa(ji,jj ) * zcd_dui(ji,jj ) ) & 909 & * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) ) 956 putaui(ji,jj) = 0.25_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) + rhoa(ji,jj) * zcd_dui(ji,jj) ) & 957 & * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) 958 pvtaui(ji,jj) = 0.25_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) + rhoa(ji,jj) * zcd_dui(ji,jj) ) & 959 & * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) 910 960 END_2D 911 961 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. )
Note: See TracChangeset
for help on using the changeset viewer.