Model Uncertainty

Hi there :grinning:

Recently, I come across with the need of introducing a model uncertainty to the output of a finite element model that is going to be used to create a kriging based metamodel. Note that the output is already based on random variables of the finite element model. The end goal is to compute the structure reliability index using AK-MCS considering aleatory and epistemic uncertainties.

I must also say that the finite element software is connected to UQLab by the UQLink tool.

Looking forward to your feedback.

Regards,
Neryvaldo

1 Like

Dear Neryvaldo

Model uncertainty cannot be taken into account without further information. Usually, it comes from comparing model predictions with experimental data / measurements: after calibrating your model at best (e.g. using Bayesian inversion techniques), there is some remaining model/experiments mismatch that you can consider as a model uncertainty.

Maybe what you mean is surrogate model uncertainty coming from the mismatch between the original finite element model and e.g. the Kriging model, that you would like to take it into account for further analysis. Is it what you refer to?

Well, for Kriging models, you have a local error coming from the Kriging variance. This is however (somehow) directly embedded in the AK-MCS procedure, that refines the surrogate until the surroagte error is negligible w.r.t the predicted quantities (such as the probability of failure).

For other surrogates, you can think about adding a centred Gaussian noise to the surrogate prediction, whose variance is linked to the LOO error of the surrogate. However, in common situations where this LOO error is in the range of 10^{-3} - 10^{-6} this is so negligible that people rarely do this in practice.

Hope it answers your questions.
Best regards
Bruno

Best regards
Bruno

Dear @bsudret

Thank you very much for your reply :slight_smile:. Apologies for not being clear enough in my previous question.

By model uncertainty, I meant the mismatch between the FEM model and the real expected response of the structural system. In Civil Engineering there are some pre-established probabilistic models, for bending and shear concrete resistance, available to represent the expected mismatch between the FEM and real behaviour of the structure (a.k.a model uncertainty). Let G(x) be the limit state function defined by R(resistance) and S(Load): The resistance ® prediction given by the FEM model has an aleatoric uncertainty associated to it given by the aleatoric variation of the input parameters such as concrete and steel strength, among others. However, there is also has what is also known as epistemic uncertainties, which represent the uncertainty associated with the mathematical models used to predict the output R. Thus, the former G(x) = R-S can include the model uncertainty ∅ as follow G (x) = ∅R-S.
Accordingly, I was wondering how can I associate such uncertainty directly to the Output parameter R in UQlab.
Generally, I would multiply the output parameter to a vector containing the model uncertainty (LN(1.2,0.18)). Nevertheless, this seems not to work since UQLab is not expecting such a thing.

Looking forward to hearing from you again.

Regards,
Neryvaldo Galvão

Dear Neryvaldo

Thanks for the clarification. Then it is quite simple!

You can define the model uncertainty variable altogether with the other inputs in your INPUT object. Say it is now the last component N, as in:

iOpts.Marginals(N).Type ='lognormal';
iOpts.Marginals(N).Moments = [1.2 0.18];   % I assume the parameters you mention above are moments.

If you have already wrapped your finite element model into UQLab (manually or using UQLink), you must have a MODEL object, say myUQLinkFEModel (obtained using uq_createModel(mOpts)). Note that it should run as before, even with this new INPUT: simply, the model uncertainty variable myInput.Marginals(N) now plays the role of a dummy variable (i.e. it is not used) in myUQLinkFEModel.

You can now create a second MODEL:

mOpts.mFile = 'myModel_WithModelUncertainty';
myModel_MU= uq_createModel(mOpts);

where the associated m-file looks like:

function Y = myModel_WithModelUncertainty(X)
%  Runs the finite element model with input parameters X(1:N-1), 
%  and multiply the result with model uncertainty contained in X(N)
% 
%    NB: this code could be easily vectorized

% Run the finite element model as before
Y_FE = uq_evalModel(myUQLinkFEModel,X);
% Multiply by the model uncertainty
Y = Y_FE * X(N);
end

Then you can do whatever you want with the new MODEL myModel_WithModelUncertainty, including AKMCS. I hope this makes sense.

Best regards
Bruno

1 Like

Dear Professor @bsudret

Thank you very much for your kind and very explanatory reply.

Best wishes
Neryvaldo