FOAM FATAL ERROR: Maximum number of iterations exceeded: %1

OpenFOAM 8

エラーメッセージ例

--> FOAM FATAL IO ERROR:
Maximum number of iterations exceeded: 100

定義位置

OpenFOAM-8/src/thermophysicalModels/specie/thermo/thermo/thermoI.H

概要

熱流体解析で計算が収束せずに発散した場合に起きるエラーです。

計算が発散した場合には以下のような方法で問題が解消するかを確認します。

  1. 緩和係数を小さくする。

    以下の様に system/fvSolution ファイル内で定義されている各変数の緩和係数 relaxationFactors の値を小さくして問題が解消するかを確認します。

    relaxationFactors{
    	fields{
    		rho 0.1;
    		p_rgh 0.03;
    	}
    	equations{
    		U 0.07;
    		h 0.07;
    		k 0.07;
    		epsilon 0.07;
    	}
    }
    
  2. 安定的な行列ソルバー、スキームを使用する。

    以下の様に system/fvSolution ファイル内で定義されている solvers の設定をより安定的なものに変更します。

    rho.*{
    	solver PCG;
    	preconditioner DIC;
    	tolerance 0;
    	relTol 0;
    }
    p{
    	solver PCG;
    	preconditioner DIC;
    	tolerance 1e-06;
    	relTol 0.01;
    }
    p_rgh{
    	solver PCG;
    	preconditioner DIC;
    	tolerance 1e-06;
    	relTol 0.01;
    }
    U{
    	solver PBiCG;
    	preconditioner DILU;
    	tolerance 1e-05;
    	relTol 0.1;
    }
    h{
    	solver PBiCG;
    	preconditioner DILU;
    	tolerance 1e-05;
    	relTol 0.1;
    }
    k{
    	solver PBiCG;
    	preconditioner DILU;
    	tolerance 1e-05;
    	relTol 0.1;
    }
    epsilon{
    	solver PBiCG;
    	preconditioner DILU;
    	tolerance 1e-05;
    	relTol 0.1;
    }
    

    また以下の様に system/fvSchemes ファイル内で定義されている gradSchemes と divSchemes の設定をより安定なものに変更します。

    gradSchemes{
    	default faceLimited Gauss linear 1;
    }
    divSchemes{
    	default none;
    	div(phi,U) bounded Gauss upwind;
    	div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
    	div(phi,K) bounded Gauss upwind;
    	div(phi,h) bounded Gauss upwind;
    	div(phi,k) bounded Gauss upwind;
    	div(phi,epsilon) bounded Gauss upwind;
    }
    

    ただし一般的に安定な設定はその分、計算精度や計算速度が落ちることに注意してください。

  3. メッシュの品質を調べる。

    上記を行っても問題が解決しない場合は、メッシュが歪んでいる等、メッシュの品質に問題がある可能性があります。checkMesh コマンドでメッシュの品質を確認し、問題がある場合はメッシュ作成の設定を見直してメッシュを作成し直します。