Example
1D cantilever beam with uncertain material properties.
The example is a simple one-dimensional cantilever beam where flexibility is modeled through a 1D-Gaussian random field. MSolve.Stochastic. The first code section creates the stochastic model. To this end the user must determine a stochastic domain mapper, a stochastic realizer for the realization of the uncertain parameter stochastic field, the process of the stochastic response evaluation through a stochastic evaluator and the simulation procedure for the sampling of the stochastic domain space and the evaluation of the stochastic response i.e. Monte Carlo.
public class SolveProblem
{
public void Solve()
{
const int iterations = 1000;
const double youngModulus = 2.1e8;
var domainMapper = new CantileverStochasticDomainMapper(new [] { 0d, 0d, 0d });
var realizer = new StructuralStochasticRealizer(youngModulus, domainMapper);
var evaluator = new StructuralStochasticEvaluator(youngModulus, domainMapper);
var m = new MonteCarlo(iterations, realizer, evaluator);
m.Evaluate();
}
}
The model is created using the CantileverStochasticDomainMapper class used to describe the mapping from the model geometry to the stochastic domain.
public class CantileverStochasticDomainMapper : IStochasticDomainMapper
{
private readonly double[] origin;
public CantileverStochasticDomainMapper(double[] origin)
{
this.origin = origin;
}
public double[] Map(double[] problemDomainVector)
{
return new[]
{
Math.Sqrt(Math.Pow(problemDomainVector[0] - origin[0], 2) +
Math.Pow(problemDomainVector[1] - origin[1], 2) +
Math.Pow(problemDomainVector[2] - origin[2], 2))
};
}
}
Both classes can be found in the MSolve.Stochastic.Tests project.