Hello, I am a beginner with the Uqlab software and I want to perform the sensitivity analysis of a finite element digital model implemented in the Castem software. My problem is that I can’t make the connection between the two software I read the uqlink user manual I tried to follow the examples but I have no value. However, I was able to link my castem to MatLab with the following code and the calculation goes correctly.
n_sim = 10;
F_ct
Ft.m = 3.5e6;
Ft.cov = 0.13;
Ft.type = 'Lognormal';
Mod_E
mod_E.m = 35e9;
mod_E.cov = 0.12;
mod_E.type = ‘Lognormal’;
Ft.data = generRV(n_sim,Ft);
mod_E.data = generRV(n_sim,mod_E);
sigma = zeros(1,n_sim);
fleche = zeros(1,n_sim);
timeCPU = 0;
for i_sim = 1 : n_sim
%% Create vector x for ith simulation
x = [ Ft.data(i_sim) mod_E.data(i_sim)];
%% Write vector x to file
fid = fopen('inputstat.txt','w');
%
n = max(size(x));
for i = 1:n
fprintf(fid,'%20.16E\n',x(i));
end
fclose(fid);
%% Call Castem to calculate
tic
dos('castem18 essais_stat_OK.dgibi');
timeCPU = timeCPU + toc;
%% Get Output
File = 'resultstat.out';
A = textread(File,'%f');
fleche(i_sim) = A(1,1);
sigma(i_sim) = A(2,1);
%
end
Here is my uqlab code.
clearvars
rng(1,‘twister’)
uqlab
%%
% Model type:
ModelOpts.Type = ‘UQLink’;
ModelOpts.Name = ‘CASTEM Wrapper’;
%%
EXECUTABLE = ‘C:\Cast3M\PCW_18\bin’;
INPUTFILE = ‘essais_stat_OK.dgibi’;
COMMANDLINE = sprintf(’%s %s’,EXECUTABLE,INPUTFILE);
ModelOpts.Command = COMMANDLINE;
ModelOpts.Template = ‘essais_stat_OK.dgibi.tpl’;
ModelOpts.Output.FileName = ‘resultstat.out’;
ModelOpts.Output.Parser = ‘readresultOutput’;
ModelOpts.ExecutionPath = fullfile(uq_rootPath,…
‘Examples’,‘UQLink’,‘sens_stat’) ;
%%
ModelOpts.Format = {’%1.8f’};
ModelOpts.Display = ‘quiet’;
monModelCASTEM = uq_createModel(ModelOpts);
InputOpts.Marginals(1).Name = ‘E’; Young's modulus InputOpts.Marginals(1).Type = 'Lognormal'; InputOpts.Marginals(1).Moments = [35e9 4.2e9]; (Pa)
InputOpts.Marginals(2).Name = ‘Ft’; InputOpts.Marginals(2).Type = 'Lognormal'; InputOpts.Marginals(2).Moments = [3.5e6 0.455e6]; (Pa)
myInput = uq_createInput(InputOpts);
X = uq_getSample(10,‘LHS’);
Y = uq_evalModel(monModelCASTEM,X);
Thank you in advance for your return