Changeset 13301
- Timestamp:
- 09/07/12 16:40:22 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp
r13300 r13301 24 24 double **J = NULL; 25 25 double *xp = NULL; 26 27 /*diverse: */ 28 int configuration_type; 29 int solveSize; 30 int edf_n,edf_m; 26 31 27 32 /*AD mode on?: */ … … 48 53 } 49 54 50 // get the dimension for the solverx arguments 51 int configuration_type; 55 /* get the dimension for the solverx arguments*/ 52 56 parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 53 int solveSize=nodes->NumberOfDofs(configuration_type,FsetEnum); 54 int edf_n=solveSize*(solveSize+1), edf_m=solveSize; 55 // get the EDF pointer: 57 solveSize=nodes->NumberOfDofs(configuration_type,FsetEnum); 58 edf_n=solveSize*(solveSize+1), edf_m=solveSize; 59 60 /*get the EDF pointer:*/ 56 61 ext_diff_fct *anEDF_for_solverx_p=dynamic_cast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p; 57 // set the forward method function pointers 62 63 /*set the forward method function pointers: */ 58 64 anEDF_for_solverx_p->fos_forward=EDF_fos_forward_for_solverx; 59 anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx; 60 // allocate the space for the parameters to invoke the forward methods 65 anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx; 66 67 /*allocate the space for the parameters to invoke the forward methods:*/ 61 68 anEDF_for_solverx_p->dp_x=xNew<double>(edf_n); 62 anEDF_for_solverx_p->dp_X=xNew<double>(edf_n); 63 anEDF_for_solverx_p->dpp_X=xNew<double>(edf_n, num_independents); 64 anEDF_for_solverx_p->dp_y=xNew<double>(edf_m); 65 anEDF_for_solverx_p->dp_Y=xNew<double>(edf_m); 66 anEDF_for_solverx_p->dpp_Y=xNew<double>(edf_m, num_independents); 67 // Call AD driver: 69 anEDF_for_solverx_p->dp_X=xNew<double>(edf_n); 70 anEDF_for_solverx_p->dpp_X=xNew<double>(edf_n, num_independents); 71 anEDF_for_solverx_p->dp_y=xNew<double>(edf_m); 72 anEDF_for_solverx_p->dp_Y=xNew<double>(edf_m); 73 anEDF_for_solverx_p->dpp_Y=xNew<double>(edf_m, num_independents); 74 75 /* Call AD driver:*/ 68 76 jacobian(1,num_dependents,num_independents,xp,J); 69 // delete the allocated space for the parameters 77 78 /* delete the allocated space for the parameters:*/ 70 79 xDelete(anEDF_for_solverx_p->dp_x); 71 xDelete(anEDF_for_solverx_p->dp_X); 72 xDelete(anEDF_for_solverx_p->dpp_X,edf_n); 73 xDelete(anEDF_for_solverx_p->dp_y); 74 xDelete(anEDF_for_solverx_p->dp_Y); 75 xDelete(anEDF_for_solverx_p->dpp_Y,edf_m); 80 xDelete(anEDF_for_solverx_p->dp_X); 81 xDelete(anEDF_for_solverx_p->dpp_X,edf_n); 82 xDelete(anEDF_for_solverx_p->dp_y); 83 xDelete(anEDF_for_solverx_p->dp_Y); 84 xDelete(anEDF_for_solverx_p->dpp_Y,edf_m); 85 76 86 /*Add jacobian matrix to results: */ 77 87 matJ=xNew<IssmDouble>(num_dependents*num_independents);
Note:
See TracChangeset
for help on using the changeset viewer.