Changeset 13298


Ignore:
Timestamp:
09/07/12 15:02:17 (13 years ago)
Author:
utke
Message:

NEW set the required EDF members to call jacobian

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp

    r13290 r13298  
    88#include "../../toolkits/toolkits.h"
    99#include "../../EnumDefinitions/EnumDefinitions.h"
     10#include "../../shared/Numerics/adolc_edf.h"
     11
    1012
    1113void AutodiffDriversx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,Results* results){
     
    4345                }
    4446
    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:
    4665                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);
    4873                /*Add jacobian matrix to results: */
    4974                matJ=xNew<IssmDouble>(num_dependents*num_independents);
Note: See TracChangeset for help on using the changeset viewer.