Ice Sheet System Model
4.18
Code documentation
src
c
modules
SetControlInputsFromVectorx
SetControlInputsFromVectorx.cpp
Go to the documentation of this file.
1
5
#include "
./SetControlInputsFromVectorx.h
"
6
#include "../../shared/shared.h"
7
#include "../../toolkits/toolkits.h"
8
9
void
SetControlInputsFromVectorx
(
FemModel
*
femmodel
,
IssmDouble
* vector){
10
11
bool
isautodiff;
12
femmodel
->
parameters
->
FindParam
(&isautodiff,
AutodiffIsautodiffEnum
);
13
if
(isautodiff){
14
int
num_controls;
15
int
* control_type = NULL;
16
int
* M = NULL;
17
int
* N = NULL;
18
19
/*Retrieve some parameters*/
20
femmodel
->
parameters
->
FindParam
(&num_controls,
InversionNumControlParametersEnum
);
21
femmodel
->
parameters
->
FindParam
(&control_type,NULL,
InversionControlParametersEnum
);
22
femmodel
->
parameters
->
FindParam
(&M,NULL,
ControlInputSizeMEnum
);
23
femmodel
->
parameters
->
FindParam
(&N,NULL,
ControlInputSizeNEnum
);
24
25
int
offset = 0;
26
for
(
int
i=0;i<num_controls;i++){
27
for
(
int
j=0;j<
femmodel
->
elements
->
Size
();j++){
28
Element
* element=(
Element
*)
femmodel
->
elements
->
GetObjectByOffset
(j);
29
element->
SetControlInputsFromVector
(vector,control_type[i],i,offset,N[i],M[i]);
30
}
31
offset += M[i]*N[i];
32
}
33
34
xDelete<int>(control_type);
35
xDelete<int>(M);
36
xDelete<int>(N);
37
}
38
else
{
39
40
int
num_controls;
41
int
* control_type = NULL;
42
femmodel
->
parameters
->
FindParam
(&num_controls,
InversionNumControlParametersEnum
);
43
femmodel
->
parameters
->
FindParam
(&control_type,NULL,
InversionControlParametersEnum
);
44
int
offset = 0;
45
for
(
int
i=0;i<num_controls;i++){
46
for
(
int
j=0;j<
femmodel
->
elements
->
Size
();j++){
47
Element
* element=(
Element
*)
femmodel
->
elements
->
GetObjectByOffset
(j);
48
element->
SetControlInputsFromVector
(vector,control_type[i],i);
49
}
50
}
51
xDelete<int>(control_type);
52
}
53
}
54
55
void
SetControlInputsFromVectorx
(
FemModel
*
femmodel
,
Vector<IssmDouble>
* vector){
56
57
IssmDouble
* serial_vector=vector->
ToMPISerial
();
58
SetControlInputsFromVectorx
(
femmodel
,serial_vector);
59
xDelete<IssmDouble>(serial_vector);
60
}
DataSet::Size
int Size()
Definition:
DataSet.cpp:399
IssmDouble
double IssmDouble
Definition:
types.h:37
InversionNumControlParametersEnum
@ InversionNumControlParametersEnum
Definition:
EnumDefinitions.h:223
Element::SetControlInputsFromVector
virtual void SetControlInputsFromVector(IssmDouble *vector, int control_enum, int control_index, int offset, int N, int M)=0
InversionControlParametersEnum
@ InversionControlParametersEnum
Definition:
EnumDefinitions.h:209
FemModel::parameters
Parameters * parameters
Definition:
FemModel.h:46
ControlInputSizeMEnum
@ ControlInputSizeMEnum
Definition:
EnumDefinitions.h:105
Element
Definition:
Element.h:41
AutodiffIsautodiffEnum
@ AutodiffIsautodiffEnum
Definition:
EnumDefinitions.h:50
FemModel::elements
Elements * elements
Definition:
FemModel.h:44
FemModel
Definition:
FemModel.h:31
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition:
DataSet.cpp:334
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition:
Parameters.cpp:262
SetControlInputsFromVectorx
void SetControlInputsFromVectorx(FemModel *femmodel, IssmDouble *vector)
Definition:
SetControlInputsFromVectorx.cpp:9
Vector::ToMPISerial
doubletype * ToMPISerial(void)
Definition:
Vector.h:277
ControlInputSizeNEnum
@ ControlInputSizeNEnum
Definition:
EnumDefinitions.h:106
Vector< IssmDouble >
SetControlInputsFromVectorx.h
femmodel
FemModel * femmodel
Definition:
esmfbinders.cpp:16
Generated on Thu Jul 2 2020 08:09:19 for Ice Sheet System Model by
1.8.19