Changeset 18175


Ignore:
Timestamp:
06/23/14 16:24:14 (11 years ago)
Author:
Mathieu Morlighem
Message:

BUG: fixed divergence that was only integrating on base (+ added 2d case)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r18126 r18175  
    187187
    188188        /*Intermediaries*/
     189        int        dim;
    189190        IssmDouble Jdet;
    190191        IssmDouble divergence=0.;
     
    193194
    194195        /*Get inputs and parameters*/
    195         Input* vx_input        = this->GetInput(VxEnum); _assert_(vx_input);
    196         Input* vy_input        = this->GetInput(VyEnum); _assert_(vy_input);
    197         Input* vz_input        = this->GetInput(VzEnum); _assert_(vz_input);
     196        this->FindParam(&dim,DomainDimensionEnum);
     197        Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
     198        Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
     199        Input* vz_input = NULL;
     200        if(dim==3){
     201                vz_input = this->GetInput(VzEnum); _assert_(vz_input);
     202        }
    198203        this->GetVerticesCoordinates(&xyz_list);
    199204
    200         Gauss* gauss=this->NewGaussBase(5);
     205        Gauss* gauss=this->NewGauss(5);
    201206        for(int ig=gauss->begin();ig<gauss->end();ig++){
    202207                gauss->GaussPoint(ig);
     
    206211                vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
    207212                vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
    208                 vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
    209 
    210                 divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet;
     213                if(dim==2){
     214                        divergence += (dvx[0]+dvy[1])*gauss->weight*Jdet;
     215                }
     216                else{
     217                        vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
     218                        divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet;
     219                }
     220
    211221        }
    212222
Note: See TracChangeset for help on using the changeset viewer.