Ice Sheet System Model  4.18
Code documentation
Functions
GetVectorFromInputsx.cpp File Reference
#include "./GetVectorFromInputsx.h"
#include "../../shared/shared.h"
#include "../../toolkits/toolkits.h"

Go to the source code of this file.

Functions

void GetVectorFromInputsx (Vector< IssmDouble > **pvector, FemModel *femmodel, int name, int type)
 
void GetVectorFromInputsx (Vector< IssmDouble > **pvector, FemModel *femmodel, int name, int type, IssmDouble time)
 
void GetVectorFromInputsx (IssmDouble **pvector, FemModel *femmodel, int name, int type)
 
void GetVectorFromInputsx (IssmDouble **pvector, int *pvector_size, FemModel *femmodel, int name)
 

Function Documentation

◆ GetVectorFromInputsx() [1/4]

void GetVectorFromInputsx ( Vector< IssmDouble > **  pvector,
FemModel femmodel,
int  name,
int  type 
)

Definition at line 9 of file GetVectorFromInputsx.cpp.

9  { /*{{{*/
10 
11  int i;
12  Vector<IssmDouble>* vector=NULL;
13 
14  switch(type){
15  case ElementSIdEnum:
17  break;
18  case VertexPIdEnum: case VertexSIdEnum:
20  break;
21  case NodesEnum:case NodeSIdEnum:
23  break;
24  default:
25  _error_("vector type: " << EnumToStringx(type) << " not supported yet!");
26  }
27  /*Look up in elements*/
28  for(i=0;i<femmodel->elements->Size();i++){
29  Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
30  element->GetVectorFromInputs(vector,name,type);
31  }
32 
33  vector->Assemble();
34 
35  /*Assign output pointers:*/
36  *pvector=vector;
37 } /*}}}*/

◆ GetVectorFromInputsx() [2/4]

void GetVectorFromInputsx ( Vector< IssmDouble > **  pvector,
FemModel femmodel,
int  name,
int  type,
IssmDouble  time 
)

Definition at line 38 of file GetVectorFromInputsx.cpp.

38  {/*{{{*/
39 
40  int i;
41  Vector<IssmDouble>* vector=NULL;
42 
43  switch(type){
44  case VertexPIdEnum: case VertexSIdEnum:
46  break;
47  case NodesEnum:case NodeSIdEnum:
49  break;
50  default:
51  _error_("vector type: " << EnumToStringx(type) << " not supported yet!");
52  }
53  /*Look up in elements*/
54  for(i=0;i<femmodel->elements->Size();i++){
55  Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
56  element->GetVectorFromInputs(vector,name,type,time);
57  }
58 
59  vector->Assemble();
60 
61  /*Assign output pointers:*/
62  *pvector=vector;
63 }/*}}}*/

◆ GetVectorFromInputsx() [3/4]

void GetVectorFromInputsx ( IssmDouble **  pvector,
FemModel femmodel,
int  name,
int  type 
)

Definition at line 64 of file GetVectorFromInputsx.cpp.

64  {/*{{{*/
65 
66  /*output: */
67  IssmDouble* vector=NULL;
68 
69  /*intermediary: */
70  Vector<IssmDouble>* vec_vector=NULL;
71 
72  GetVectorFromInputsx(&vec_vector,femmodel,name,type);
73  vector=vec_vector->ToMPISerial();
74 
75  /*Free ressources:*/
76  delete vec_vector;
77 
78  /*Assign output pointers:*/
79  *pvector=vector;
80 }/*}}}*/

◆ GetVectorFromInputsx() [4/4]

void GetVectorFromInputsx ( IssmDouble **  pvector,
int *  pvector_size,
FemModel femmodel,
int  name 
)

Definition at line 81 of file GetVectorFromInputsx.cpp.

81  { /*{{{*/
82 
83  int interpolation_type;
84  /*this one is special: we don't specify the type, but let the nature of the inputs dictace.
85  * P0 -> ElementSIdEnum, P1 ->VertexSIdEnum: */
86 
87  /*We go find the input of the first element, and query its interpolation type: */
88  Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(0));
89  Input2* input=element->GetInput2(name);
90  if (!input) _error_("could not find input: " << name);
91 
92  interpolation_type=input->GetInputInterpolationType();
93  if(interpolation_type==P0Enum){
94  *pvector_size=femmodel->elements->NumberOfElements();
96  }
97  else if(interpolation_type==P1Enum){
98  *pvector_size=femmodel->vertices->NumberOfVertices();
100  }
101  else _error_("interpolation type : " << interpolation_type << " not supported yet!");
102 }/*}}}*/
DataSet::Size
int Size()
Definition: DataSet.cpp:399
FemModel::vertices
Vertices * vertices
Definition: FemModel.h:49
IssmDouble
double IssmDouble
Definition: types.h:37
GetVectorFromInputsx
void GetVectorFromInputsx(Vector< IssmDouble > **pvector, FemModel *femmodel, int name, int type)
Definition: GetVectorFromInputsx.cpp:9
P0Enum
@ P0Enum
Definition: EnumDefinitions.h:661
Input2::GetInputInterpolationType
virtual int GetInputInterpolationType()
Definition: Input2.h:39
Vertices::NumberOfVertices
int NumberOfVertices(void)
Definition: Vertices.cpp:255
Element::GetInput2
virtual Input2 * GetInput2(int inputenum)=0
Element
Definition: Element.h:41
P1Enum
@ P1Enum
Definition: EnumDefinitions.h:662
Nodes::NumberOfNodes
int NumberOfNodes(void)
Definition: Nodes.cpp:354
VertexSIdEnum
@ VertexSIdEnum
Definition: EnumDefinitions.h:1325
FemModel::nodes
Nodes * nodes
Definition: FemModel.h:56
EnumToStringx
const char * EnumToStringx(int enum_in)
Definition: EnumToStringx.cpp:15
NodesEnum
@ NodesEnum
Definition: EnumDefinitions.h:275
ElementSIdEnum
@ ElementSIdEnum
Definition: EnumDefinitions.h:1051
Element::GetVectorFromInputs
void GetVectorFromInputs(Vector< IssmDouble > *vector, int name_enum, int type)
Definition: Element.cpp:1331
FemModel::elements
Elements * elements
Definition: FemModel.h:44
Vector::Assemble
void Assemble(void)
Definition: Vector.h:142
Input2
Definition: Input2.h:18
VertexPIdEnum
@ VertexPIdEnum
Definition: EnumDefinitions.h:1324
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
NodeSIdEnum
@ NodeSIdEnum
Definition: EnumDefinitions.h:1200
Elements::NumberOfElements
int NumberOfElements(void)
Definition: Elements.cpp:67
Vector::ToMPISerial
doubletype * ToMPISerial(void)
Definition: Vector.h:277
Vector< IssmDouble >
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16