1 | /*!\file: CreateDataSets
|
---|
2 | * \brief general driver for creating all datasets that make a finite element iomodel
|
---|
3 | */
|
---|
4 |
|
---|
5 | #ifdef HAVE_CONFIG_H
|
---|
6 | #include <config.h>
|
---|
7 | #else
|
---|
8 | #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
|
---|
9 | #endif
|
---|
10 |
|
---|
11 | #include "../../classes/classes.h"
|
---|
12 | #include "../../shared/shared.h"
|
---|
13 | #include "../MeshPartitionx/MeshPartitionx.h"
|
---|
14 | #include "./ModelProcessorx.h"
|
---|
15 |
|
---|
16 | void CreateDataSets(Elements* elements,Nodes* nodes, Vertices* vertices, Materials* materials,Constraints* constraints, Loads* loads,Parameters* parameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_enum,const int analysis_enum,const int nummodels,int analysis_counter){
|
---|
17 |
|
---|
18 | /*Creates Nodes and constraints datasets if empty*/
|
---|
19 |
|
---|
20 | /*Now, branch onto analysis dependent model generation: */
|
---|
21 | Analysis* analysis = EnumToAnalysis(analysis_enum);
|
---|
22 | analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
|
---|
23 | analysis->CreateNodes(nodes,iomodel);
|
---|
24 | analysis->CreateConstraints(constraints,iomodel);
|
---|
25 | analysis->CreateLoads(loads,iomodel);
|
---|
26 | analysis->UpdateElements(elements,iomodel,analysis_counter,analysis_enum);
|
---|
27 | delete analysis;
|
---|
28 |
|
---|
29 | /*Update Elements and Materials For Inversions*/
|
---|
30 | #ifdef _HAVE_CONTROL_
|
---|
31 | UpdateElementsAndMaterialsControl(elements,materials,iomodel);
|
---|
32 | #endif
|
---|
33 |
|
---|
34 | /*Update Elements and Materials For Dakota*/
|
---|
35 | #ifdef _HAVE_DAKOTA_
|
---|
36 | UpdateElementsAndMaterialsDakota(elements,materials,iomodel);
|
---|
37 | #endif
|
---|
38 |
|
---|
39 | /*Update Elements in case we are running a transient solution: */
|
---|
40 | #ifdef _HAVE_TRANSIENT_
|
---|
41 | if(analysis_counter==(nummodels-1)&& solution_enum==TransientSolutionEnum){
|
---|
42 | UpdateElementsTransient(elements,parameters,iomodel,analysis_counter,analysis_enum);
|
---|
43 | }
|
---|
44 | #endif
|
---|
45 |
|
---|
46 | /* Update counters, because we have created more nodes, loads and
|
---|
47 | * constraints, and ids for objects created in next call to CreateDataSets
|
---|
48 | * will need to start at the end of the updated counters: */
|
---|
49 | iomodel->nodecounter = nodes->MaximumId();
|
---|
50 | iomodel->loadcounter = loads->NumberOfLoads();
|
---|
51 | iomodel->constraintcounter = constraints->NumberOfConstraints();
|
---|
52 | }
|
---|