f.write('X2=@X2\n') with open('external_program.py', 'w') as f: f.write('import sys\n') f.write('exec(open(sys.argv[1]).read())\n') f.write('Y0=X0+X1+X2\n') f.write('Y1=X0+X1*X2\n') f.write('with open("output.txt", "w") as f:\n') f.write(' f.write("Y0=%.17e\\n" % Y0)\n') f.write(' f.write("Y1=%.17e\\n" % Y1)\n') input_file = persalys.CouplingInputFile('input_template.txt') input_file.setConfiguredPath('input.txt') input_file.setVariables(['X0', 'X1', 'X2'], ['@X0', '@X1', '@X2'], ['{:10.6f}', '{:10.6f}', '{:10.6f}']) resource_file = persalys.CouplingResourceFile('external_program.py') output_file = persalys.CouplingOutputFile('output.txt') output_file.setVariables(['Y0', 'Y1'], ['Y0=', 'Y1='], [0, 0], [0, 0], [0, 0]) step = persalys.CouplingStep(sys.executable + ' external_program.py input.txt', [input_file], [resource_file], [output_file]) model = persalys.CouplingPhysicalModel('A', [step]) # single evaluation x = [1.0, 2.0, 3.0] f = model.getFunction() y = f(x) print(y) ott.assert_almost_equal(y, [6.0, 7.0]) # sampling test ot_function = model.getFunction() Y = ot.CompositeRandomVector(ot_function, ot.RandomVector(ot.Normal(3)))
f.write('X2=@X2\n') with open('external_program0y.py', 'w') as f: f.write('import sys\n') f.write('exec(open("input.txt").read())\n') f.write('Y0=X0+X1+X2\n') f.write('Y1=X0+X1*X2\n') f.write('with open("output.txt", "w") as f:\n') f.write(' f.write("Y0=%.17e\\n" % Y0)\n') f.write(' f.write("Y1=%.17e\\n" % Y1)\n') input_file = persalys.CouplingInputFile('input_template0y.txt') input_file.setConfiguredPath('input.txt') input_file.setVariables(['X0', 'X1', 'X2'], ['@X0', '@X1', '@X2'], ['', '', '']) resource_file = persalys.CouplingResourceFile('external_program0y.py') output_file = persalys.CouplingOutputFile('output.txt') output_file.setVariables(['Y0', 'Y1'], ['Y0=', 'Y1='], [0, 0], [0, 0], [0, 0]) step = persalys.CouplingStep(sys.executable + ' external_program0y.py', [input_file], [resource_file], [output_file]) model = persalys.YACSCouplingPhysicalModel('A', [step]) # single evaluation x = [1.0, 2.0, 3.0] f = model.getFunction() y = f(x) print(y) ott.assert_almost_equal(y, [6.0, 7.0]) # sampling test ot_function = model.getFunction() Y = ot.CompositeRandomVector(ot_function, ot.RandomVector(ot.Normal(3)))
inputs = [E, F, I, L] outputs = [deviation] steps = [] input_files = [] input_file0 = persalys.CouplingInputFile( '../python/test/coupling_model/beam_input_template.xml') input_file0.setConfiguredPath('beam_input.xml') input_file0.setVariables(['E', 'F', 'I', 'L'], ['@E', '@F', '@I', '@L'], ['{}', '{}', '{}', '{}']) input_files.append(input_file0) resource_files = [] resource_file0 = persalys.CouplingResourceFile( '../python/test/coupling_model/beam.py') resource_files.append(resource_file0) output_files = [] output_file0 = persalys.CouplingOutputFile('beam_output.txt') output_file0.setVariables(['deviation'], ['deviation='], [0], [0], [0]) output_files.append(output_file0) step0 = persalys.CouplingStep('python3 beam.py', input_files, resource_files, output_files) step0.setIsShell(False) steps.append(step0) couplingModel = persalys.CouplingPhysicalModel('couplingModel', inputs, outputs, steps) couplingModel.setCleanupWorkDirectory(True) couplingModel.setCacheFiles('', '') myStudy.add(couplingModel) filename = 'data.csv' cDist = ot.ComposedDistribution( [ot.Normal(), ot.Gumbel(), ot.Normal(), ot.Uniform()],