Changeset 21140


Ignore:
Timestamp:
08/16/16 09:48:33 (9 years ago)
Author:
Mathieu Morlighem
Message:

BUG: fixed pressure in HO

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r20993 r21140  
    18071807                        element->GetVerticesCoordinates(&xyz_list);
    18081808                        element->GetInputListOnVertices(surface,SurfaceEnum);
    1809                         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
     1809                        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
    18101810                        dim=1;
    18111811                        break;
     
    27772777void           StressbalanceAnalysis::InputUpdateFromSolutionHO(IssmDouble* solution,Element* element){/*{{{*/
    27782778
    2779         int         i,dim;
     2779        int         i,domaintype,dim;
    27802780        int*        doflist=NULL;
    27812781        IssmDouble* xyz_list=NULL;
    2782 
    2783         /*Get mesh dimension*/
    2784         element->FindParam(&dim,DomainDimensionEnum);
    27852782
    27862783        /*Deal with pressure first*/
     
    27882785        IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
    27892786        IssmDouble* surface   = xNew<IssmDouble>(numvertices);
    2790         IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
    2791         IssmDouble  g         = element->GetMaterialParameter(ConstantsGEnum);
    2792         element->GetVerticesCoordinates(&xyz_list);
    2793         element->GetInputListOnVertices(surface,SurfaceEnum);
    2794         for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
     2787
     2788        element->FindParam(&domaintype,DomainTypeEnum);
     2789        IssmDouble rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
     2790        IssmDouble g       =element->GetMaterialParameter(ConstantsGEnum);
     2791        switch(domaintype){
     2792                case Domain3DEnum:
     2793                        element->GetVerticesCoordinates(&xyz_list);
     2794                        element->GetInputListOnVertices(surface,SurfaceEnum);
     2795                        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
     2796                        dim=3;
     2797                        break;
     2798                case Domain2DverticalEnum:
     2799                        element->GetVerticesCoordinates(&xyz_list);
     2800                        element->GetInputListOnVertices(surface,SurfaceEnum);
     2801                        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
     2802                        dim=2;
     2803                        break;
     2804                default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
     2805        }
    27952806        element->AddInput(PressureEnum,pressure,P1Enum);
    27962807        xDelete<IssmDouble>(pressure);
     
    28432854
    28442855        /*Add vx and vy as inputs to the element: */
    2845         //element->AddInput(VxEnum,  vx,element->GetElementType());
    2846         //element->AddInput(VyEnum,  vy,element->GetElementType());
    2847         //element->AddInput(VelEnum,vel,element->GetElementType());
    28482856        element->AddInput(VxEnum,vx,element->GetElementType());
    28492857        if(dim==3)element->AddInput(VyEnum,vy,element->GetElementType());
Note: See TracChangeset for help on using the changeset viewer.