Changeset 16162
- Timestamp:
- 09/17/13 18:44:22 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 10 added
- 8 deleted
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16158 r16162 1448 1448 1449 1449 /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */ 1450 if (enum_type==MaterialsRheologyBbarEnum || enum_type== MaterialsDamageDbarEnum)1450 if (enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum) 1451 1451 input=this->material->inputs->GetInput(enum_type); 1452 1452 else … … 1564 1564 break; 1565 1565 case MaterialsRheologyBbarEnum: 1566 case MaterialsDamageDbarEnum:1566 case DamageDbarEnum: 1567 1567 /*Material will take care of it*/ break; 1568 1568 default: … … 1779 1779 } 1780 1780 /*update input*/ 1781 if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name== MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){1781 if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){ 1782 1782 material->inputs->AddInput(new TriaInput(name,values,P1Enum)); 1783 1783 } … … 1793 1793 } 1794 1794 /*update input*/ 1795 if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name== MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){1795 if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){ 1796 1796 material->inputs->AddInput(new TriaInput(name,values,P1Enum)); 1797 1797 } … … 1954 1954 name==FrictionCoefficientEnum || 1955 1955 name==MaterialsRheologyBbarEnum || 1956 name== MaterialsDamageDbarEnum ||1956 name==DamageDbarEnum || 1957 1957 name==GradientEnum || 1958 1958 name==OldGradientEnum || … … 3718 3718 for(int i=0;i<num_controls;i++){ 3719 3719 3720 if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]== MaterialsDamageDbarEnum){3720 if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]==DamageDbarEnum){ 3721 3721 input=(Input*)material->inputs->GetInput(control_type[i]); _assert_(input); 3722 3722 } … … 3745 3745 Input* input=NULL; 3746 3746 3747 if(enum_type==MaterialsRheologyBbarEnum || enum_type== MaterialsDamageDbarEnum){3747 if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){ 3748 3748 input=(Input*)material->inputs->GetInput(enum_type); 3749 3749 } … … 3763 3763 Input* input=NULL; 3764 3764 3765 if(enum_type==MaterialsRheologyBbarEnum || enum_type== MaterialsDamageDbarEnum){3765 if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){ 3766 3766 input=(Input*)material->inputs->GetInput(enum_type); 3767 3767 } … … 3782 3782 Input* input=NULL; 3783 3783 3784 if(enum_type==MaterialsRheologyBbarEnum || enum_type== MaterialsDamageDbarEnum){3784 if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){ 3785 3785 input=(Input*)material->inputs->GetInput(enum_type); 3786 3786 } … … 3813 3813 GradjBSSA(gradient,control_index); 3814 3814 break; 3815 case MaterialsDamageDbarEnum:3815 case DamageDbarEnum: 3816 3816 GradjDSSA(gradient,control_index); 3817 3817 break; … … 3987 3987 Input* adjointx_input=inputs->GetInput(AdjointxEnum); _assert_(adjointx_input); 3988 3988 Input* adjointy_input=inputs->GetInput(AdjointyEnum); _assert_(adjointy_input); 3989 Input* rheologyd_input=material->inputs->GetInput( MaterialsDamageDbarEnum); _assert_(rheologyd_input);3989 Input* rheologyd_input=material->inputs->GetInput(DamageDbarEnum); _assert_(rheologyd_input); 3990 3990 3991 3991 /* Start looping on the number of gaussian points: */ … … 5367 5367 5368 5368 /*Get input (either in element or material)*/ 5369 if(control_enum==MaterialsRheologyBbarEnum || control_enum== MaterialsDamageDbarEnum){5369 if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){ 5370 5370 input=(Input*)material->inputs->GetInput(control_enum); _assert_(input); 5371 5371 } … … 5402 5402 new_input = new TriaInput(control_enum,values,P1Enum); 5403 5403 5404 if(control_enum==MaterialsRheologyBbarEnum || control_enum== MaterialsDamageDbarEnum){5404 if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){ 5405 5405 input=(Input*)material->inputs->GetInput(control_enum); _assert_(input); 5406 5406 } -
issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp
r16148 r16162 167 167 IssmDouble D; 168 168 169 inputs->GetInputAverage(&D, MaterialsDamageDEnum);169 inputs->GetInputAverage(&D,DamageDEnum); 170 170 return D; 171 171 } … … 177 177 IssmDouble D; 178 178 179 inputs->GetInputAverage(&D, MaterialsDamageDEnum);179 inputs->GetInputAverage(&D,DamageDEnum); 180 180 return 1/(1-D); 181 181 } … … 186 186 /*Output*/ 187 187 IssmDouble Dbar; 188 inputs->GetInputAverage(&Dbar, MaterialsDamageDbarEnum);188 inputs->GetInputAverage(&Dbar,DamageDbarEnum); 189 189 return 1/(1-Dbar); 190 190 } … … 195 195 /*Output*/ 196 196 IssmDouble Dbar; 197 inputs->GetInputAverage(&Dbar, MaterialsDamageDbarEnum);197 inputs->GetInputAverage(&Dbar,DamageDbarEnum); 198 198 return Dbar; 199 199 } … … 798 798 799 799 /*Get D*/ 800 if (iomodel->Data( MaterialsDamageDEnum)) {801 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data( MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];802 this->inputs->AddInput(new TriaInput( MaterialsDamageDbarEnum,nodeinputs,P1Enum));800 if (iomodel->Data(DamageDEnum)) { 801 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1]; 802 this->inputs->AddInput(new TriaInput(DamageDbarEnum,nodeinputs,P1Enum)); 803 803 } 804 804 … … 817 817 } 818 818 break; 819 case MaterialsDamageDbarEnum:820 if (iomodel->Data( MaterialsDamageDEnum)){821 _assert_(iomodel->Data( MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));822 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data( MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];819 case DamageDbarEnum: 820 if (iomodel->Data(DamageDEnum)){ 821 _assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 822 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1]; 823 823 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 824 824 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 825 this->inputs->AddInput(new ControlInput( MaterialsDamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));825 this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 826 826 } 827 827 break; … … 856 856 857 857 /*Get D*/ 858 if (iomodel->Data( MaterialsDamageDEnum)) {859 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data( MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];860 this->inputs->AddInput(new PentaInput( MaterialsDamageDEnum,nodeinputs,P1Enum));858 if (iomodel->Data(DamageDEnum)) { 859 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1]; 860 this->inputs->AddInput(new PentaInput(DamageDEnum,nodeinputs,P1Enum)); 861 861 } 862 862 … … 875 875 } 876 876 break; 877 case MaterialsDamageDbarEnum:878 if (iomodel->Data( MaterialsDamageDEnum)){879 _assert_(iomodel->Data( MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));880 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data( MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];877 case DamageDbarEnum: 878 if (iomodel->Data(DamageDEnum)){ 879 _assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 880 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1]; 881 881 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 882 882 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 883 this->inputs->AddInput(new ControlInput( MaterialsDamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));883 this->inputs->AddInput(new ControlInput(DamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 884 884 } 885 885 break; … … 903 903 name==MaterialsRheologyBbarEnum || 904 904 name==MaterialsRheologyNEnum || 905 name== MaterialsDamageDEnum ||906 name== MaterialsDamageDbarEnum905 name==DamageDEnum || 906 name==DamageDbarEnum 907 907 ){ 908 908 return true; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r16148 r16162 40 40 case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break; 41 41 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 42 case MaterialsDamageDbarEnum: iomodel->FetchData(1,MaterialsDamageDEnum); break;42 case DamageDbarEnum: iomodel->FetchData(1,DamageDEnum); break; 43 43 default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 44 44 } … … 59 59 60 60 /*Free data: */ 61 iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum, MaterialsDamageDEnum);61 iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,DamageDEnum); 62 62 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r16148 r16162 64 64 break; 65 65 case MatdamageiceEnum: 66 iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum, MaterialsDamageDEnum);66 iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum); 67 67 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matdamageice(i+1,i,iomodel)); 68 68 break; … … 73 73 /*Free data: */ 74 74 iomodel->DeleteData(8,MeshUpperelementsEnum,MeshLowerelementsEnum, 75 MaterialsRheologyBEnum,MaterialsRheologyNEnum, MaterialsDamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum,75 MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum, 76 76 InversionMaxParametersEnum); 77 77 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp
r16148 r16162 102 102 iomodel->FetchDataToInput(elements,LoadingforceYEnum); 103 103 if(materials_type==MatdamageiceEnum){ 104 iomodel->FetchDataToInput(elements, MaterialsDamageDEnum);104 iomodel->FetchDataToInput(elements,DamageDEnum); 105 105 } 106 106 if(iomodel->dim==3){ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r16157 r16162 154 154 MaterialsRheologyZEnum, 155 155 MaterialsRheologyZbarEnum, 156 MaterialsDamageDEnum, 157 MaterialsDamageDbarEnum, 158 MaterialsDamageLawEnum, 159 MaterialsDamageC1Enum, 160 MaterialsDamageC2Enum, 161 MaterialsDamageC3Enum, 162 MaterialsDamageC4Enum, 163 MaterialsDamageStressThresholdEnum, 156 DamageDEnum, 157 DamageDbarEnum, 158 DamageIsdamageEnum, 159 DamageLawEnum, 160 DamageC1Enum, 161 DamageC2Enum, 162 DamageC3Enum, 163 DamageC4Enum, 164 DamageStressThresholdEnum, 164 165 MaterialsRhoIceEnum, 165 166 MaterialsRhoWaterEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r16157 r16162 162 162 case MaterialsRheologyZEnum : return "MaterialsRheologyZ"; 163 163 case MaterialsRheologyZbarEnum : return "MaterialsRheologyZbar"; 164 case MaterialsDamageDEnum : return "MaterialsDamageD"; 165 case MaterialsDamageDbarEnum : return "MaterialsDamageDbar"; 166 case MaterialsDamageLawEnum : return "MaterialsDamageLaw"; 167 case MaterialsDamageC1Enum : return "MaterialsDamageC1"; 168 case MaterialsDamageC2Enum : return "MaterialsDamageC2"; 169 case MaterialsDamageC3Enum : return "MaterialsDamageC3"; 170 case MaterialsDamageC4Enum : return "MaterialsDamageC4"; 171 case MaterialsDamageStressThresholdEnum : return "MaterialsDamageStressThreshold"; 164 case DamageDEnum : return "DamageD"; 165 case DamageDbarEnum : return "DamageDbar"; 166 case DamageIsdamageEnum : return "DamageIsdamage"; 167 case DamageLawEnum : return "DamageLaw"; 168 case DamageC1Enum : return "DamageC1"; 169 case DamageC2Enum : return "DamageC2"; 170 case DamageC3Enum : return "DamageC3"; 171 case DamageC4Enum : return "DamageC4"; 172 case DamageStressThresholdEnum : return "DamageStressThreshold"; 172 173 case MaterialsRhoIceEnum : return "MaterialsRhoIce"; 173 174 case MaterialsRhoWaterEnum : return "MaterialsRhoWater"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r16157 r16162 165 165 else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum; 166 166 else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum; 167 else if (strcmp(name,"MaterialsDamageD")==0) return MaterialsDamageDEnum; 168 else if (strcmp(name,"MaterialsDamageDbar")==0) return MaterialsDamageDbarEnum; 169 else if (strcmp(name,"MaterialsDamageLaw")==0) return MaterialsDamageLawEnum; 170 else if (strcmp(name,"MaterialsDamageC1")==0) return MaterialsDamageC1Enum; 171 else if (strcmp(name,"MaterialsDamageC2")==0) return MaterialsDamageC2Enum; 172 else if (strcmp(name,"MaterialsDamageC3")==0) return MaterialsDamageC3Enum; 173 else if (strcmp(name,"MaterialsDamageC4")==0) return MaterialsDamageC4Enum; 174 else if (strcmp(name,"MaterialsDamageStressThreshold")==0) return MaterialsDamageStressThresholdEnum; 167 else if (strcmp(name,"DamageD")==0) return DamageDEnum; 168 else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum; 169 else if (strcmp(name,"DamageIsdamage")==0) return DamageIsdamageEnum; 170 else if (strcmp(name,"DamageLaw")==0) return DamageLawEnum; 171 else if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 172 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum; 173 else if (strcmp(name,"DamageC3")==0) return DamageC3Enum; 174 else if (strcmp(name,"DamageC4")==0) return DamageC4Enum; 175 else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum; 175 176 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum; 176 177 else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum; … … 259 260 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum; 260 261 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum; 261 else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum; 265 if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum; 266 else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum; 266 267 else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum; 267 268 else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum; … … 382 383 else if (strcmp(name,"Node")==0) return NodeEnum; 383 384 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 384 else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"Param")==0) return ParamEnum; 388 if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum; 389 else if (strcmp(name,"Param")==0) return ParamEnum; 389 390 else if (strcmp(name,"L1L2IceFront")==0) return L1L2IceFrontEnum; 390 391 else if (strcmp(name,"HOIceFront")==0) return HOIceFrontEnum; … … 505 506 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 506 507 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 507 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 511 if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 512 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 512 513 else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 513 514 else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum; -
issm/trunk-jpl/src/m/classes/damage.m
r16160 r16162 8 8 % {{{ 9 9 %damage 10 isdamage 10 isdamage = NaN; 11 11 D = NaN; 12 12 law = ''; … … 56 56 function md = checkconsistency(obj,md,solution,analyses) % {{{ 57 57 58 md = checkfield(md,'materials.D','>=0',0,'size',[md.mesh.numberofvertices 1]); 59 md = checkfield(md,'materials.law','values',{'undamaged','pralong'}); 58 if obj.isdamage, 59 md = checkfield(md,'damage.D','>=0',0,'size',[md.mesh.numberofvertices 1]); 60 md = checkfield(md,'damage.law','values',{'undamaged','pralong'}); 61 end 60 62 if strcmpi(obj.law,'pralong'), 61 md = checkfield(md,' materials.c1','>=',0);62 md = checkfield(md,' materials.c2','>=',0);63 md = checkfield(md,' materials.c3','>=',0);64 md = checkfield(md,' materials.c4','>=',0);65 md = checkfield(md,' materials.stress_threshold','>=',0);63 md = checkfield(md,'damage.c1','>=',0); 64 md = checkfield(md,'damage.c2','>=',0); 65 md = checkfield(md,'damage.c3','>=',0); 66 md = checkfield(md,'damage.c4','>=',0); 67 md = checkfield(md,'damage.stress_threshold','>=',0); 66 68 end 67 69 … … 82 84 end % }}} 83 85 function marshall(obj,md,fid) % {{{ 84 85 WriteData(fid,'object',obj,'class','materials','fieldname','D','format','DoubleMat','mattype',1); 86 WriteData(fid,'object',obj,'class','materials','fieldname','law','format','String'); 86 87 WriteData(fid,'object',obj,'class','damage','fieldname','isdamage','format','DoubleMat','mattype',1); 88 if obj.isdamage, 89 WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1); 90 WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String'); 91 end 87 92 if strcmpi(obj.law,'pralong'), 88 WriteData(fid,'object',obj,'class',' materials','fieldname','c1','format','Double');89 WriteData(fid,'object',obj,'class',' materials','fieldname','c2','format','Double');90 WriteData(fid,'object',obj,'class',' materials','fieldname','c3','format','Double');91 WriteData(fid,'object',obj,'class',' materials','fieldname','c4','format','Double');92 WriteData(fid,'object',obj,'class',' materials','fieldname','stress_threshold','format','Double');93 WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double'); 94 WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double'); 95 WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double'); 96 WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double'); 97 WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double'); 93 98 end 94 99 -
issm/trunk-jpl/src/m/classes/matdamageice.m
r16160 r16162 122 122 md = checkfield(md,'materials.rheology_law','values',{'None' 'Paterson' 'Arrhenius' 'LliboutryDuval'}); 123 123 124 md = checkfield(md,' materials.damage_D','>',0,'size',[md.mesh.numberofvertices 1]);125 md = checkfield(md,' materials.damage_law','values',{'initial'});124 md = checkfield(md,'damage.D','>',0,'size',[md.mesh.numberofvertices 1]); 125 md = checkfield(md,'damage.law','values',{'undamaged' 'pralong'}); 126 126 if strcmpi(obj.damage_law,'initial'), 127 md = checkfield(md,' materials.damage_c1','>=',0);128 md = checkfield(md,' materials.damage_c2','>=',0);129 md = checkfield(md,' materials.damage_c3','>=',0);130 md = checkfield(md,' materials.damage_c4','>=',0);131 md = checkfield(md,' materials.damage_stress_threshold','>=',0);127 md = checkfield(md,'damage.c1','>=',0); 128 md = checkfield(md,'damage.c2','>=',0); 129 md = checkfield(md,'damage.c3','>=',0); 130 md = checkfield(md,'damage.c4','>=',0); 131 md = checkfield(md,'damage.stress_threshold','>=',0); 132 132 end 133 133 … … 161 161 fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]'); 162 162 fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]'); 163 fielddisplay(obj,' damage_D','damage tensor (scalar)');164 fielddisplay(obj,' damage_law','damage law (string) from {''initial''}');163 fielddisplay(obj,'D','damage tensor (scalar)'); 164 fielddisplay(obj,'law','damage law (string) from {''initial''}'); 165 165 if strcmpi(obj.damage_law,'initial'), 166 fielddisplay(obj,' damage_c1','damage parameter 1');167 fielddisplay(obj,' damage_c2','damage parameter 2');168 fielddisplay(obj,' damage_c3','damage parameter 3');169 fielddisplay(obj,' damage_c4','damage parameter 4');170 fielddisplay(obj,' damage_stress_threshold','damage stress threshold [Pa]');166 fielddisplay(obj,'c1','damage parameter 1'); 167 fielddisplay(obj,'c2','damage parameter 2'); 168 fielddisplay(obj,'c3','damage parameter 3'); 169 fielddisplay(obj,'c4','damage parameter 4'); 170 fielddisplay(obj,'stress_threshold','damage stress threshold [Pa]'); 171 171 end 172 172 … … 195 195 196 196 %damage: 197 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_D','format','DoubleMat','mattype',1);198 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_law','format','String');199 if strcmpi(obj.damage_law,' initial'),200 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_c1','format','Double');201 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_c2','format','Double');202 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_c3','format','Double');203 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_c4','format','Double');204 WriteData(fid,'object',obj,'class',' materials','fieldname','damage_stress_threshold','format','Double');197 WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1); 198 WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String'); 199 if strcmpi(obj.damage_law,'pralong'), 200 WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double'); 201 WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double'); 202 WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double'); 203 WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double'); 204 WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double'); 205 205 end 206 206 -
issm/trunk-jpl/src/m/classes/matdamageice.py
r16157 r16162 183 183 WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.); 184 184 185 WriteData(fid,'object',self,'class',' materials','fieldname','damage_D','format','DoubleMat','mattype',1)186 WriteData(fid,'object',self,'class',' materials','fieldname','damage_law','format','String')185 WriteData(fid,'object',self,'class','damage','fieldname','D','format','DoubleMat','mattype',1) 186 WriteData(fid,'object',self,'class','damage','fieldname','law','format','String') 187 187 if self.damage_law=='initial': 188 WriteData(fid,'object',self,'class',' materials','fieldname','damage_c1','format','Double')189 WriteData(fid,'object',self,'class',' materials','fieldname','damage_c2','format','Double')190 WriteData(fid,'object',self,'class',' materials','fieldname','damage_c3','format','Double')191 WriteData(fid,'object',self,'class',' materials','fieldname','damage_c4','format','Double')192 WriteData(fid,'object',self,'class',' materials','fieldname','damage_stress_threshold','format','Double')188 WriteData(fid,'object',self,'class','damage','fieldname','c1','format','Double') 189 WriteData(fid,'object',self,'class','damage','fieldname','c2','format','Double') 190 WriteData(fid,'object',self,'class','damage','fieldname','c3','format','Double') 191 WriteData(fid,'object',self,'class','damage','fieldname','c4','format','Double') 192 WriteData(fid,'object',self,'class','damage','fieldname','stress_threshold','format','Double') 193 193 # }}} -
issm/trunk-jpl/src/m/classes/model/model.py
r15987 r16162 10 10 from basalforcings import basalforcings 11 11 from matice import matice 12 from damage import damage 12 13 from friction import friction 13 14 from flowequation import flowequation … … 58 59 self.basalforcings = basalforcings() 59 60 self.materials = matice() 61 self.damage = damage() 60 62 self.friction = friction() 61 63 self.flowequation = flowequation() … … 99 101 'basalforcings',\ 100 102 'materials',\ 103 'damage',\ 101 104 'friction',\ 102 105 'flowequation',\ … … 136 139 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings")) 137 140 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties")) 141 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws")) 138 142 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties")) 139 143 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations")) … … 627 631 md.materials.rheology_n=project3d(md,'vector',md.materials.rheology_n,'type','element') 628 632 633 #damage 634 md.damage.D=project3d(md,'vector',md.damage.D,'type','node') 629 635 #parameters 630 636 md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node') -
issm/trunk-jpl/src/m/dev/devpath.py
r16119 r16162 24 24 from plotmodel import plotmodel 25 25 26 c = get_ipython().config 27 c.InteractiveShellApp.exec_lines = [] 28 c.InteractiveShellApp.exec_lines.append('%load_ext autoreload') 29 c.InteractiveShellApp.exec_lines.append('%autoreload 2') 30 c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ') 31 26 32 print("\n ISSM development path correctly loaded\n\n") -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r16157 r16162 154 154 def MaterialsRheologyZEnum(): return StringToEnum("MaterialsRheologyZ")[0] 155 155 def MaterialsRheologyZbarEnum(): return StringToEnum("MaterialsRheologyZbar")[0] 156 def MaterialsDamageDEnum(): return StringToEnum("MaterialsDamageD")[0] 157 def MaterialsDamageDbarEnum(): return StringToEnum("MaterialsDamageDbar")[0] 158 def MaterialsDamageLawEnum(): return StringToEnum("MaterialsDamageLaw")[0] 159 def MaterialsDamageC1Enum(): return StringToEnum("MaterialsDamageC1")[0] 160 def MaterialsDamageC2Enum(): return StringToEnum("MaterialsDamageC2")[0] 161 def MaterialsDamageC3Enum(): return StringToEnum("MaterialsDamageC3")[0] 162 def MaterialsDamageC4Enum(): return StringToEnum("MaterialsDamageC4")[0] 163 def MaterialsDamageStressThresholdEnum(): return StringToEnum("MaterialsDamageStressThreshold")[0] 156 def DamageDEnum(): return StringToEnum("DamageD")[0] 157 def DamageDbarEnum(): return StringToEnum("DamageDbar")[0] 158 def DamageIsdamageEnum(): return StringToEnum("DamageIsdamage")[0] 159 def DamageLawEnum(): return StringToEnum("DamageLaw")[0] 160 def DamageC1Enum(): return StringToEnum("DamageC1")[0] 161 def DamageC2Enum(): return StringToEnum("DamageC2")[0] 162 def DamageC3Enum(): return StringToEnum("DamageC3")[0] 163 def DamageC4Enum(): return StringToEnum("DamageC4")[0] 164 def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0] 164 165 def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0] 165 166 def MaterialsRhoWaterEnum(): return StringToEnum("MaterialsRhoWater")[0] -
issm/trunk-jpl/src/m/exp/expwrite.m
r14295 r16162 41 41 fprintf(fid,'%s\n','## Icon:0'); 42 42 fprintf(fid,'%s\n','# Points Count Value'); 43 fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]); 43 if isfield(a,'density'), 44 if ~isempty(a(n).density), 45 fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]); 46 else 47 fprintf(fid,'%i %f\n',[length(a(n).x) 1.]); 48 end 49 else 50 fprintf(fid,'%i %f\n',[length(a(n).x) 1.]); 51 end 44 52 fprintf(fid,'%s\n','# X pos Y pos'); 45 53 fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]'); -
issm/trunk-jpl/src/m/plot/applyoptions.py
r16095 r16162 123 123 #view 124 124 125 #axis 125 #axis {{{ 126 if options.exist('axis'): 127 if options.getfieldvalue('axis',True)=='off': 128 p.gca().ticklabel_format(style='plain') 129 p.setp(p.gca().get_xticklabels(), visible=False) 130 p.setp(p.gca().get_yticklabels(), visible=False) 131 # }}} 126 132 127 133 #box … … 164 170 165 171 #colorbar {{{ 166 if options.getfieldvalue('colorbar','off')==1: 167 cb=p.colorbar() 172 if options.getfieldvalue('colorbar',1)==1: 173 if options.exist('clim'): 174 # build custom colorbar (does not yet allow customizing the location) 175 fig = p.gcf() 176 ax = p.gca() 177 divider = make_axes_locatable(ax) 178 cax = divider.new_horizontal("5%", pad=0.05, axes_class=maxes.Axes) 179 fig.add_axes(cax) 180 cmap = mpl.cm.jet 181 norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1]) 182 cb = mpl.colorbar.ColorbarBase(cax, cmap=cmap, norm=norm) 183 else: 184 cb=p.colorbar() 168 185 cb.locator=MaxNLocator(nbins=5) # default 5 ticks 169 186 cb.update_ticks()
Note:
See TracChangeset
for help on using the changeset viewer.