Changeset 5730


Ignore:
Timestamp:
09/09/10 15:40:34 (15 years ago)
Author:
Mathieu Morlighem
Message:

do not use gauss when not necessary

Location:
issm/trunk/src/c/objects/Loads
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Loads/Pengrid.cpp

    r5729 r5730  
    443443}
    444444/*}}}*/
    445 /*FUNCTION Pengrid::GetParameterValue {{{1*/
    446 void Pengrid::GetParameterValue(double* pvalue,int enumtype){
    447 
    448         /*output: */
    449         double value;
    450 
    451         /*dynamic objects pointed to by hooks: */
    452         Penta* penta=NULL;
    453 
    454         /*recover objects from hooks: */
    455         penta=(Penta*)element;
    456 
    457         /*Get value on Element 1*/
    458         penta->GetParameterValue(&value,node,enumtype);
    459 
    460         /*Assign output pointers:*/
    461         *pvalue=value;
    462 }
    463 /*}}}*/
    464445/*FUNCTION Pengrid::PenaltyConstrain {{{1*/
    465446void  Pengrid::PenaltyConstrain(int* punstable){
     
    502483        int    reset_penalties=0;
    503484        int    stabilize_constraints;
    504         GaussPenta* gauss=NULL;
    505 
    506         /*pointers: */
    507         Penta* penta=NULL;
    508485
    509486        /*recover pointers: */
    510         penta=(Penta*)element;
     487        Penta* penta=(Penta*)element;
    511488       
    512489        /*check that pengrid is not a clone (penalty to be added only once)*/
     
    518495
    519496        //First recover pressure and temperature values, using the element: */
    520         gauss=new GaussPenta();
    521         gauss->GaussVertex(penta->GetNodeIndex(node));
    522         penta->inputs->GetParameterValue(&pressure,gauss,PressureEnum);
    523         penta->inputs->GetParameterValue(&temperature,gauss,TemporaryTemperatureEnum);
     497        penta->GetParameterValue(&pressure,node,PressureEnum);
     498        penta->GetParameterValue(&temperature,node,TemporaryTemperatureEnum);
    524499
    525500        //Recover our data:
     
    563538        //*Assign output pointers:*/
    564539        *punstable=unstable;
    565 
    566         /*Clean up*/
    567         delete gauss;
    568540}
    569541/*}}}1*/
     
    598570
    599571        //recover slope: */
    600         this->GetParameterValue(&slope[0],BedSlopeXEnum);
    601         this->GetParameterValue(&slope[1],BedSlopeYEnum);
     572        penta->inputs->GetParameterValue(&slope[0],BedSlopeXEnum);
     573        penta->inputs->GetParameterValue(&slope[1],BedSlopeYEnum);
    602574       
    603575        /*recover parameters: */
     
    628600        int*      doflist=NULL;
    629601        double    meltingpoint;
    630         GaussPenta*   gauss=NULL;
    631602
    632603        double pressure;
     
    635606        double penalty_offset;
    636607
    637         /*pointers: */
    638         Penta* penta=NULL;
    639 
    640608        /*recover pointers: */
    641         penta=(Penta*)element;
     609        Penta* penta=(Penta*)element;
    642610
    643611        /*check that pengrid is not a clone (penalty to be added only once)*/
     
    645613
    646614        //First recover pressure and temperature values, using the element: */
    647         gauss=new GaussPenta();
    648         gauss->GaussVertex(penta->GetNodeIndex(node));
    649         penta->inputs->GetParameterValue(&pressure,gauss,PressureEnum);
    650         penta->inputs->GetParameterValue(&temperature,gauss,TemperatureEnum);
     615        penta->GetParameterValue(&pressure,node,PressureEnum);
     616        penta->GetParameterValue(&temperature,node,TemperatureEnum);
    651617
    652618        /*recover parameters: */
     
    669635
    670636        /*Clean up*/
    671         delete gauss;
    672637        xfree((void**)&doflist);
    673638}
     
    720685        double t_pmp;
    721686        double dt,penalty_offset;
    722         GaussPenta* gauss=NULL;
    723 
    724         /*pointers: */
    725         Penta* penta=NULL;
    726687
    727688        /*recover pointers: */
    728         penta=(Penta*)element;
     689        Penta* penta=(Penta*)element;
    729690
    730691        /*check that pengrid is not a clone (penalty to be added only once)*/
     
    735696
    736697        //First recover pressure and temperature values, using the element: */
    737         gauss=new GaussPenta();
    738         gauss->GaussVertex(penta->GetNodeIndex(node));
    739         penta->inputs->GetParameterValue(&pressure,gauss,PressureEnum);
    740         penta->inputs->GetParameterValue(&temperature,gauss,TemperatureEnum);
     698        penta->GetParameterValue(&pressure,node,PressureEnum);
     699        penta->GetParameterValue(&temperature,node,TemperatureEnum);
    741700        inputs->GetParameterValue(&melting_offset,MeltingOffsetEnum);
    742701        parameters->FindParam(&dt,DtEnum);
     
    771730
    772731        /*Clean up*/
    773         delete gauss;
    774732        xfree((void**)&doflist);
    775733
     
    791749        double t_pmp;
    792750        double penalty_offset;
    793         GaussPenta* gauss=NULL;
    794 
    795         /*pointers: */
    796         Penta* penta=NULL;
    797751
    798752        /*recover pointers: */
    799         penta=(Penta*)element;
     753        Penta* penta=(Penta*)element;
    800754
    801755        if(!this->active)return;
     
    805759
    806760        //First recover pressure  and penalty_offset
    807         gauss=new GaussPenta();
    808         gauss->GaussVertex(penta->GetNodeIndex(node));
    809         penta->inputs->GetParameterValue(&pressure,gauss,PressureEnum);
     761        penta->GetParameterValue(&pressure,node,PressureEnum);
    810762        parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
    811763
     
    822774
    823775        /*Clean up*/
    824         delete gauss;
    825776        xfree((void**)&doflist);
    826777
  • issm/trunk/src/c/objects/Loads/Pengrid.h

    r5727 r5730  
    8080                void  PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax);
    8181                void  GetDofList(int** pdoflist);
    82                 void  GetParameterValue(double* pvalue,int enumtype);
    8382                void  PenaltyCreateKMatrixThermal(Mat Kgg,double kmax);
    8483                void  PenaltyCreateKMatrixMelting(Mat Kgg,double kmax);
Note: See TracChangeset for help on using the changeset viewer.