turn off the hflux

INTEGER :: I,J

DO J=jts,jte

DO i=its,ite
DX2D(i)=DX(i,j)
ENDDO

DO i=its,ite
dz8w1d(I) = dz8w(i,1,j)
ENDDO

DO i=its,ite
U1D(i) =U3D(i,1,j)
V1D(i) =V3D(i,1,j)
QV1D(i)=QV3D(i,1,j)
P1D(i) =P3D(i,1,j)
T1D(i) =T3D(i,1,j)
ENDDO

! Sending array starting locations of optional variables may cause
! troubles, so we explicitly change the call.

CALL SFCLAY1D(J,U1D,V1D,T1D,QV1D,P1D,dz8w1d, &
CP,G,ROVCP,R,XLV,PSFC(ims,j),CHS(ims,j),CHS2(ims,j),&
CQS2(ims,j),CPM(ims,j),PBLH(ims,j), RMOL(ims,j), &
ZNT(ims,j),UST(ims,j),MAVAIL(ims,j),ZOL(ims,j), &
MOL(ims,j),REGIME(ims,j),PSIM(ims,j),PSIH(ims,j), &
FM(ims,j),FH(ims,j), &
XLAND(ims,j),HFX(ims,j),QFX(ims,j),TSK(ims,j), &
U10(ims,j),V10(ims,j),TH2(ims,j),T2(ims,j), &
Q2(ims,j),FLHC(ims,j),FLQC(ims,j),QGH(ims,j), &
QSFC(ims,j),LH(ims,j), &
GZ1OZ0(ims,j),WSPD(ims,j),BR(ims,j),ISFFLX,DX2D, &
SVP1,SVP2,SVP3,SVPT0,EP1,EP2,KARMAN,EOMEG,STBOLT, &
P1000mb,LAKEMASK(ims,j), &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte &
#if ( ( EM_CORE == 1 ) || ( defined(mpas) ) )
,isftcflx,iz0tlnd,scm_force_flux, &
USTM(ims,j),CK(ims,j),CKA(ims,j), &
CD(ims,j),CDA(ims,j) &
#endif
)
! 青藏高原区域感热、潜热强制归零(固定索引范围,i=12..42, j=1..43)
DO J = jts, jte
DO i = its, ite
IF ( i >= 12 .AND. i <= 42 .AND. J >= 1 .AND. J <= 43 ) THEN
HFX(i,J) = 0.0
ENDIF
ENDDO
ENDDO


END SUBROUTINE SFCLAY



maybe something wrong here?
 
Since WRF is always run in parallel mode, using i and j inside a loop to identify a specific area is not correct.

It is better to use latitude and longitude as the criteria to determine a specific area.
 
Since WRF is always run in parallel mode, using i and j inside a loop to identify a specific area is not correct.

It is better to use latitude and longitude as the criteria to determine a specific area.
may i ask some question ?for example,if i want to make the SH of an area to 0(or a very mini value),what phys file need i to do some change ?
 
