1 | function femmodel=NewFemModel(md,solution_type,analysis_types);
|
---|
2 | %NEWFEMMODEL - create a finite element model out of the matlab base \@model md.
|
---|
3 | % For each analysis_type contained in analysis_types, create a set of nodes, constraints
|
---|
4 | % and loads. All analyses rely on the same elements, vertices and parameters. See
|
---|
5 | % FemModel.cpp in src/c/objects for more information on the FemModel implementation in c++
|
---|
6 | %
|
---|
7 | % Usage:
|
---|
8 | % femmodel=NewFemModel(md,solution_type,analysis_types)
|
---|
9 | %
|
---|
10 |
|
---|
11 |
|
---|
12 | femmodel.solution_type=solution_type;
|
---|
13 | femmodel.analysis_counter=nummodels; %point to last analysis_type carried out
|
---|
14 |
|
---|
15 | %Dynamically allocate whatever is a list of length nummodels: */
|
---|
16 | femmodel.analysis_type_list=analysis_types;
|
---|
17 |
|
---|
18 | displaystring(md.verbose,'\n reading data from model %s...',md.name);
|
---|
19 | [femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.constraints,femmodel.loads,femmodel.materials,femmodel.parameters]=ModelProcessor(md,solution_type,femmodel.analysis_type_list);
|
---|
20 |
|
---|
21 | %now, go through all analyses types and post-process datasets
|
---|
22 | for i=1:length(analysis_types),
|
---|
23 |
|
---|
24 | analysis_type=femmodel.analysis_type_list(i);
|
---|
25 | displaystring(md.verbose,'%s%s',' dealing with analysis type: ',EnumAsString(analysis_type);
|
---|
26 |
|
---|
27 | displaystring(md.verbose,'%s',' generating degrees of freedofemmodel...');
|
---|
28 | if ~isfield(femmodel,'part') [femmodel.vertices,femmodel.part,femmodel.tpart]=VerticesDof(vertices, femmodel.parameters); %do not create partition vector twice! we only have one set of vertices!
|
---|
29 |
|
---|
30 | [femmodel.nodes]=NodesDof(femmodel.nodes,femmodel.parameters);
|
---|
31 |
|
---|
32 | displaystring(md.verbose,'%s',' generating single point constraints...');
|
---|
33 | [femmodel.nodes,femmodel.m_yg(i)]=SpcNodes(femmodel.nodes,femmodel.constraints,analysis_type);
|
---|
34 |
|
---|
35 | displaystring(md.verbose,'%s',' generating rigid body constraints...');
|
---|
36 | [femmodel.m_Rmg(i),femmodel.nodes]=MpcNodes(femmodel.nodes,femmodel.constraints,analysis_types);
|
---|
37 |
|
---|
38 | displaystring(md.verbose,'%s',' generating node sets...');
|
---|
39 | femmodel.m_nodesets(i)=BuildNodeSets(femmodel.nodes,analysis_type);
|
---|
40 |
|
---|
41 | displaystring(md.verbose,'%s',' reducing single point constraints vector...');
|
---|
42 | femmodel.m_ys(i)=Reducevectorgtos(femmodel.m_yg(i).vector,femmodel.m_nodesets(i));
|
---|
43 |
|
---|
44 | displaystring(md.verbose,'%s',' normalizing rigid body constraints matrix...');
|
---|
45 | femmodel.m_Gmn(i)= NormalizeConstraints(femmodel.m_Rmg(i),femmodel.m_nodesets(i));
|
---|
46 |
|
---|
47 | displaystring(md.verbose,'%s',' configuring element and loads...');
|
---|
48 | [femmodel.elements,femmodel.loads,femmodel.nodes,femmodel.parameters] = ConfigureObjects( femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices,femmodel.materials,femmodel.parameters);
|
---|
49 | end
|
---|
50 | end
|
---|