Changeset 13298
- Timestamp:
- 09/07/12 15:02:17 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp
r13290 r13298 8 8 #include "../../toolkits/toolkits.h" 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 #include "../../shared/Numerics/adolc_edf.h" 11 10 12 11 13 void AutodiffDriversx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,Results* results){ … … 43 45 } 44 46 45 /*Call AD driver: */ 47 // get the dimension for the solverx arguments 48 int configuration_type; 49 parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 50 int solveSize=nodes->NumberOfDofs(configuration_type,FsetEnum); 51 int edf_n=solveSize*(solveSize+1), edf_m=solveSize; 52 // get the EDF pointer: 53 ext_diff_fct *anEDF_for_solverx_p=dynamic_cast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p; 54 // set the forward method function pointers 55 anEDF_for_solverx_p->fos_forward=EDF_fos_forward_for_solverx; 56 anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx; 57 // allocate the space for the parameters to invoke the forward methods 58 anEDF_for_solverx_p->dp_x=xNew<double>(edf_n); 59 anEDF_for_solverx_p->dp_X=xNew<double>(edf_n); 60 anEDF_for_solverx_p->dpp_X=xNew<double>(edf_n, num_independents); 61 anEDF_for_solverx_p->dp_y=xNew<double>(edf_m); 62 anEDF_for_solverx_p->dp_Y=xNew<double>(edf_m); 63 anEDF_for_solverx_p->dpp_Y=xNew<double>(edf_m, num_independents); 64 // Call AD driver: 46 65 jacobian(1,num_dependents,num_independents,xp,J); 47 66 // delete the allocated space for the parameters 67 xDelete(anEDF_for_solverx_p->dp_x); 68 xDelete(anEDF_for_solverx_p->dp_X); 69 xDelete(anEDF_for_solverx_p->dpp_X,edf_n); 70 xDelete(anEDF_for_solverx_p->dp_y); 71 xDelete(anEDF_for_solverx_p->dp_Y); 72 xDelete(anEDF_for_solverx_p->dpp_Y,edf_m); 48 73 /*Add jacobian matrix to results: */ 49 74 matJ=xNew<IssmDouble>(num_dependents*num_independents);
Note:
See TracChangeset
for help on using the changeset viewer.