C SW默认值 SW=-9999.99 C SW起始值 SWQ=SW2D C FX 参数A SW2A=REAL(RT*((POR/100)**SOM2)/SOA2/SRW2/(1-(VSH/100)**SOC2)) C FX 参数A SW2B=REAL(RT*((VSH/100)**SOC2)/RSH2)
C F(Xn) FX1=REAL(SW2A*(SWQ**SON2)+SW2B*(SWQ**(SON2/2))-1) WRITE(*,*)'FX1=',FX1 C F(Xn)判断变量,节省计算内存 FX11=0 IF(FX1.GE.0) THEN FX11=1 ELSE FX11=-1 ENDIF C F(Xn+1) FX2=REAL(SW2A*((SWQ+SW2D)**SON2)+SW2B*((SWQ+SW2D)**(SON2/2))-1) C F(Xn+1)判断变量,节省计算内存 FX22=0 IF(FX2.GE.0) THEN FX22=1 ELSE FX22=-1 ENDIF C 临界判断变量,当SWFT<0证明为取值区间 SWFT=REAL(FX11*FX22)
C 执行循环体,按步长挪动区间 DOWHILE(SWFT.GT.0) SWQ=SWQ+SW2D FX11=0 FX1=REAL(SW2A*(SWQ**SON2)+SW2B*(SWQ**(SON2/2))-1) WRITE(*,*)'FX1=',FX1 IF(FX1.GE.0) THEN FX11=1 ELSE FX11=-1 ENDIF FX22=0 FX2=REAL(SW2A*((SWQ+SW2D)**SON2)+SW2B*((SWQ+SW2D)**(SON2/2))-1) WRITE(*,*)'FX2=',FX2 IF(FX2.GE.0) THEN FX22=1 ELSE FX22=-1 ENDIF SWFT=REAL(FX11*FX22) C WRITE(*,*)'SWFT=',SWFT C SW范围是0-1 IF(SWQ.GT.1) exit ENDDO SW=REAL(SWQ*100)