| 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 | }
|
|---|