Changeset 27725
- Timestamp:
- 05/04/23 12:49:11 (23 months ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/classes/DependentObject.cpp ¶
r25583 r27725 16 16 DependentObject::DependentObject(){/*{{{*/ 17 17 this->name=NULL; 18 this->index=-1;19 18 this->response_value=0.; 20 19 } 21 20 /*}}}*/ 22 DependentObject::DependentObject(char* in_name ,int in_index){/*{{{*/21 DependentObject::DependentObject(char* in_name){/*{{{*/ 23 22 24 23 this->name=xNew<char>(strlen(in_name)+1); xMemCpy<char>(this->name,in_name,strlen(in_name)+1); 25 this->index=in_index;26 24 this->response_value=0.; 27 25 28 26 }/*}}}*/ 29 DependentObject::DependentObject(char* in_name, int in_index,IssmDouble in_response){/*{{{*/27 DependentObject::DependentObject(char* in_name,IssmDouble in_response){/*{{{*/ 30 28 31 29 this->name=xNew<char>(strlen(in_name)+1); xMemCpy<char>(this->name,in_name,strlen(in_name)+1); 32 this->index=in_index;33 30 this->response_value=in_response; 34 31 … … 40 37 /*Object virtual functions definitions:*/ 41 38 Object* DependentObject::copy(void) { /*{{{*/ 42 return new DependentObject(name, index,response_value);39 return new DependentObject(name,response_value); 43 40 } /*}}}*/ 44 41 void DependentObject::DeepEcho(void){/*{{{*/ … … 50 47 _printf_("DependentObject:\n"); 51 48 _printf_(" name: " << this->name << "\n"); 52 if(this->index>=0) _printf_(" index: " << this->index << "\n");53 49 _printf_(" response_value: " << this->response_value<< "\n"); 54 50 } … … 70 66 marshallhandle->call(this->name); 71 67 72 marshallhandle->call(this->index);73 68 marshallhandle->call(this->response_value); 74 69 }/*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/DependentObject.h ¶
r25580 r27725 18 18 19 19 char* name; 20 int index; /*0: scalar, 1: vertex*/21 20 IssmDouble response_value; 22 21 23 22 /*DependentObject constructors, destructors */ 24 23 DependentObject(); 25 DependentObject(char* name ,int index);26 DependentObject(char* name, int index,IssmDouble in_response);24 DependentObject(char* name); 25 DependentObject(char* name, IssmDouble in_response); 27 26 ~DependentObject(); 28 27 -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp ¶
r27102 r27725 10 10 void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel){ 11 11 12 #if defined(_HAVE_AD_) 12 13 int i; 13 14 bool isautodiff; … … 31 32 32 33 #ifdef _HAVE_ADOLC_ 33 /*initialize a placeholder to store solver pointers: {{{*/34 34 /*initialize a placeholder to store solver pointers*/ 35 GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum); 35 36 36 37 38 39 37 /*Solver pointers depend on what type of solver we are implementing: */ 38 options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum); 39 ToolkitOptions::Init(toolkit,options); 40 xDelete<char>(toolkit); 40 41 41 42 43 #ifdef _HAVE_MUMPS_44 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);45 #else46 _error_("requesting mumps solver without MUMPS being compiled in!");47 #endif48 break;42 switch(IssmSolverTypeFromToolkitOptions()){ 43 case MumpsEnum:{ 44 #ifdef _HAVE_MUMPS_ 45 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF); 46 #else 47 _error_("requesting mumps solver without MUMPS being compiled in!"); 48 #endif 49 break; 49 50 } 50 51 #ifdef _HAVE_GSL_52 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);53 #else54 _error_("requesting GSL solver without GSL being compiled in!");55 #endif56 51 case GslEnum: { 52 #ifdef _HAVE_GSL_ 53 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx); 54 #else 55 _error_("requesting GSL solver without GSL being compiled in!"); 56 #endif 57 break; 57 58 } 58 59 _error_("solver type not supported yet!");60 59 default: 60 _error_("solver type not supported yet!"); 61 } 61 62 62 63 64 65 66 67 68 69 63 // to save some space: 64 // we know we won't use adolc inside of the solver: 65 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false; 66 // the solution vector is just allocated and doesn't have a meaningful prior value 67 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false; 68 // the solver wrapper makes sure the matrix and the right hand side don't change 69 theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false; 70 parameters->AddObject(theAdolcEDF_p); 70 71 71 /*Free resources: */ 72 xDelete<char>(options); 73 /*}}}*/ 74 #elif _HAVE_CODIPACK_ 75 //fprintf(stderr, "*** Codipack CreateParametersAutodiff()\n"); 76 /*initialize a placeholder to store solver pointers: {{{*/ 77 /*Solver pointers depend on what type of solver we are implementing: */ 78 options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum); 79 ToolkitOptions::Init(toolkit,options); 80 xDelete<char>(toolkit); 72 /*Free resources: */ 73 xDelete<char>(options); 81 74 82 switch(IssmSolverTypeFromToolkitOptions()){ 83 case MumpsEnum:{ 84 #ifndef _HAVE_MUMPS_ 85 _error_("CoDiPack: requesting mumps solver without MUMPS being compiled in!"); 86 #endif 87 break; 88 } 89 case GslEnum: { 90 #ifndef _HAVE_GSL_ 91 _error_("CoDiPack: requesting GSL solver without GSL being compiled in!"); 92 #endif 93 break; 94 } 95 default: 96 _error_("solver type not supported yet!"); 97 } 98 /*Free resources: */ 99 xDelete<char>(options); 100 #endif 101 #if defined(_HAVE_AD_) 75 #elif _HAVE_CODIPACK_ 76 /*initialize a placeholder to store solver pointers*/ 77 /*Solver pointers depend on what type of solver we are implementing: */ 78 options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum); 79 ToolkitOptions::Init(toolkit,options); 80 xDelete<char>(toolkit); 81 82 switch(IssmSolverTypeFromToolkitOptions()){ 83 case MumpsEnum:{ 84 #ifndef _HAVE_MUMPS_ 85 _error_("CoDiPack: requesting mumps solver without MUMPS being compiled in!"); 86 #endif 87 break; 88 } 89 case GslEnum: { 90 #ifndef _HAVE_GSL_ 91 _error_("CoDiPack: requesting GSL solver without GSL being compiled in!"); 92 #endif 93 break; 94 } 95 default: 96 _error_("solver type not supported yet!"); 97 } 98 /*Free resources: */ 99 xDelete<char>(options); 100 #endif 102 101 103 102 if(isautodiff){ … … 118 117 #endif 119 118 120 /*retrieve driver: {{{*/119 /*retrieve driver:*/ 121 120 iomodel->FindConstant(&autodiff_driver,"md.autodiff.driver"); 122 121 parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.driver",AutodiffDriverEnum)); … … 143 142 } 144 143 xDelete<char>(autodiff_driver); 145 /*}}}*/ 146 /*Deal with dependents first: {{{*/ 144 145 /*Deal with dependents first:*/ 146 147 147 iomodel->FindConstant(&num_dependent_objects,"md.autodiff.num_dependent_objects"); 148 148 dependent_objects=new DataSet(); … … 168 168 parameters->AddObject(new DataSetParam(AutodiffDependentObjectsEnum,dependent_objects)); 169 169 parameters->AddObject(new IntParam(AutodiffNumDependentsEnum,num_dep)); 170 delete dependent_objects; 170 171 171 delete dependent_objects; 172 /*}}}*/ 173 /*Deal with independents: {{{*/ 172 /*Deal with independents*/ 174 173 175 174 /*Independents have already been recovered in iomodel->DeclareIndependents. Just do some more processing. … … 184 183 xDelete<IssmDouble>(xp); 185 184 } 186 /*}}}*/187 185 } 188 186 #endif
Note:
See TracChangeset
for help on using the changeset viewer.