Changeset 16743


Ignore:
Timestamp:
11/13/13 15:44:10 (11 years ago)
Author:
seroussi
Message:

CHG: better B in enthalpy solution

File:
1 edited

Legend:

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

    r16740 r16743  
    48514851        IssmDouble  values[numdof];
    48524852        IssmDouble  B[numdof],surface[numdof];
    4853         IssmDouble  B_average;
    48544853        int        *doflist = NULL;
    48554854        bool        hack    = false;
     
    48904889                 * otherwise the rheology could be negative*/
    48914890                this->parameters->FindParam(&rheology_law,MaterialsRheologyLawEnum);
     4891                GetInputListOnVertices(&surface[0],SurfaceEnum);
    48924892                switch(rheology_law){
    48934893                        case NoneEnum:
     
    48954895                                break;
    48964896                        case PatersonEnum:
    4897                                 B_average=Paterson((values[0]+values[1]+values[2]+values[3]+values[4]+values[5])/6.0);
    4898                                 for(i=0;i<numdof;i++) B[i]=B_average;
     4897                                for(i=0;i<numdof;i++) B[i]=Paterson(values[i]);
    48994898                                this->material->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,B,P1Enum));
    49004899                                break;
    49014900                        case ArrheniusEnum:
    4902                                 GetInputListOnVertices(&surface[0],SurfaceEnum);
    49034901                                for(i=0;i<numdof;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i][2],material->GetN());
    49044902                                this->material->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,B,P1Enum));
     
    49264924        IssmDouble xyz_list[NUMVERTICES][3];
    49274925        IssmDouble values[numdof];
    4928         IssmDouble pressure[NUMVERTICES];
     4926        IssmDouble pressure[numdof];
     4927        IssmDouble surface[numdof];
    49294928        IssmDouble temperatures[numdof];
    49304929        IssmDouble waterfraction[numdof];
     
    49654964                 * otherwise the rheology could be negative*/
    49664965                this->parameters->FindParam(&rheology_law,MaterialsRheologyLawEnum);
     4966                GetInputListOnVertices(&surface[0],PressureEnum);
    49674967                switch(rheology_law){
    49684968                        case NoneEnum:
     
    49704970                                break;
    49714971                        case PatersonEnum:
    4972                                 B_average=Paterson((temperatures[0]+temperatures[1]+temperatures[2]+temperatures[3]+temperatures[4]+temperatures[5])/6.0);
    4973                                 for(i=0;i<numdof;i++) B[i]=B_average;
     4972                                for(i=0;i<numdof;i++) B[i]=Paterson(values[i]);
    49744973                                this->material->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,B,P1Enum));
    49754974                                break;
    49764975                        case ArrheniusEnum:
    4977                                 surface_input->GetInputAverage(&s_average);
    4978                                 B_average=Arrhenius((temperatures[0]+temperatures[1]+temperatures[2]+temperatures[3]+temperatures[4]+temperatures[5])/6.0,
    4979                                                         s_average-((xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2]+xyz_list[3][2]+xyz_list[4][2]+xyz_list[5][2])/6.0),
    4980                                                         material->GetN());
    4981                                 for(i=0;i<numdof;i++) B[i]=B_average;
     4976                                for(i=0;i<numdof;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i][2],material->GetN());
    49824977                                this->material->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,B,P1Enum));
    49834978                                break;
    49844979                        case LliboutryDuvalEnum:
    4985                                 B_average=LliboutryDuval((values[0]+values[1]+values[2]+values[3]+values[4]+values[5])/6.0,
    4986                                                                                                                                  (pressure[0]+pressure[1]+pressure[2]+pressure[3]+pressure[4]+pressure[5])/6.0,
    4987                                                                                                                                  material->GetN(),
    4988                                                                                                                                  matpar->GetBeta(), matpar->GetReferenceTemperature(), matpar->GetHeatCapacity(), matpar->GetLatentHeat());
    4989                                 for(i=0;i<numdof;i++) B[i]=B_average;
     4980                                for(i=0;i<numdof;i++) B[i]=LliboutryDuval(values[i],pressure[i],material->GetN(),matpar->GetBeta(),matpar->GetReferenceTemperature(),matpar->GetHeatCapacity(),matpar->GetLatentHeat());
    49904981                                this->material->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,B,P1Enum));
    49914982                                break;
Note: See TracChangeset for help on using the changeset viewer.