Ignore:
Timestamp:
02/02/12 13:59:41 (13 years ago)
Author:
Mathieu Morlighem
Message:

Simplifying gradient call in CM

Location:
issm/trunk-jpl/src/c/modules/Gradjx
Files:
2 edited

Legend:

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

    r9719 r11310  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void Gradjx( Vec* pgradient, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int control_type){
     12void Gradjx( Vec* pgradient,double* pnorm_grad, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int control_index){
    1313
    14         int  i;
    15         int  dim;
    16         int  numberofvertices;
    17         Vec  gradient = NULL;
     14        int    i;
     15        int    numberofvertices;
     16        double norm_grad;
     17        int   *control_type   = NULL;
     18        Vec    gradient = NULL;
    1819       
    1920        /*retrieve some parameters: */
    20         parameters->FindParam(&dim,MeshDimensionEnum);
     21        parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
    2122        numberofvertices=vertices->NumberOfVertices();
    2223
     
    2728        for (i=0;i<elements->Size();i++){
    2829                Element* element=(Element*)elements->GetObjectByOffset(i);
    29                 element->Gradj(gradient,control_type);
     30                element->Gradj(gradient,control_type[control_index]);
    3031        }
    3132
     
    3435        VecAssemblyEnd(gradient);
    3536
    36         /*Assign output pointers: */
     37        /*Clean up and return*/
     38        xfree((void**)&control_type);
     39        if(pnorm_grad){
     40                VecNorm(gradient,NORM_INFINITY,&norm_grad);
     41                *pnorm_grad=norm_grad;
     42        }
    3743        *pgradient=gradient;
    3844}
  • issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.h

    r4236 r11310  
    1010
    1111/* local prototypes: */
    12 void Gradjx(Vec* pgrad_g, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,  Parameters* parameters, int control_type);
     12void Gradjx(Vec* pgrad_g,double* pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,  Parameters* parameters, int control_type);
    1313
    1414#endif  /* _GRADJX_H */
Note: See TracChangeset for help on using the changeset viewer.