If you mean sensible heat from the surface, then it is better to modify the surface driver.
I made changes in phys/module_surface_driver.F. After CALL noahmplsm, I used HT(i,j) > 3000.0 as the condition.
```fortran
if (ht(i,j) > 3000.0) then
hfx(i,j) = 0
endif
But in the final simulation output, hfx didn't change at all anywhere. Why?
 
Can you clarify how you modified the codes? It is hard fr me to tell what is wrong without details of your code changes.
 
After the function "CALL noahmplsm", I used HT(i,j) > 3000.0 as the condition.the part of the file is:


CALL wrf_debug(100,'in NOAHMP DRV')
CALL noahmplsm(ITIMESTEP, YR, JULIAN_IN, COSZEN, XLAT,XLONG, &
DZ8W, DTBL, DZS, NUM_SOIL_LAYERS, DX, &
IVGTYP, ISLTYP, VEGFRA, SHDMAX, TMN, &
XLAND, XICE, XICE_THRESHOLD, CROPCAT, &
PLANTING, HARVEST,SEASON_GDD, &
IDVEG, IOPT_CRS, IOPT_BTR, IOPT_RUN, IOPT_SFC, IOPT_FRZ, &
IOPT_INF, IOPT_RAD, IOPT_ALB, IOPT_SNF, IOPT_TBOT, IOPT_STC, &
IOPT_GLA, IOPT_RSF, IOPT_SOIL,IOPT_PEDO,IOPT_CROP, IOPT_IRR, &
IOPT_IRRM, IOPT_INFDV, IOPT_TDRN, soiltstep, &
IZ0TLND, SF_URBAN_PHYSICS, &
SOILCOMP, SOILCL1, SOILCL2, SOILCL3, SOILCL4, &
T_PHY, QV_CURR, U_PHY, V_PHY, SWDOWN, SWDDIR, &
SWDDIF, GLW, &
P8W, RAINBL, SR, &
IRFRACT, SIFRACT, MIFRACT, FIFRACT, &
TSK, HFX, QFX, LH, GRDFLX, SMSTAV, &
SMSTOT,SFCRUNOFF, UDRUNOFF, ALBEDO, SNOWC, SMOIS, &
SH2O, TSLB, SNOW, SNOWH, CANWAT, ACSNOM, &
ACSNOW, EMISS, QSFC, &
Z0, ZNT, & ! IN/OUT LSM eqv
IRNUMSI, IRNUMMI, IRNUMFI, IRWATSI, IRWATMI, IRWATFI, & ! IN/OUT Noah MP only
IRELOSS, IRSIVOL, IRMIVOL, IRFIVOL, IRRSPLH, LLANDUSE, &
ISNOWXY, TVXY, TGXY, CANICEXY, CANLIQXY, EAHXY, &
TAHXY, CMXY, CHXY, FWETXY, SNEQVOXY, ALBOLDXY, &
QSNOWXY, QRAINXY, WSLAKEXY, ZWTXY, WAXY, WTXY, TSNOXY, &
ZSNSOXY, SNICEXY, SNLIQXY, LFMASSXY, RTMASSXY, STMASSXY, &
WOODXY, STBLCPXY, FASTCPXY, LAI, XSAIXY, TAUSSXY, &
SMOISEQ, SMCWTDXY,DEEPRECHXY, RECHXY, GRAINXY, GDDXY,PGSXY, & ! IN/OUT Noah MP only
GECROS_STATE, & ! IN/OUT gecros model
QTDRAIN, TD_FRACTION, & ! IN/OUT tile drainage
T2MVXY, T2MBXY, Q2MVXY, Q2MBXY, &
TRADXY, NEEXY, GPPXY, NPPXY, FVEGXY, RUNSFXY, &
RUNSBXY, ECANXY, EDIRXY, ETRANXY, FSAXY, FIRAXY, &
APARXY, PSNXY, SAVXY, SAGXY, RSSUNXY, RSSHAXY, &
BGAPXY, WGAPXY, TGVXY, TGBXY, CHVXY, CHBXY, &
SHGXY, SHCXY, SHBXY, EVGXY, EVBXY, GHVXY, &
GHBXY, IRGXY, IRCXY, IRBXY, TRXY, EVCXY, &
CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, RS, &
qintsxy ,qintrxy ,qdripsxy ,&
qdriprxy ,qthrosxy ,qthrorxy ,&
qsnsubxy ,qsnfroxy ,qsubcxy ,&
qfrocxy ,qevacxy ,qdewcxy ,qfrzcxy ,qmeltcxy ,&
qsnbotxy ,qmeltxy ,pondingxy ,PAHXY ,PAHGXY, PAHVXY, PAHBXY,&
fpicexy,RAINLSM,SNOWLSM,forctlsm,forcqlsm,forcplsm,forczlsm,forcwlsm,&
acc_ssoil, acc_qinsur, acc_qseva, acc_etrani, eflxbxy, soilenergy, snowenergy, canhsxy,&
ACC_DWATERXY, ACC_PRCPXY, ACC_ECANXY, ACC_ETRANXY, ACC_EDIRXY, &
#ifdef WRF_HYDRO
sfcheadrt,INFXSRT,soldrain,qtiledrain,ZWATBLE2D, & !O
#endif
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
i_start(ij),i_end(ij), j_start(ij),j_end(ij), kts,kte, &
! variables below are optional
MP_RAINC = RAINCV, MP_RAINNC = RAINNCV, MP_SHCV = RAINSHV,&
MP_SNOW = SNOWNCV, MP_GRAUP = GRAUPELNCV, MP_HAIL = HAILNCV )
! 青藏高原区域感热强制归零(海拔>3000m)
DO j = j_start(ij), j_end(ij)
DO i = i_start(ij), i_end(ij)
IF ( HT(i,j) > 3000.0 ) THEN
hfx(i,j) = 0.0
ENDIF
ENDDO
ENDDO


this is the part of module_surface_driver.F i have changed
 
The code changes using (i, j) as index are not appropriate.

You need to specify the area based on xlat and xlong.
 
The code changes using (i, j) as index are not appropriate.

You need to specify the area based on xlat and xlong.
!青藏高原区域感热强制归零(海拔>3000m)
WHERE ( XLAT >= 25.0 .AND. XLAT <= 45.0 .AND. &
XLONG >= 78.0 .AND. XLONG <= 110.0 .AND. &
HT > 3000.0 )
HFX = 0.0
END WHERE

i change, but hfx does't have any diffrence

maybe i shouldn't change hfx here?
 
Back
Top