Changeset 16638
- Timestamp:
- 11/06/13 15:32:20 (11 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 2 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r16542 r16638 57 57 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum); 58 58 iomodel->FetchDataToInput(elements,EplHeadEnum); 59 iomodel->FetchDataToInput(elements,HydrologydcEplThicknessEnum); 60 59 61 }/*}}}*/ 60 62 void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16636 r16638 2645 2645 name==SedimentHeadOldEnum || 2646 2646 name==EplHeadOldEnum || 2647 name==HydrologydcEplThicknessOldEnum || 2648 name==HydrologydcEplThicknessEnum || 2647 2649 name==HydrologydcMaskEplactiveEnum || 2648 2650 name==WaterTransferEnum … … 2871 2873 switch(input->GetResultInterpolation()){ 2872 2874 case P0Enum: 2873 _error_(" not implemented...");2875 _error_("P0 not implemented yet for input "<<EnumToStringx(output_enum)); 2874 2876 break; 2875 2877 case P1Enum:{ … … 10842 10844 void Penta::ComputeEPLThickness(void){ 10843 10845 10846 int i; 10847 const int numdof = NDOF1 *NUMVERTICES; 10848 const int numdof2d = NDOF1 *NUMVERTICES2D; 10849 bool isefficientlayer; 10850 IssmDouble n,A,dt; 10851 IssmDouble rho_water,rho_ice; 10852 IssmDouble gravity,latentheat,EPLgrad; 10853 IssmDouble EPL_N,epl_conductivity; 10854 IssmDouble activeEpl[numdof],thickness[numdof]; 10855 IssmDouble eplhead[numdof], old_thickness[numdof]; 10856 IssmDouble epl_slopeX[numdof],epl_slopeY[numdof]; 10857 IssmDouble ice_thickness[numdof],bed[numdof]; 10858 Penta *penta = NULL; 10859 /*If not on bed, return*/ 10844 10860 if (!IsOnBed())return; 10845 10861 10846 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 10847 tria->ComputeEPLThickness(); 10848 delete tria->material; delete tria; 10849 10862 /*Get the flag to know if the efficient layer is present*/ 10863 this->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 10864 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 10865 10866 if(isefficientlayer){ 10867 /*For now, assuming just one way to compute EPL thickness*/ 10868 rho_water = matpar->GetRhoWater(); 10869 rho_ice = matpar->GetRhoIce(); 10870 gravity = matpar->GetG(); 10871 latentheat = matpar->GetLatentHeat(); 10872 epl_conductivity = matpar->GetEplConductivity(); 10873 n = material->GetN(); 10874 A = material->GetA(); 10875 10876 10877 GetInputListOnVertices(&activeEpl[0],HydrologydcMaskEplactiveEnum); 10878 GetInputListOnVertices(&eplhead[0],EplHeadEnum); 10879 GetInputListOnVertices(&epl_slopeX[0],EplHeadSlopeXEnum); 10880 GetInputListOnVertices(&epl_slopeY[0],EplHeadSlopeYEnum); 10881 GetInputListOnVertices(&old_thickness[0],HydrologydcEplThicknessOldEnum); 10882 GetInputListOnVertices(&ice_thickness[0],ThicknessEnum); 10883 GetInputListOnVertices(&bed[0],BedEnum); 10884 10885 for(int i=0;i<numdof2d;i++){ 10886 /*Keeping thickness to 1 if EPL is not active*/ 10887 if(activeEpl[i]==0.0){ 10888 thickness[i]=1.0; 10889 thickness[i+numdof2d]=thickness[i]; 10890 } 10891 else{ 10892 10893 /*Compute first the effective pressure in the EPL*/ 10894 EPL_N=gravity*((rho_ice*ice_thickness[i])-(rho_water*(eplhead[i]-bed[i]))); 10895 10896 /*Get then the gradient of EPL heads*/ 10897 EPLgrad = epl_slopeX[i]+epl_slopeY[i]; 10898 10899 /*And proceed to the real thing*/ 10900 thickness[i] = old_thickness[i]*(1-((rho_water*gravity*dt)/(rho_ice* latentheat))*epl_conductivity*pow(EPLgrad,2.0)-2.0*(A*dt/(pow(n,n)))*EPL_N); 10901 thickness[i+numdof2d]=thickness[i]; 10902 } 10903 } 10904 penta=this; 10905 for(;;){ 10906 10907 /*Add input to the element: */ 10908 penta->inputs->AddInput(new PentaInput(HydrologydcEplThicknessEnum,thickness,P1Enum)); 10909 10910 /*Stop if we have reached the surface*/ 10911 if (penta->IsOnSurface()) break; 10912 10913 /* get upper Penta*/ 10914 penta=penta->GetUpperElement(); _assert_(penta->Id()!=this->id); 10915 } 10916 } 10850 10917 } 10851 10918 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16613 r16638 1578 1578 1579 1579 /*Call inputs method*/ 1580 if (IsInput(original_enum)) inputs->DuplicateInput(original_enum,new_enum); 1581 1580 if (IsInput(original_enum)) { 1581 inputs->DuplicateInput(original_enum,new_enum); 1582 } 1582 1583 } 1583 1584 /*}}}*/ … … 2097 2098 name==EplHeadOldEnum || 2098 2099 name==EplHeadEnum || 2100 name==HydrologydcEplThicknessOldEnum || 2101 name==HydrologydcEplThicknessEnum || 2099 2102 name==HydrologydcMaskEplactiveEnum || 2100 2103 name==MeshVertexonbedEnum || … … 2455 2458 input=this->inputs->GetInput(output_enum); 2456 2459 break; 2457 case SurfaceNormalVelocityEnum:2458 this->ComputeSurfaceNormalVelocity();2459 input=this->inputs->GetInput(output_enum);2460 break;2461 2460 default: 2462 2461 _error_("input "<<EnumToStringx(output_enum)<<" not found in element"); … … 2490 2489 2491 2490 vector->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL); 2492 2493 /*FIXME: Inputs needs to be updated first in Tria::ResultInterpolation, this is a hack*/2494 this->inputs->DeleteInput(SurfaceNormalVelocityEnum);2495 2491 break; 2496 2492 } … … 2649 2645 *(surface_normal+1) = normal[1]/normal_norm; 2650 2646 *(surface_normal+2) = normal[2]/normal_norm; 2651 }2652 /*}}}*/2653 /*FUNCTION Tria::ComputeSurfaceNormalVelocity{{{*/2654 void Tria::ComputeSurfaceNormalVelocity(){2655 2656 IssmDouble sum,tangential_vector[2],normal_vector[2],time,ux,uy;2657 IssmDouble normal_velocity[NUMVERTICES],xyz_list[NUMVERTICES][3];2658 IssmDouble value[NUMVERTICES],verticesonsurface[NUMVERTICES];2659 2660 for(int iv=0;iv<NUMVERTICES;iv++){2661 normal_velocity[iv]=0.;2662 value[iv]=0.;2663 }2664 2665 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);2666 2667 GaussTria* gauss=new GaussTria();2668 Input* slope_input=inputs->GetInput(SurfaceSlopeXEnum); _assert_(slope_input);2669 // Input* slope_input= inputs->GetInput(SurfaceEnum); _assert_(slope_input);2670 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);2671 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);2672 2673 2674 /*Get list of nodes on surface*/2675 GetInputListOnVertices(&verticesonsurface[0],MeshVertexonsurfaceEnum);2676 sum = verticesonsurface[0]+verticesonsurface[1]+verticesonsurface[2];2677 _assert_(sum==0. || sum==1. || sum==2.);2678 2679 /*Compute normal velocity for surface nodes from L2 projected slope*/2680 for(int iv=0;iv<NUMVERTICES;iv++){2681 if(verticesonsurface[iv] == 1){2682 gauss->GaussNode(P1Enum,iv);2683 slope_input->GetInputValue(&value[iv],gauss);2684 // slope_input->GetInputDerivativeValue(&value[iv],&xyz_list[0][0],gauss);2685 vx_input->GetInputValue(&ux,gauss);2686 vy_input->GetInputValue(&uy,gauss);2687 tangential_vector[0]=sqrt(1./(pow(value[iv],2.)+1.));2688 tangential_vector[1]=value[iv]*tangential_vector[0];2689 normal_vector[0]=-1.*tangential_vector[1];2690 normal_vector[1]=tangential_vector[0];2691 normal_velocity[iv]=ux*normal_vector[0]+uy*normal_vector[1];2692 }2693 }2694 2695 delete gauss;2696 this->inputs->AddInput(new TriaInput(SurfaceNormalVelocityEnum,&normal_velocity[0],P1Enum));2697 2698 2647 } 2699 2648 /*}}}*/ … … 3278 3227 Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input); 3279 3228 smb_input->GetInputAverage(&smb); // average smb on element in m ice s-1 3280 3229 Total_Smb=rho_ice*base*smb; // smb on element in kg s-1 3281 3230 3282 3231 /*Return: */ … … 6734 6683 6735 6684 /* Intermediaries */ 6736 IssmDouble D_scalar,Jdet; 6737 IssmDouble epl_transmitivity,dt; 6738 IssmDouble epl_storing; 6685 IssmDouble D_scalar,Jdet,dt; 6686 IssmDouble epl_thickness; 6687 IssmDouble epl_conductivity; 6688 IssmDouble epl_specificstoring; 6739 6689 IssmDouble xyz_list[NUMVERTICES][3]; 6740 6690 … … 6755 6705 /*Retrieve all inputs and parameters*/ 6756 6706 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6707 Input* thickness_input=inputs->GetInput(HydrologydcEplThicknessEnum); _assert_(thickness); 6757 6708 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 6758 epl_storing = matpar->GetEplStoring(); 6759 epl_transmitivity = matpar->GetEplTransmitivity(); 6709 epl_specificstoring = matpar->GetEplSpecificStoring(); 6710 epl_conductivity = matpar->GetEplConductivity(); 6711 6760 6712 6761 6713 /* Start looping on the number of gaussian points: */ 6762 6714 GaussTria* gauss=new GaussTria(2); 6763 6715 for(int ig=gauss->begin();ig<gauss->end();ig++){ 6764 6716 6717 6765 6718 gauss->GaussPoint(ig); 6766 6719 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 6720 thickness_input->GetInputValue(&epl_thickness,gauss); 6767 6721 6768 6722 /*Diffusivity*/ 6769 D_scalar=epl_ transmitivity*gauss->weight*Jdet;6723 D_scalar=epl_conductivity*epl_thickness*gauss->weight*Jdet; 6770 6724 if(reCast<bool,IssmDouble>(dt)) D_scalar=D_scalar*dt; 6771 6725 D[0][0]=D_scalar; D[0][1]=0.; … … 6780 6734 if(reCast<bool,IssmDouble>(dt)){ 6781 6735 GetNodalFunctions(basis,gauss); 6782 D_scalar=epl_s toring*gauss->weight*Jdet;6736 D_scalar=epl_specificstoring*epl_thickness*gauss->weight*Jdet; 6783 6737 6784 6738 TripleMultiply(basis,numnodes,1,0, … … 6916 6870 IssmDouble dt,scalar,water_head; 6917 6871 IssmDouble transfer,residual; 6918 IssmDouble epl_storing; 6872 IssmDouble epl_thickness; 6873 IssmDouble epl_specificstoring; 6919 6874 GaussTria* gauss = NULL; 6920 6875 … … 6932 6887 6933 6888 /*Retrieve all inputs and parameters*/ 6934 epl_s toring = matpar->GetEplStoring();6889 epl_specificstoring = matpar->GetEplSpecificStoring(); 6935 6890 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6936 6891 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 6937 Input* residual_input=inputs->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 6938 Input* transfer_input=inputs->GetInput(WaterTransferEnum); _assert_(transfer_input); 6892 Input* residual_input=inputs->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 6893 Input* transfer_input=inputs->GetInput(WaterTransferEnum); _assert_(transfer_input); 6894 Input* thickness_input=inputs->GetInput(HydrologydcEplThicknessEnum); _assert_(thickness_input); 6939 6895 Input* old_wh_input=NULL; 6940 6896 … … 6959 6915 /*Transient term*/ 6960 6916 if(reCast<bool,IssmDouble>(dt)){ 6917 thickness_input->GetInputValue(&epl_thickness,gauss); 6961 6918 old_wh_input->GetInputValue(&water_head,gauss); 6962 scalar = Jdet*gauss->weight*water_head*epl_s toring;6919 scalar = Jdet*gauss->weight*water_head*epl_specificstoring*epl_thickness; 6963 6920 for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i]; 6964 6921 } … … 7142 7099 IssmDouble leakage,h_max; 7143 7100 IssmDouble wh_trans; 7144 IssmDouble activeEpl[numdof] ;7145 IssmDouble epl storing[numdof],sedstoring[numdof];7101 IssmDouble activeEpl[numdof],epl_thickness[numdof]; 7102 IssmDouble epl_specificstoring[numdof],sedstoring[numdof]; 7146 7103 IssmDouble epl_head[numdof],sed_head[numdof]; 7147 7104 … … 7165 7122 GetInputListOnVertices(&sed_head[0],SedimentHeadEnum); 7166 7123 GetInputListOnVertices(&epl_head[0],EplHeadEnum); 7124 GetInputListOnVertices(&epl_thickness[0],HydrologydcEplThicknessEnum); 7167 7125 7168 7126 this->parameters->FindParam(&leakage,HydrologydcLeakageFactorEnum); … … 7177 7135 } 7178 7136 else{ 7179 epl storing[i]=matpar->GetEplStoring();7137 epl_specificstoring[i]=matpar->GetEplSpecificStoring(); 7180 7138 sedstoring[i]=matpar->GetSedimentStoring(); 7181 7139 7182 7140 /*EPL head higher than sediment head, transfer from the epl to the sediment*/ 7183 7141 if(epl_head[i]>sed_head[i]){ 7184 wh_trans=epl storing[i]*sed_trans*(epl_head[i]-sed_head[i])/(leakage*sed_thick);7142 wh_trans=epl_specificstoring[i]*epl_thickness[i]*sed_trans*(epl_head[i]-sed_head[i])/(leakage*sed_thick); 7185 7143 7186 7144 /*No transfer if the sediment head is allready at the maximum*/ … … 7246 7204 GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum); 7247 7205 7248 /*Get minimum sediment head */7206 /*Get minimum sediment head of the element*/ 7249 7207 sedheadmin=sedhead[0]; 7250 7208 for(i=1;i<numdof;i++) if(sedhead[i]<=sedheadmin)sedheadmin=sedhead[i]; … … 7280 7238 /*FUNCTION Tria::ComputeEPLThickness{{{*/ 7281 7239 void Tria::ComputeEPLThickness(void){ 7240 7241 int i; 7242 const int numdof = NDOF1 *NUMVERTICES; 7243 bool isefficientlayer; 7244 IssmDouble n,A,dt; 7245 IssmDouble rho_water,rho_ice; 7246 IssmDouble gravity,latentheat,EPLgrad; 7247 IssmDouble EPL_N,epl_conductivity; 7248 IssmDouble activeEpl[numdof],thickness[numdof]; 7249 IssmDouble eplhead[numdof], old_thickness[numdof]; 7250 IssmDouble epl_slopeX[numdof],epl_slopeY[numdof]; 7251 IssmDouble ice_thickness[numdof],bed[numdof]; 7252 7253 7254 /*Get the flag to know if the efficient layer is present*/ 7255 this->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 7256 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 7257 7258 if(isefficientlayer){ 7259 /*For now, assuming just one way to compute EPL thickness*/ 7260 rho_water = matpar->GetRhoWater(); 7261 rho_ice = matpar->GetRhoIce(); 7262 gravity = matpar->GetG(); 7263 latentheat = matpar->GetLatentHeat(); 7264 n = material->GetN(); 7265 A = material->GetAbar(); 7266 7267 GetInputListOnVertices(&activeEpl[0],HydrologydcMaskEplactiveEnum); 7268 GetInputListOnVertices(&eplhead[0],EplHeadEnum); 7269 GetInputListOnVertices(&epl_slopeX[0],EplHeadSlopeXEnum); 7270 GetInputListOnVertices(&epl_slopeY[0],EplHeadSlopeYEnum); 7271 GetInputListOnVertices(&old_thickness[0],HydrologydcEplThicknessOldEnum); 7272 GetInputListOnVertices(&ice_thickness[0],ThicknessEnum); 7273 GetInputListOnVertices(&bed[0],BedEnum); 7274 7275 epl_conductivity = matpar->GetEplConductivity(); 7276 7277 for(int i=0;i<numdof;i++){ 7278 /*Keeping thickness to 1 if EPL is not active*/ 7279 if(activeEpl[i]==0.0){ 7280 thickness[i]=1.0; 7281 } 7282 else{ 7283 7284 /*Compute first the effective pressure in the EPL*/ 7285 EPL_N=gravity*((rho_ice*ice_thickness[i])-(rho_water*(eplhead[i]-bed[i]))); 7286 7287 /*Get then the gradient of EPL heads*/ 7288 EPLgrad = epl_slopeX[i]+epl_slopeY[i]; 7289 7290 /*And proceed to the real thing*/ 7291 thickness[i] = old_thickness[i]*(1-((rho_water*gravity*dt)/(rho_ice*latentheat))*epl_conductivity*pow(EPLgrad,2.0)-2.0*(A*dt/(pow(n,n)))*EPL_N); 7292 7293 } 7294 } 7295 this->inputs->AddInput(new TriaInput(HydrologydcEplThicknessEnum,thickness,P1Enum)); 7296 } 7282 7297 } 7283 7298 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Materials/Material.h
r16350 r16638 36 36 virtual void GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon)=0; 37 37 virtual IssmDouble GetA()=0; 38 virtual IssmDouble GetAbar()=0; 38 39 virtual IssmDouble GetB()=0; 39 40 virtual IssmDouble GetBbar()=0; -
issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
r16350 r16638 140 140 141 141 inputs->GetInputAverage(&B,MaterialsRheologyBEnum); 142 n=this->GetN(); 143 144 return pow(B,-n); 145 } 146 /*}}}*/ 147 /*FUNCTION Matice::GetAbar {{{*/ 148 IssmDouble Matice::GetAbar(){ 149 /* 150 * A = 1/B^n 151 */ 152 153 IssmDouble B,n; 154 155 inputs->GetInputAverage(&B,MaterialsRheologyBbarEnum); 142 156 n=this->GetN(); 143 157 -
issm/trunk-jpl/src/c/classes/Materials/Matice.h
r16350 r16638 63 63 void GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon); 64 64 IssmDouble GetA(); 65 IssmDouble GetAbar(); 65 66 IssmDouble GetB(); 66 67 IssmDouble GetBbar(); -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r16621 r16638 66 66 iomodel->Constant(&this->epl_compressibility,HydrologydcEplCompressibilityEnum); 67 67 iomodel->Constant(&this->epl_porosity,HydrologydcEplPorosityEnum); 68 iomodel->Constant(&this->epl_thickness,HydrologydcEplThicknessEnum); 69 iomodel->Constant(&this->epl_transmitivity,HydrologydcEplTransmitivityEnum); 68 iomodel->Constant(&this->epl_conductivity,HydrologydcEplConductivityEnum); 70 69 } 71 70 } … … 354 353 } 355 354 /*}}}*/ 356 /*FUNCTION Matpar::GetEplS toring {{{*/357 IssmDouble Matpar::GetEplS toring(){358 return this->rho_freshwater* this->g* this->epl_porosity* this->epl_thickness*355 /*FUNCTION Matpar::GetEplSpecificStoring {{{*/ 356 IssmDouble Matpar::GetEplSpecificStoring(){ 357 return this->rho_freshwater* this->g* this->epl_porosity* 359 358 ( this->water_compressibility+( this->epl_compressibility/ this->epl_porosity)); 360 359 } … … 369 368 return sediment_thickness; 370 369 } 371 /*}}}*/ 372 /*FUNCTION Matpar::GetEpl Transitivity {{{*/373 IssmDouble Matpar::GetEpl Transmitivity(){374 return epl_ transmitivity;370 /*}}}*/ 371 /*FUNCTION Matpar::GetEplConductivity {{{*/ 372 IssmDouble Matpar::GetEplConductivity(){ 373 return epl_conductivity; 375 374 } 376 375 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Materials/Matpar.h
r16614 r16638 49 49 IssmDouble epl_compressibility; 50 50 IssmDouble epl_porosity; 51 IssmDouble epl_thickness; 52 IssmDouble epl_transmitivity; 51 IssmDouble epl_conductivity; 53 52 54 53 /*gia: */ … … 94 93 void GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon){_error_("not supported");}; 95 94 IssmDouble GetA(){_error_("not supported");}; 95 IssmDouble GetAbar(){_error_("not supported");}; 96 96 IssmDouble GetB(){_error_("not supported");}; 97 97 IssmDouble GetBbar(){_error_("not supported");}; … … 121 121 IssmDouble GetHydrologyN(); 122 122 IssmDouble GetSedimentStoring(); 123 IssmDouble GetEplS toring();123 IssmDouble GetEplSpecificStoring(); 124 124 IssmDouble GetSedimentTransmitivity(); 125 125 IssmDouble GetSedimentThickness(); 126 IssmDouble GetEpl Transmitivity();126 IssmDouble GetEplConductivity(); 127 127 IssmDouble TMeltingPoint(IssmDouble pressure); 128 128 IssmDouble PureIceEnthalpy(IssmDouble pressure); -
issm/trunk-jpl/src/c/cores/hydrology_core.cpp
r16592 r16638 84 84 if (isefficientlayer){ 85 85 InputDuplicatex(femmodel,EplHeadEnum,EplHeadOldEnum); 86 InputDuplicatex(femmodel,HydrologydcEplThicknessEnum,HydrologydcEplThicknessOldEnum); 86 87 } 87 88 … … 92 93 if(VerboseSolution()) _printf0_(" saving results \n"); 93 94 if(isefficientlayer){ 94 int outputs[ 6] = {SedimentHeadEnum,SedimentHeadResidualEnum,EplHeadEnum,HydrologydcMaskEplactiveEnum,EplHeadSlopeXEnum,EplHeadSlopeYEnum};95 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0], 6);95 int outputs[7] = {SedimentHeadEnum,SedimentHeadResidualEnum,EplHeadEnum,HydrologydcMaskEplactiveEnum,EplHeadSlopeXEnum,EplHeadSlopeYEnum,HydrologydcEplThicknessEnum}; 96 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],7); 96 97 } 97 98 else{ -
issm/trunk-jpl/src/c/modules/InputDuplicatex/InputDuplicatex.cpp
r16219 r16638 9 9 10 10 void InputDuplicatex(FemModel* femmodel,int original_enum, int new_enum){ 11 12 11 /*Go through elemnets, and ask to reinitialie the input: */ 13 12 for(int i=0;i<femmodel->elements->Size();i++){ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r16614 r16638 114 114 HydrologydcEplPorosityEnum, 115 115 HydrologydcEplThicknessEnum, 116 HydrologydcEplTransmitivityEnum, 116 HydrologydcEplThicknessOldEnum, 117 HydrologydcEplConductivityEnum, 117 118 HydrologydcIsefficientlayerEnum, 118 119 HydrologydcSedimentlimitFlagEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r16612 r16638 122 122 case HydrologydcEplPorosityEnum : return "HydrologydcEplPorosity"; 123 123 case HydrologydcEplThicknessEnum : return "HydrologydcEplThickness"; 124 case HydrologydcEplTransmitivityEnum : return "HydrologydcEplTransmitivity"; 124 case HydrologydcEplThicknessOldEnum : return "HydrologydcEplThicknessOld"; 125 case HydrologydcEplConductivityEnum : return "HydrologydcEplConductivity"; 125 126 case HydrologydcIsefficientlayerEnum : return "HydrologydcIsefficientlayer"; 126 127 case HydrologydcSedimentlimitFlagEnum : return "HydrologydcSedimentlimitFlag"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r16612 r16638 122 122 else if (strcmp(name,"HydrologydcEplPorosity")==0) return HydrologydcEplPorosityEnum; 123 123 else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum; 124 else if (strcmp(name,"HydrologydcEplTransmitivity")==0) return HydrologydcEplTransmitivityEnum; 124 else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum; 125 else if (strcmp(name,"HydrologydcEplConductivity")==0) return HydrologydcEplConductivityEnum; 125 126 else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum; 126 127 else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; … … 136 137 else if (strcmp(name,"WaterTransfer")==0) return WaterTransferEnum; 137 138 else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum; 138 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum; 142 if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 143 else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum; 143 144 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 144 145 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; … … 259 260 else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum; 260 261 else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum; 261 else if (strcmp(name,"Surface")==0) return SurfaceEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum; 265 if (strcmp(name,"Surface")==0) return SurfaceEnum; 266 else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum; 266 267 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 267 268 else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum; … … 382 383 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 383 384 else if (strcmp(name,"Element")==0) return ElementEnum; 384 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"FileParam")==0) return FileParamEnum; 388 if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 389 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 389 390 else if (strcmp(name,"Input")==0) return InputEnum; 390 391 else if (strcmp(name,"IntInput")==0) return IntInputEnum; … … 505 506 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; 506 507 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 507 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 511 if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 512 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 512 513 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 513 514 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r16592 r16638 129 129 femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum); 130 130 131 /*Reset constraint on the ZigZag Lock*/ 132 ResetConstraintsx(femmodel); 131 133 /*Iteration on the EPL layer*/ 132 134 eplconverged = false; 133 135 for(;;){ 136 femmodel->HydrologyEPLThicknessx(); 134 137 femmodel->HydrologyTransferx(); 135 138 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel); -
issm/trunk-jpl/src/m/classes/hydrologydc.m
r16600 r16638 27 27 epl_porosity = 0; 28 28 epl_thickness = 0; 29 epl_ transmitivity= 0;29 epl_conductivity = 0; 30 30 end 31 31 methods … … 61 61 obj.epl_porosity = 0.4; 62 62 obj.epl_thickness = 1.0; 63 obj.epl_ transmitivity= 8.0e-02;63 obj.epl_conductivity = 8.0e-02; 64 64 65 65 end … … 97 97 md = checkfield(md,'hydrology.epl_porosity','>',0,'numel',1); 98 98 md = checkfield(md,'hydrology.epl_thickness','>',0,'numel',1); 99 md = checkfield(md,'hydrology.epl_ transmitivity','>',0,'numel',1);99 md = checkfield(md,'hydrology.epl_conductivity','>',0,'numel',1); 100 100 end 101 101 end … … 137 137 fielddisplay(obj,'epl_compressibility','epl compressibility [Pa^-1]'); 138 138 fielddisplay(obj,'epl_porosity','epl [dimensionless]'); 139 fielddisplay(obj,'epl_thickness','epl thickness [m]');140 fielddisplay(obj,'epl_ transmitivity','epl transmitivity [m^2/s]');139 fielddisplay(obj,'epl_thickness','epl initial thickness [m]'); 140 fielddisplay(obj,'epl_conductivity','epl conductivity [m^2/s]'); 141 141 end 142 142 … … 172 172 WriteData(fid,'object',obj,'fieldname','epl_porosity','format','Double'); 173 173 WriteData(fid,'object',obj,'fieldname','epl_thickness','format','Double'); 174 WriteData(fid,'object',obj,'fieldname','epl_transmitivity','format','Double'); 174 %WriteData(fid,'object',obj,'fieldname','epl_transmitivity','format','Double'); 175 WriteData(fid,'object',obj,'fieldname','epl_conductivity','format','Double'); 175 176 end 176 177 end -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r16612 r16638 114 114 def HydrologydcEplPorosityEnum(): return StringToEnum("HydrologydcEplPorosity")[0] 115 115 def HydrologydcEplThicknessEnum(): return StringToEnum("HydrologydcEplThickness")[0] 116 def HydrologydcEplTransmitivityEnum(): return StringToEnum("HydrologydcEplTransmitivity")[0] 116 def HydrologydcEplThicknessOldEnum(): return StringToEnum("HydrologydcEplThicknessOld")[0] 117 def HydrologydcEplConductivityEnum(): return StringToEnum("HydrologydcEplConductivity")[0] 117 118 def HydrologydcIsefficientlayerEnum(): return StringToEnum("HydrologydcIsefficientlayer")[0] 118 119 def HydrologydcSedimentlimitFlagEnum(): return StringToEnum("HydrologydcSedimentlimitFlag")[0]
Note:
See TracChangeset
for help on using the changeset viewer.