source: issm/oecreview/Archive/16554-17801/ISSM-16779-16780.diff@ 17802

Last change on this file since 17802 was 17802, checked in by Mathieu Morlighem, 11 years ago

Added archives

File size: 3.1 KB
  • ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

     
    10591059}/*}}}*/
    10601060void StressbalanceAnalysis::InputUpdateFromSolutionHO(IssmDouble* solution,Element* element){/*{{{*/
    10611061
    1062         int         i,meshtype;
    1063         IssmDouble  rho_ice,g;
     1062        int         i;
    10641063        int*        doflist=NULL;
    10651064        IssmDouble* xyz_list=NULL;
    10661065
     1066        /*Deal with pressure first*/
     1067        int numvertices = element->GetNumberOfVertices();
     1068        IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
     1069        IssmDouble* surface   = xNew<IssmDouble>(numvertices);
     1070        IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
     1071        IssmDouble  g         = element->GetMaterialParameter(ConstantsGEnum);
     1072        element->GetVerticesCoordinates(&xyz_list);
     1073        element->GetInputListOnVertices(surface,SurfaceEnum);
     1074        for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
     1075        element->AddInput(PressureEnum,pressure,P1Enum);
     1076        xDelete<IssmDouble>(pressure);
     1077        xDelete<IssmDouble>(surface);
     1078
    10671079        /*Fetch number of nodes and dof for this finite element*/
    10681080        int numnodes = element->GetNumberOfNodes();
    10691081        int numdof   = numnodes*2;
     
    10751087        IssmDouble* vy        = xNew<IssmDouble>(numnodes);
    10761088        IssmDouble* vz        = xNew<IssmDouble>(numnodes);
    10771089        IssmDouble* vel       = xNew<IssmDouble>(numnodes);
    1078         IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
    1079         IssmDouble* surface   = xNew<IssmDouble>(numnodes);
    10801090
    10811091        /*Use the dof list to index into the solution vector: */
    10821092        for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
    10831093
    10841094        /*Transform solution in Cartesian Space*/
    10851095        element->TransformSolutionCoord(&values[0],XYEnum);
    1086         element->FindParam(&meshtype,MeshTypeEnum);
    10871096
    10881097        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    10891098        for(i=0;i<numnodes;i++){
     
    10991108        element->GetInputListOnNodes(&vz[0],VzEnum,0.);
    11001109        for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
    11011110
    1102         /*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D,
    1103          *so the pressure is just the pressure at the bedrock: */
    1104         rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
    1105         g       = element->GetMaterialParameter(ConstantsGEnum);
    1106         element->GetVerticesCoordinates(&xyz_list);
    1107         element->GetInputListOnNodes(&surface[0],SurfaceEnum);
    1108         for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
    1109 
    11101111        /*Now, we have to move the previous Vx and Vy inputs  to old
    11111112         * status, otherwise, we'll wipe them off: */
    11121113        element->InputChangeName(VxEnum,VxPicardEnum);
     
    11171118        element->AddInput(VxEnum,vx,P1Enum);
    11181119        element->AddInput(VyEnum,vy,P1Enum);
    11191120        element->AddBasalInput(VelEnum,vel,P1Enum);
    1120         element->AddBasalInput(PressureEnum,pressure,P1Enum);
    11211121
    11221122        /*Free ressources:*/
    1123         xDelete<IssmDouble>(surface);
    1124         xDelete<IssmDouble>(pressure);
    11251123        xDelete<IssmDouble>(vel);
    11261124        xDelete<IssmDouble>(vz);
    11271125        xDelete<IssmDouble>(vy);
Note: See TracBrowser for help on using the repository browser.