수천 개의 배정도 실수가있는 표가 있습니다.효율적인 수렴 확인
반복을 통해 소수점 이하 3 자리로 수렴 할 때 중단해야합니다.
대상은 가능한 한 빨리 실행해야하지만 매번 같은 결과 (매 3dp)를 줄 필요가 있습니다. 분에서
는 내가 생각하고이
REAL(KIND=DP) :: TOL = 0.001_DP
DO WHILE(.NOT. CONVERGED)
CONVERGED = .TRUE.
DO I = 1, NUM_POINTS
NEW POTENTIAL = !blah blah blah
IF (CONVERGED) THEN
IF (NEW_POTENTIAL < OLD_POTENTIAL - TOL .OR. NEW_POTENTIAL > OLD_POTENTIAL + TOL) THEN
CONVERGED = .FALSE.
END IF
END IF
OLD_POTENTIAL = NEW POTENTIAL
END DO
END DO
같은 것을하고 있어요 문 성능에 대한 너무 큰 수없는 많은 경우 그. 나는 끝에 융합을 점검하는 것에 대해 생각했다. 평균값 (전체 그리드 합계, num_points로 나눔)을 확인하고 위와 같은 방식으로 수렴했는지 확인합니다. 그러나 이것이 항상 정확할 것이라고 확신하지는 않습니다.
가장 좋은 방법은 무엇입니까?
잘 – janneb
나는 과거에 _DP를하지 않았기 때문에 추격 당했고, 이제는 습관으로 해낸다. –
그리고 조언을 주셔서 감사합니다;) 제 생각에는 약간 잘못 생각한 것 같습니다. 첫 번째 점은 실제로 적용되지 않습니다. (실제로는 하나의 격자 만 있고, NEW_POTENTIAL은 하나의 변수이고 OLD_POTENTIAL은 배열입니다.). OLD_POTENTIAL의 한 지점 만 업데이트해야합니다. –