2017-08-18 8 views
0

Pyomo DAEツールボックスを使用して偏微分方程式を解くと、1つの独立変数(m.xなど)のドメイン長は非常に小さくなります(1e-6など)。Pyomo DAE toolboxはドメインを適切に離散化できません

離散化されたmxには、オプションで10個の有限要素点を指定した場合でも、2点(これを確認するためにContinuousSet.get_finite_elements()メソッドを使用しました)があるため、DAEツールボックスはドメインを適切に離散化できません。以下のコード)。

m.x = ContinuousSet(bounds=(0, 1e-6)) 

disc=TransformationFactory('dae.finite_difference') 
disc.apply_to(m, nfe=10, wrt=m.x, scheme='BACKWARD') 

私は

m.x = ContinuousSet(bounds=(0, 1e-5)) 

としてm.xの上限を増加し、再びそれを離散化してみました。今回私はxドメインで10ポイント得ました。私は

m.x = ContinuousSet(bounds=(0, 1e-5)) 
disc.apply_to(m, nfe=100, wrt=m.x, scheme='BACKWARD') 

として、有限要素点の数を増加させたとき

しかし、返された離散化ドメインxはまだ10ポイントを持っていました。

DAEツールボックスに1e-6の許容差または制限があるかどうかを知りたい。存在する場合、どのようにこの値をカスタマイズできますか?

ありがとうございます!

+0

Bethany Nicholsonは、Pyomo.DAEに最も精通した開発者です。ソルバーの問題に遭遇する可能性があるため、連続的な集合をスケーリングして、それが狭く限定されていないようにすることを検討してください。 –

答えて

0

はい、現在、ドメインの長さに制限があります。離散化変換は現在、新しい離散化点を小数点以下6桁に丸めます。これは浮動小数点丸めのわずかな違いのために、同じ離散化点が複数回追加されていた問題を見ていたためです。 @ QtotheCが述べたように、最適な解決策は、ContinuousSetの境界が(0,1)になるようにスケーリングを変更することです。

現在含める小数点の数は、ユーザーが変更できるオプションではありませんが、いつでもソースコードに入り、herehereの番号を変更することができます。

+0

ありがとう!あなたの答えはとても役に立ちます! – Bay

関連する問題