Changeset 4921


Ignore:
Timestamp:
08/02/10 11:20:28 (15 years ago)
Author:
Mathieu Morlighem
Message:

moved GetParameter to Reference elements

Location:
issm/trunk/src/c/objects
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Beam.cpp

    r4912 r4921  
    980980}
    981981/*}}}*/
    982 /*FUNCTION Beam::GetParameterValue{{{1*/
    983 void Beam::GetParameterValue(double* pvalue, double* value_list,double gauss_coord){
    984 
    985         double l1l2[2];
    986        
    987         GetNodalFunctions(&l1l2[0],gauss_coord);
    988 
    989         *pvalue=l1l2[0]*value_list[0]+l1l2[1]*value_list[1];
    990 }
    991 /*}}}*/
    992982/*FUNCTION Beam::IsInput{{{1*/
    993983bool Beam::IsInput(int name){
  • issm/trunk/src/c/objects/Elements/Beam.h

    r4912 r4921  
    115115                void      GetDofList(int* doflist,int* pnumberofdofs);
    116116                void      GetDofList1(int* doflist);
    117                 void      GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3);
    118                 void      GetParameterValue(double* pvalue, double* value_list,double gauss_coord);
    119117                bool      IsInput(int name);
    120118                void      SetClone(int* minranks);
  • issm/trunk/src/c/objects/Elements/BeamRef.cpp

    r4910 r4921  
    6969}
    7070/*}}}*/
     71/*FUNCTION BeamRef::GetParameterValue{{{1*/
     72void BeamRef::GetParameterValue(double* pvalue, double* value_list,double gauss_coord){
     73
     74        /*Nodal functions*/
     75        double l1l2[2];
     76
     77        /*Get nodal functions*/
     78        GetNodalFunctions(&l1l2[0],gauss_coord);
     79
     80        /*Assign output pointer*/
     81        *pvalue=l1l2[0]*value_list[0]+l1l2[1]*value_list[1];
     82}
     83/*}}}*/
  • issm/trunk/src/c/objects/Elements/BeamRef.h

    r4910 r4921  
    2525                void GetJacobianDeterminant(double* Jdet, double* z_list,double gauss);
    2626                void GetNodalFunctions(double* l1l2, double gauss);
     27                void GetParameterValue(double* pvalue, double* value_list,double gauss_coord);
    2728
    2829};
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r4912 r4921  
    40834083}
    40844084/*}}}*/
    4085 /*FUNCTION Penta::GetParameterValue(double* pvalue, double* v_list,double* gauss_coord) {{{1*/
    4086 void Penta::GetParameterValue(double* pvalue, double* v_list,double* gauss_coord){
    4087 
    4088         const int numgrids=6;
    4089         double l1l6[numgrids];
    4090 
    4091         GetNodalFunctionsP1(&l1l6[0], gauss_coord);
    4092 
    4093         *pvalue=l1l6[0]*v_list[0]+l1l6[1]*v_list[1]+l1l6[2]*v_list[2]+l1l6[3]*v_list[3]+l1l6[4]*v_list[4]+l1l6[5]*v_list[5];
    4094 }
    4095 /*}}}*/
    40964085/*FUNCTION Penta::GetParameterValue(double* pvalue,Node* node1,Node* node2,double gauss_seg,int enumtype) {{{1*/
    40974086void Penta::GetParameterValue(double* pvalue,Node* node,int enumtype){
  • issm/trunk/src/c/objects/Elements/Penta.h

    r4899 r4921  
    146146                void      GetNodalFunctionsDerivativesStokes(double* dh1dh7,double* xyz_list, double* gauss_coord);
    147147                void      GetNodalFunctionsStokes(double* l1l7, double* gauss_coord);
    148                 void      GetParameterValue(double* pvalue, double* v_list,double* gauss_coord);
    149148                void    GetParameterValue(double* pvalue,Node* node,int enumtype);
    150149                void      GetPhi(double* phi, double*  epsilon, double viscosity);
  • issm/trunk/src/c/objects/Elements/PentaRef.cpp

    r4898 r4921  
    908908}
    909909/*}}}*/
     910/*FUNCTION PentaRef::GetParameterValue{{{1*/
     911void PentaRef::GetParameterValue(double* pvalue,double* plist,double* gauss){
     912        /*P1 interpolation on Gauss point*/
     913
     914        /*intermediary*/
     915        double l1l6[6];
     916
     917        /*nodal functions: */
     918        GetNodalFunctionsP1(&l1l6[0],gauss);
     919
     920        /*Assign output pointers:*/
     921        *pvalue=l1l6[0]*plist[0]+l1l6[1]*plist[1]+l1l6[2]*plist[2]+l1l6[3]*plist[3]+l1l6[4]*plist[4]+l1l6[5]*plist[5];
     922
     923}
     924/*}}}*/
     925/*FUNCTION PentaRef::GetParameterDerivativeValue{{{1*/
     926void PentaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss){
     927        /*From grid values of parameter p (p_list[0], p_list[1], p_list[2], p_list[3], p_list[4] and p_list[4]), return parameter derivative value at gaussian point specified by gauss_coord:
     928         *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
     929         *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
     930         *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
     931         *
     932         *   p is a vector of size 3x1 already allocated.
     933         */
     934        double dh1dh6[3][6];
     935
     936        /*Get nodal funnctions derivatives in actual coordinate system: */
     937        GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list, gauss);
     938
     939        /*Assign output*/
     940        p[0]=plist[0]*dh1dh6[0][0]+plist[1]*dh1dh6[0][1]+plist[2]*dh1dh6[0][2]+plist[3]*dh1dh6[0][3]+plist[4]*dh1dh6[0][4]+plist[5]*dh1dh6[0][5];
     941        p[1]=plist[0]*dh1dh6[1][0]+plist[1]*dh1dh6[1][1]+plist[2]*dh1dh6[1][2]+plist[3]*dh1dh6[1][3]+plist[4]*dh1dh6[1][4]+plist[5]*dh1dh6[1][5];
     942        p[2]=plist[0]*dh1dh6[2][0]+plist[1]*dh1dh6[2][1]+plist[2]*dh1dh6[2][2]+plist[3]*dh1dh6[2][3]+plist[4]*dh1dh6[2][4]+plist[5]*dh1dh6[2][5];
     943
     944}
     945/*}}}*/
  • issm/trunk/src/c/objects/Elements/PentaRef.h

    r4885 r4921  
    4444                void GetLStokes(double* LStokes, double* gauss_tria);
    4545                void GetLprimeStokes(double* LprimeStokes, double* xyz_list, double* gauss_tria, double* gauss);
     46                void GetParameterValue(double* pvalue,double* plist,double* gauss);
     47                void GetParameterDerivativeValue(double* pvalues, double* plist,double* xyz_list, double* gauss);
    4648
    4749};
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r4904 r4921  
    11521152                //if (drag_type==2) friction->GetAlphaComplement(&alpha_complement, gauss_l1l2l3,VxEnum,VyEnum); // TO BE UNCOMMENTED
    11531153                //else alpha_complement=0;
    1154                 GetParameterValue(&alpha_complement,&alpha2complement_list[0],gauss_l1l2l3); // TO BE DELETED
     1154                TriaRef::GetParameterValue(&alpha_complement,&alpha2complement_list[0],gauss_l1l2l3); // TO BE DELETED
    11551155       
    11561156                /*Recover alpha_complement and k: */
     
    19231923
    19241924                /*Compute misfit at gaussian point: */
    1925                 GetParameterValue(&misfit, &misfit_list[0],gauss_l1l2l3);
     1925                TriaRef::GetParameterValue(&misfit, &misfit_list[0],gauss_l1l2l3);
    19261926
    19271927                /*compute Misfit*/
     
    29732973                /*Friction: */
    29742974                // friction->GetAlpha2(&alpha2, gauss_l1l2l3,VxEnum,VyEnum,VzEnum); // TO UNCOMMENT
    2975                 GetParameterValue(&alpha2,&alpha2_list[0],gauss_l1l2l3); // TO BE DELETED
     2975                TriaRef::GetParameterValue(&alpha2,&alpha2_list[0],gauss_l1l2l3); // TO BE DELETED
    29762976
    29772977                // If we have a slope > 6% for this element,  it means  we are on a mountain. In this particular case,
     
    44274427
    44284428                /*Compute absolute(x/y) at gaussian point: */
    4429                 GetParameterValue(&dux, &dux_list[0],gauss_l1l2l3);
    4430                 GetParameterValue(&duy, &duy_list[0],gauss_l1l2l3);
     4429                TriaRef::GetParameterValue(&dux, &dux_list[0],gauss_l1l2l3);
     4430                TriaRef::GetParameterValue(&duy, &duy_list[0],gauss_l1l2l3);
    44314431
    44324432                /*compute Du*/
     
    46674667
    46684668                /*Compute absolute(x/y) at gaussian point: */
    4669                 GetParameterValue(&dux, &dux_list[0],gauss_l1l2l3);
    4670                 GetParameterValue(&duy, &duy_list[0],gauss_l1l2l3);
     4669                TriaRef::GetParameterValue(&dux, &dux_list[0],gauss_l1l2l3);
     4670                TriaRef::GetParameterValue(&duy, &duy_list[0],gauss_l1l2l3);
    46714671
    46724672                /*compute Du*/
     
    52425242                /*Friction: */
    52435243                //friction->GetAlpha2(&alpha2,&gauss_coord[0],VxEnum,VyEnum,VzEnum);
    5244                 GetParameterValue(&basalfriction,&basalfriction_list[0],gauss_coord); // TO BE DELETED
     5244                TriaRef::GetParameterValue(&basalfriction,&basalfriction_list[0],gauss_coord); // TO BE DELETED
    52455245               
    52465246                /*Calculate scalar parameter*/
     
    53595359        }
    53605360
    5361 }
    5362 /*}}}*/
    5363 /*FUNCTION Tria::GetParameterDerivativeValue {{{1*/
    5364 void Tria::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss_l1l2l3){
    5365          
    5366         const int NDOF2=2;
    5367         const int numgrids=3;
    5368         /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian
    5369          * point specified by gauss_l1l2l3:
    5370          *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
    5371          *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
    5372          *
    5373          * p is a vector of size 2x1 already allocated.
    5374          */
    5375        
    5376         double dh1dh3[NDOF2][numgrids]; //nodal derivative functions in actual coordinate system.
    5377 
    5378         /*Get dh1dh2dh3 in actual coordinate system: */
    5379         GetNodalFunctionsDerivatives(&dh1dh3[0][0],xyz_list, gauss_l1l2l3);
    5380 
    5381         *(p+0)=plist[0]*dh1dh3[0][0]+plist[1]*dh1dh3[0][1]+plist[2]*dh1dh3[0][2];
    5382         *(p+1)=plist[0]*dh1dh3[1][0]+plist[1]*dh1dh3[1][1]+plist[2]*dh1dh3[1][2];
    5383 
    5384 }
    5385 /*}}}*/
    5386 /*FUNCTION Tria::GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3) {{{1*/
    5387 void Tria::GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3){
    5388        
    5389         /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter value at gaussian
    5390          * point specifie by gauss_l1l2l3: */
    5391        
    5392         /*nodal functions: */
    5393         double l1l2l3[3];
    5394 
    5395         /*output: */
    5396         double p;
    5397 
    5398         GetNodalFunctions(l1l2l3, gauss_l1l2l3);
    5399 
    5400         p=l1l2l3[0]*plist[0]+l1l2l3[1]*plist[1]+l1l2l3[2]*plist[2];
    5401 
    5402         /*Assign output pointers:*/
    5403         *pp=p;
    54045361}
    54055362/*}}}*/
  • issm/trunk/src/c/objects/Elements/Tria.h

    r4904 r4921  
    141141                void      GetDofList(int* doflist,int* pnumberofdofs);
    142142                void      GetDofList1(int* doflist);
    143                 void      GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss_l1l2l3);
    144143                void      GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3);
    145144                void    GetParameterValue(double* pvalue,Node* node,int enumtype);
  • issm/trunk/src/c/objects/Elements/TriaRef.cpp

    r4910 r4921  
    358358}
    359359/*}}}*/
     360/*FUNCTION TriaRef::GetParameterDerivativeValue {{{1*/
     361void TriaRef::GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss){
     362
     363        /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian
     364         * point specified by gauss_l1l2l3:
     365         *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
     366         *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
     367         *
     368         * p is a vector of size 2x1 already allocated.
     369         */
     370
     371        /*Nodal Derivatives*/
     372        double dh1dh3[2][3]; //nodal derivative functions in actual coordinate system.
     373
     374        /*Get dh1dh2dh3 in actual coordinate system: */
     375        GetNodalFunctionsDerivatives(&dh1dh3[0][0],xyz_list, gauss);
     376
     377        /*Assign values*/
     378        *(p+0)=plist[0]*dh1dh3[0][0]+plist[1]*dh1dh3[0][1]+plist[2]*dh1dh3[0][2];
     379        *(p+1)=plist[0]*dh1dh3[1][0]+plist[1]*dh1dh3[1][1]+plist[2]*dh1dh3[1][2];
     380
     381}
     382/*}}}*/
     383/*FUNCTION TriaRef::GetParameterValue{{{1*/
     384void TriaRef::GetParameterValue(double* p, double* plist, double* gauss){
     385
     386        /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter value at gaussian
     387         * point specifie by gauss: */
     388
     389        /*nodal functions annd output: */
     390        double l1l2l3[3];
     391
     392        /*Get nodal functions*/
     393        GetNodalFunctions(l1l2l3, gauss);
     394
     395        /*Get parameter*/
     396        *p=l1l2l3[0]*plist[0]+l1l2l3[1]*plist[1]+l1l2l3[2]*plist[2];
     397}
     398/*}}}*/
  • issm/trunk/src/c/objects/Elements/TriaRef.h

    r4885 r4921  
    3535                void GetNodalFunctionsDerivatives(double* l1l2l3,double* xyz_list, double* gauss);
    3636                void GetNodalFunctionsDerivativesReference(double* dl1dl3,double* gauss);
     37                void GetParameterValue(double* pp, double* plist, double* gauss);
     38                void GetParameterDerivativeValue(double* pp, double* plist,double* xyz_list, double* gauss);
    3739
    3840};
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r4899 r4921  
    212212/*FUNCTION PentaVertexInput::GetParameterValue(double* pvalue,double* gauss){{{1*/
    213213void PentaVertexInput::GetParameterValue(double* pvalue,double* gauss){
    214         /*P1 interpolation on Gauss point*/
    215 
    216         /*intermediary*/
    217         double l1l6[6];
    218 
    219         /*nodal functions: */
    220         GetNodalFunctionsP1(&l1l6[0],gauss);
    221 
    222         /*Assign output pointers:*/
    223         *pvalue=l1l6[0]*values[0]+l1l6[1]*values[1]+l1l6[2]*values[2]+l1l6[3]*values[3]+l1l6[4]*values[4]+l1l6[5]*values[5];
     214
     215        /*Call PentaRef function*/
     216        PentaRef::GetParameterValue(pvalue,&values[0],gauss);
    224217
    225218}
     
    247240/*FUNCTION PentaVertexInput::GetParameterDerivativeValue{{{1*/
    248241void PentaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){
    249         /*From grid values of parameter p (p_list[0], p_list[1], p_list[2], p_list[3], p_list[4] and p_list[4]), return parameter derivative value at gaussian point specified by gauss_coord:
    250          *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
    251          *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
    252          *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
    253          *
    254          *   p is a vector of size 3x1 already allocated.
    255          */
    256 
    257         const int NDOF3=3;
    258         const int numgrids=6;
    259         double dh1dh6[NDOF3][numgrids];
    260 
    261         /*Get nodal funnctions derivatives in actual coordinate system: */
    262         GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list, gauss);
    263 
    264         p[0]=this->values[0]*dh1dh6[0][0]+this->values[1]*dh1dh6[0][1]+this->values[2]*dh1dh6[0][2]+this->values[3]*dh1dh6[0][3]+this->values[4]*dh1dh6[0][4]+this->values[5]*dh1dh6[0][5];
    265         p[1]=this->values[0]*dh1dh6[1][0]+this->values[1]*dh1dh6[1][1]+this->values[2]*dh1dh6[1][2]+this->values[3]*dh1dh6[1][3]+this->values[4]*dh1dh6[1][4]+this->values[5]*dh1dh6[1][5];
    266         p[2]=this->values[0]*dh1dh6[2][0]+this->values[1]*dh1dh6[2][1]+this->values[2]*dh1dh6[2][2]+this->values[3]*dh1dh6[2][3]+this->values[4]*dh1dh6[2][4]+this->values[5]*dh1dh6[2][5];
    267 
     242
     243        /*Call PentaRef function*/
     244        PentaRef::GetParameterDerivativeValue(p,&values[0],xyz_list,gauss);
    268245}
    269246/*}}}*/
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r4899 r4921  
    142142}
    143143/*}}}*/
    144 /*FUNCTION BeamVertexInput::SpawnBeamInput{{{1*/
     144/*FUNCTION TriaVertexInput::SpawnBeamInput{{{1*/
    145145Input* TriaVertexInput::SpawnBeamInput(int* indices){
    146146
     
    192192/*FUNCTION TriaVertexInput::GetParameterValue{{{1*/
    193193void TriaVertexInput::GetParameterValue(double* pvalue,double* gauss){
    194         /*P1 interpolation on Gauss point*/
    195 
    196         /*intermediary*/
    197         double l1l2l3[3];
    198 
    199         /*nodal functions: */
    200         GetNodalFunctions(l1l2l3,gauss);
    201 
    202         /*Assign output pointers:*/
    203         *pvalue=l1l2l3[0]*values[0]+l1l2l3[1]*values[1]+l1l2l3[2]*values[2];
     194
     195        /*Call TriaRef function*/
     196        TriaRef::GetParameterValue(pvalue,&values[0],gauss);
    204197
    205198}
     
    225218/*FUNCTION TriaVertexInput::GetParameterDerivativeValue{{{1*/
    226219void TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){
    227         /*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian
    228          * point specified by gauss_l1l2l3:
    229          *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
    230          *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
    231          *
    232          * p is a vector of size 2x1 already allocated.
    233          */
    234 
    235         const int NDOF2=2;
    236         const int numgrids=3;
    237         double dh1dh3[NDOF2][numgrids]; //nodal derivative functions in actual coordinate system.
    238 
    239         /*Get nodal funnctions derivatives in actual coordinate system: */
    240         GetNodalFunctionsDerivatives(&dh1dh3[0][0],xyz_list,gauss);
    241 
    242         p[0]=this->values[0]*dh1dh3[0][0]+this->values[1]*dh1dh3[0][1]+this->values[2]*dh1dh3[0][2];
    243         p[1]=this->values[0]*dh1dh3[1][0]+this->values[1]*dh1dh3[1][1]+this->values[2]*dh1dh3[1][2];
    244 
     220
     221        /*Call TriaRef function*/
     222        TriaRef::GetParameterDerivativeValue(p,&values[0],xyz_list,gauss);
    245223}
    246224/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.