Python版のAEiを作成しました。
手始めに、Calculixの接触問題で入力荷重を変化させ、二分探査法により歪が特定の値となる荷重値を求めるデモを作成しました。
解析を実行するスクリプトは以下のとおり。
import sys
import AEpy as AEI
pmax = 1.0
pmin = 0.1
target = 2.0e-5
while (pmax - pmin) > 1.0e-6:
pmid = (pmax + pmin) / 2.0
BASE = 'case_test'
INP = BASE + '.inp'
DAT = BASE + '.dat'
FRD = BASE + '.frd'
AEI.a('FRDNAME', FRD)
AEI.a('MYLOAD',pmid, 'L')
AEI.b('bolt_tmp.txt', INP)
AEI.b('cgx.txt', 'my.frd')
AEI.c('ccx ' + BASE)
AEI.c('cgx -b my.frd')
AEI.c('python my_max.py ' + DAT + ' result.csv')
M = AEI.d('result.csv')
eps = float(M[0][0])
print('LOAD=', pmid, 'eps=', eps, 'target=', target)
if eps > target:
pmax = pmid
else:
pmin = pmid