2014-01-27 6 views
0

내 질문 : 외부 루프 (j)에 대해 내부 루프 (i)의 최종 계산 값을 사용하고 싶습니다. 그러나 (j = 2 및 i = 1) 잘못된 값을 취하기 시작합니다. 나는 어디에서 실수를 했을까? 입력 사항을 표시하지 않고 외부 루프를 이해하는 데 도움이 필요합니다.외부 루프의 값 업데이트, 다른 For 루프의 For 루프

For j = 1 To 4 

wf = (2 * j - 1) * wff 

    For i = 1 To 3       

     PZ = (1 - GP/GT) * pzi     
     p = fPpz(PZ, ppc, Tpr)     
     z = p/PZ        

     pavg = (p + pwf)/2 
     Bg_p = Bg(z, T, p, psc, Tsc) 
     mug_p = (mugas(SGg, p, T))/1000 
     mug_pavg = (mugas(SGg, pavg, T))/1000 
     Z_pavg = fZ(pavg/ppc, Tpr) 
     Bg_pavg = Bg(Z_pavg, T, pavg, psc, Tsc) 


     Time2 = 1 + Time1 
     delTime = Time2 - Time1 

     PIndex = PIndn(kres, hres, mug_pavg, Bg_pavg, JDf) 

     dpdlf = pf(p, pwf, xf, PIndex, tauyhb, nhb, khb, wfg_new, Hf, wf, Bg_pavg, dpdlold,mug_pavg, Bg_p, mug_p) 

     dpdlnew = dpdlf 


     If dpdlf < 0 Then 
     dpdlnew = dpdlold 
     End If 


     qg = FrGasF(tauyhb, nhb, khb, wfg_new, Hf, wf, dpdlnew, mug_p)        
     GP = 2 * qg * delTime * 60/Bg_p + GP            
     qhb = FrHBF(tauyhb, nhb, khb, wfg_new, Hf, wf, dpdlnew)          
     wfg_old = qhb/xf/Hf * delTime * 60/2            

     '=======For next iteration (i+1)=======' 

     wfg_new = wfg_new + wfg_old 
     Time1 = Time2 
     dpdlold = dpdlnew 
    Next i 
Next j 
+0

어디에서 값이 잘못 표시됩니까? 바깥 쪽 루프는 홀수 승수 (1, 3, 5, 7)를 wff에 공급합니다. – hstay

+0

그리고이 값에 대해 i- 루프보다 실행됩니다 ... 잘못된 값은 j = 4 일 때입니다 ... – user2981046

+0

여전히 잘못된 점이나 달성하고자하는 점을 이해하지 못합니다. – hstay

답변

1

당신은 외부 j 루프에서 wfg_new = 0를 설정해야 하는가? 그렇지 않으면 j = 2, i = 1은 pf 함수를 호출 할 때 j = 1, i = 3의 wfg_new 값을 사용합니다.

+0

i-loop에서 "p", "wfg_new", "Time1", "GP"를 사용하고 있습니다. 그래서 j = 2, i = 1 일 때,이 값들은 j = 1, i = 3에서 나온 것이어야합니다. – user2981046