driver for creating parameters dataset, for autodiff analysis.
More...
Go to the source code of this file.
driver for creating parameters dataset, for autodiff analysis.
Definition in file CreateParametersAutodiff.cpp.
◆ CreateParametersAutodiff()
Definition at line 10 of file CreateParametersAutodiff.cpp.
14 int num_dependent_objects;
19 char* autodiff_driver=NULL;
27 int num_ind,local_num_ind;
28 DataSet* dependent_objects=NULL;
31 iomodel->
FindConstant(&isautodiff,
"md.autodiff.isautodiff");
40 xDelete<char>(toolkit);
45 theAdolcEDF_p->
GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
47 _error_(
"requesting mumps solver without MUMPS being compiled in!");
53 theAdolcEDF_p->
GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
55 _error_(
"requesting GSL solver without GSL being compiled in!");
60 _error_(
"solver type not supported yet!");
73 xDelete<char>(options);
81 xDelete<char>(toolkit);
86 _error_(
"CoDiPack: requesting mumps solver without MUMPS being compiled in!");
92 _error_(
"CoDiPack: requesting GSL solver without GSL being compiled in!");
97 _error_(
"solver type not supported yet!");
100 xDelete<char>(options);
102 #if defined(_HAVE_AD_)
105 #if defined(_HAVE_ADOLC_)
114 #elif defined(_HAVE_CODIPACK_)
122 iomodel->
FindConstant(&autodiff_driver,
"md.autodiff.driver");
125 if(strcmp(autodiff_driver,
"fos_forward")==0){
128 _error_(
"Foward Mode (scalar) not supported yet!");
132 else if(strcmp(autodiff_driver,
"fos_reverse")==0){
135 else if(strcmp(autodiff_driver,
"fov_forward")==0){
138 _error_(
"Foward Mode (vector) not supported yet!");
141 iomodel->
FetchData(&indices,&num_indices,&dummy,
"md.autodiff.fov_forward_indices");
143 xDelete<int>(indices);
145 xDelete<char>(autodiff_driver);
148 iomodel->
FindConstant(&num_dependent_objects,
"md.autodiff.num_dependent_objects");
149 dependent_objects=
new DataSet();
152 if(num_dependent_objects){
153 iomodel->
FindConstant(&names,&dummy,
"md.autodiff.dependent_object_names");
154 iomodel->
FetchData(&types,&dummy,&dummy,
"md.autodiff.dependent_object_types");
155 iomodel->
FetchData(&indices,&dummy,&dummy,
"md.autodiff.dependent_object_indices");
157 for(i=0;i<num_dependent_objects;i++){
164 for(i=0;i<num_dependent_objects;i++){
165 char*
string=names[i]; xDelete<char>(
string);
167 xDelete<char*>(names);
169 xDelete<int>(indices);
174 delete dependent_objects;
184 xp=xNew<IssmDouble>(num_ind);
187 xDelete<IssmDouble>(xp);