Small Satellite (SFEM - Static)

From COSSAN Wiki
Jump to: navigation, search

Performing the SFEM analysis

After defining the input, the connector is created by right-clicking on the connector icon in the tree view and selecting the "add connector" option. The connector to NASTRAN is defined as follows for this example. Please note that the connector type should be chosen as NASTRAN within the configuration of the connector.


Also, another important step within the definition of the connector is the creation of the injector. The definition of the identifiers (please note the formatting) for this tutorial is shown in the screenshot below:


Important Note: Although an extractor is not used within the SFEM analysis, it has to be defined within the connector for the completeness.

Once the connector is defined properly, a physical model has to be defined accordingly, which is depicted in the following screenshot:


In this analysis, the combined effect of the uncertainties within the young's modulus, density and thickness on the displacements will be investigated. Since thickness is included within the random parameters, Perturbation method will be excluded (A second order approximation is required if the thickness is included in the probabilistic model, and Perturbation method is implemented only for the first order approximations). Hence, Neumann expansion and P-C expansion methods are to be used in order to estimate the statistics of the stochastic displacements. More specifically, 200 simulations will be performed within the Neumann expansion method (truncating the Neumann series after 5 terms, i.e. order of the method to be selected as 5), while a 2. order expansion will be constructed within the P-C method.

The methods and the corresponding input parameters can be selected using the SFEM wizard:


Please make sure that the correspondance of the random variables to the structural parameters are assigned correctly: All RVs starting with "E" are associated to the Young's modulus, "t" to the thickness and "D" to the density.

In case you select to perform Galerkin PC analysis, a menu to define the advanced settings for the preconditioner and iterative solver is available (it is not recommended to change these settings, unless you are confident with what you are doing):


The matlab code required for the COSSAN engine for this example is shown below:

%% Create the input

% define the RVs
% vert: vertical Panels, hor: horizontal panels (i.e. upper and lower)
% cyl: cylinder, nozzle: nozzle
Evert   = RandomVariable('Sdistribution','normal', 'mean',7e6,'cov',0.15);    
Ehor    = RandomVariable('Sdistribution','normal', 'mean',7e6,'cov',0.15);
Ecyl    = RandomVariable('Sdistribution','normal', 'mean',7e6,'cov',0.15); 
Enozzle = RandomVariable('Sdistribution','normal', 'mean',7e6,'cov',0.15);

Dvert   = RandomVariable('Sdistribution','normal', 'mean',2700e-6,'cov',0.1); 
Dhor    = RandomVariable('Sdistribution','normal', 'mean',2700e-6,'cov',0.1); 
Dcyl    = RandomVariable('Sdistribution','normal', 'mean',2700e-6,'cov',0.1);    
Dnozzle = RandomVariable('Sdistribution','normal', 'mean',2700e-6,'cov',0.1);   

tvert   = RandomVariable('Sdistribution','normal', 'mean',0.15,'cov',0.05); 
thor    = RandomVariable('Sdistribution','normal', 'mean',0.15,'cov',0.05); 
tcyl    = RandomVariable('Sdistribution','normal', 'mean',0.15,'cov',0.05);       
tnozzle = RandomVariable('Sdistribution','normal', 'mean',0.15,'cov',0.05);  

Xrvs = RandomVariableSet('Cmembers',{'Evert','Ehor','Ecyl','Enozzle',...
Xinp = Input('Sdescription','Xinput object');       
Xinp = add(Xinp,Xrvs);

%% Construct the Model

Sdirectory = fullfile(CossanX.getCossanRoot,'examples','Tutorials','SmallSatellite','FEinputFiles');
Xinj       = Injector('Sscanfilepath',Sdirectory,'Sscanfilename','Static.cossan','Sfile','Static.inp');
Xcon       = Connector('Stype','nastran_x86_64',...
Xcon       = add(Xcon,Xinj);
Xeval      = Evaluator('Xconnector',Xcon,'CSmembers',{'Xcon'});
Xmodel     = Model('Xevaluator',Xeval,'Xinput',Xinp);

%% Using regular implementation (NASTRAN)

Xsfem = Neumann('Xmodel',Xmodel,...
% Fix the seed in order to generate same samples => to validate results
Xout = Xsfem.performAnalysis;

getResponse(Xout,'Sresponse','specific','MresponseDOFs',[50123 1])

Results of the SFEM analysis

The estimated statistics of the response obtained using various methods are summarized in the following table:

Summary of Statistics (Node 50123 - DOF 1)


   Neumann (200 samples)     P-C Expansion (2.order)

Mean Value

2.43 2.49


0.23 0.21

See Also