1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#!/usr/bin/env python
import openturns as ot
import persalys
myStudy = persalys.Study('myStudy')
persalys.Study.Add(myStudy)
dist_Q = ot.Gumbel(0.00179211, 1013)
Q = persalys.Input('Q', 1000, dist_Q, 'Debit maximal annuel (m3/s)')
dist_Ks = ot.Normal(30, 7.5)
dist_Ks = ot.TruncatedDistribution(dist_Ks, 0)
Ks = persalys.Input('Ks', 30, dist_Ks, 'Strickler (m^(1/3)/s)')
dist_Zv = ot.Uniform(49, 51)
Zv = persalys.Input('Zv', 50, dist_Zv, 'Cote de la riviere en aval (m)')
dist_Zm = ot.Uniform(54, 56)
Zm = persalys.Input('Zm', 55, dist_Zm, 'Cote de la riviere en amont (m)')
S = persalys.Output('S', 'Surverse (m)')
inputs = [Q, Ks, Zv, Zm]
outputs = [S]
formulas = ['(Q/(Ks*300.*sqrt((Zm-Zv)/5000)))^(3.0/5.0)+Zv-55.5-3.']
myPhysicalModel = persalys.SymbolicPhysicalModel('myPhysicalModel', inputs, outputs, formulas)
myStudy.add(myPhysicalModel)
limitState1 = persalys.LimitState('limitState1', myPhysicalModel, 'S', ot.Greater(), -1)
myStudy.add(limitState1)
myMonteCarlo = persalys.MonteCarloReliabilityAnalysis('myMonteCarlo', limitState1)
myMonteCarlo.setMaximumCalls(10000)
myMonteCarlo.setMaximumCoefficientOfVariation(0.01)
myMonteCarlo.setMaximumElapsedTime(60)
myMonteCarlo.setBlockSize(1)
myMonteCarlo.setSeed(0)
myStudy.add(myMonteCarlo)
myformIS = persalys.FORMImportanceSamplingAnalysis('myformIS', limitState1)
myformIS.setMaximumCalls(10000)
myformIS.setMaximumCoefficientOfVariation(0.01)
myformIS.setMaximumElapsedTime(60)
myformIS.setBlockSize(1000)
myformIS.setSeed(0)
myformIS.setPhysicalStartingPoint([1013, 30.001, 50, 55])
optimizationAlgo = ot.AbdoRackwitz()
optimizationAlgo.setMaximumCallsNumber(1000)
optimizationAlgo.setMaximumAbsoluteError(1e-05)
optimizationAlgo.setMaximumRelativeError(1e-05)
optimizationAlgo.setMaximumResidualError(1e-05)
optimizationAlgo.setMaximumConstraintError(1e-05)
myformIS.setOptimizationAlgorithm(optimizationAlgo)
myStudy.add(myformIS)
|