Changeset 11361


Ignore:
Timestamp:
02/08/12 13:29:22 (13 years ago)
Author:
seroussi
Message:

fixing stabilization for enthalpy solution

Location:
issm/trunk-jpl/src/c/objects/Elements
Files:
2 edited

Legend:

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

    r11355 r11361  
    11321132/*}}}*/
    11331133/*FUNCTION Penta::GetStabilizationParameter {{{1*/
    1134 double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity){
     1134double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double kappa){
    11351135        /*Compute stabilization parameter*/
     1136        /*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/
     1137        /*kappa=enthalpydiffusionparameter for enthalpy model*/
    11361138
    11371139        double normu;
     
    11391141
    11401142        normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5);
    1141         if(normu*diameter/(3*2*thermalconductivity/(rho_ice*heatcapacity))<1){
    1142                 tau_parameter=pow(diameter,2)/(3*2*2*thermalconductivity/(rho_ice*heatcapacity));
     1143        if(normu*diameter/(3*2*kappa)<1){
     1144                tau_parameter=pow(diameter,2)/(3*2*2*kappa);
    11431145        }
    11441146        else tau_parameter=diameter/(2*normu);
     
    33723374                else if(stabilization==2){
    33733375                        GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
    3374                         tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity);
     3376                        tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
    33753377
    33763378                        for(i=0;i<numdof;i++){
     
    34863488        double     Jdet,u,v,w,um,vm,wm,vel;
    34873489        double     h,hx,hy,hz,vx,vy,vz;
    3488         double     gravity,rho_ice,rho_water;
     3490        double     gravity,rho_ice,rho_water,kappa;
    34893491        double     heatcapacity,thermalconductivity,dt;
    34903492        double     tau_parameter,diameter;
     
    35123514        heatcapacity=matpar->GetHeatCapacity();
    35133515        thermalconductivity=matpar->GetThermalConductivity();
     3516        kappa=thermalconductivity/(rho_ice*heatcapacity);
    35143517        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    35153518        this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
     
    36033606                else if(stabilization==2){
    36043607                        GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
    3605                         tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity);
     3608                        tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
    36063609
    36073610                        for(i=0;i<numdof;i++){
     
    37083711        double Jdet,phi,dt;
    37093712        double rho_ice,heatcapacity;
    3710         double thermalconductivity;
    3711         double viscosity,enthalpy;
     3713        double thermalconductivity,kappa;
     3714        double viscosity,enthalpy,pressure;
    37123715        double tau_parameter,diameter;
    37133716        double u,v,w;
     
    37333736        Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
    37343737        Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);
     3738        Input* pressure_input=inputs->GetInput(PressureEnum);      _assert_(pressure_input);
    37353739        Input* enthalpy_input=NULL;
    37363740        if (dt) enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(inputs);
     
    37463750                GetNodalFunctionsP1(&L[0], gauss);
    37473751
     3752                enthalpy_input->GetInputValue(&enthalpy, gauss);
    37483753                this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
    37493754                matice->GetViscosity3dStokes(&viscosity,&epsilon[0]);
     
    37573762                /* Build transient now */
    37583763                if(dt){
    3759                         enthalpy_input->GetInputValue(&enthalpy, gauss);
    37603764                        scalar_transient=enthalpy*Jdet*gauss->weight;
    37613765                        for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=scalar_transient*L[i];
     
    37683772                        vy_input->GetInputValue(&v, gauss);
    37693773                        vz_input->GetInputValue(&w, gauss);
    3770 
    3771                         tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity);
     3774                        pressure_input->GetInputValue(&pressure, gauss);
     3775                        kappa=matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure);
     3776
     3777                        tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa);
    37723778
    37733779                        for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
     
    39613967        double Jdet,phi,dt;
    39623968        double rho_ice,heatcapacity;
    3963         double thermalconductivity;
     3969        double thermalconductivity,kappa;
    39643970        double viscosity,temperature;
    39653971        double tau_parameter,diameter;
     
    39813987        heatcapacity=matpar->GetHeatCapacity();
    39823988        thermalconductivity=matpar->GetThermalConductivity();
     3989        kappa=heatcapacity/(rho_ice*thermalconductivity);
    39833990        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    39843991        this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
     
    40224029                        vz_input->GetInputValue(&w, gauss);
    40234030
    4024                         tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity);
     4031                        tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa);
    40254032
    40264033                        for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
  • issm/trunk-jpl/src/c/objects/Elements/Penta.h

    r11340 r11361  
    183183                void      GetPhi(double* phi, double*  epsilon, double viscosity);
    184184                void      GetSolutionFromInputsEnthalpy(Vec solutiong);
    185                 double  GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity);
     185                double  GetStabilizationParameter(double u, double v, double w, double diameter, double kappa);
    186186                void    GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input);
    187187                void    GetStrainRate3d(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input);
Note: See TracChangeset for help on using the changeset viewer.