Changeset 24146
- Timestamp:
- 09/16/19 00:19:47 (6 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
r24091 r24146 60 60 iomodel->DeleteData(1,"md.flowequation.element_equation"); 61 61 62 /*First, reset all F to 0 */ 63 for(int i=0;i<elements->Size();i++){ 64 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 65 int numvertices = element->GetNumberOfVertices(); 66 IssmDouble* values = xNewZeroInit<IssmDouble>(numvertices); 67 element->AddInput(DamageFEnum,values,P1Enum); 68 xDelete<IssmDouble>(values); 69 } 70 71 62 72 /*What input do I need to run my damage evolution model?*/ 63 73 iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum); … … 97 107 parameters->AddObject(iomodel->CopyConstantObject("md.damage.c2",DamageC2Enum)); 98 108 parameters->AddObject(iomodel->CopyConstantObject("md.damage.c3",DamageC3Enum)); 109 parameters->AddObject(iomodel->CopyConstantObject("md.damage.c4",DamageC4Enum)); 99 110 parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum)); 111 parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_ubound",DamageStressUBoundEnum)); 100 112 parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum)); 101 113 parameters->AddObject(iomodel->CopyConstantObject("md.damage.healing",DamageHealingEnum)); … … 130 142 xDelete<IssmDouble>(f); 131 143 }/*}}}*/ 144 void DamageEvolutionAnalysis::CreateDamageFInputArctan(Element* element){/*{{{*/ 145 IssmDouble c1, c2, stress_threshold, stress_ubound; 146 IssmDouble damage; 147 IssmDouble yts; 148 IssmDouble principalDevStress1, principalDevStress2; 149 IssmDouble tensileStress, compressiveStress; 150 151 int equivstress, domaintype, dim; 152 153 /*Fetch number of vertices and allocate output*/ 154 int numnodes = element->GetNumberOfNodes(); 155 IssmDouble* f = xNew<IssmDouble>(numnodes); 156 157 /*retrieve parameters:*/ 158 element->FindParam(&c1,DamageC1Enum); 159 element->FindParam(&c2,DamageC2Enum); 160 element->FindParam(&yts,ConstantsYtsEnum); 161 element->FindParam(&stress_threshold,DamageStressThresholdEnum); 162 element->FindParam(&stress_ubound,DamageStressUBoundEnum); 163 element->FindParam(&domaintype,DomainTypeEnum); 164 165 /*Get problem dimension*/ 166 switch(domaintype){ 167 case Domain2DhorizontalEnum: dim = 2; break; 168 case Domain3DEnum: dim = 3; break; 169 default: _error_("not implemented"); 170 } 171 /*Compute stress tensor and Stress Max Principal: */ 172 element->ComputeDeviatoricStressTensor(); 173 174 Input* principalDevStress1_input = element->GetInput(DeviatoricStress1Enum); _assert_(principalDevStress1_input); 175 Input* principalDevStress2_input = element->GetInput(DeviatoricStress2Enum); _assert_(principalDevStress2_input); 176 177 Input* damage_input = NULL; 178 if(domaintype==Domain2DhorizontalEnum){ 179 damage_input = element->GetInput(DamageDbarEnum); _assert_(damage_input); 180 } 181 else{ 182 damage_input = element->GetInput(DamageDEnum); _assert_(damage_input); 183 } 184 185 /*Calculate damage evolution source term */ 186 Gauss* gauss=element->NewGauss(); 187 188 /* To keep arctan output (bounded by -pi/2 and pi/2) within the specified boundaries */ 189 c1 /= (PI/2); 190 c2 /= (PI/2); 191 /* To have per second output with per annum parameters */ 192 c1 /= yts; 193 c2 /= yts; 194 195 for (int i=0;i<numnodes;i++){ 196 f[i] = 0; 197 198 gauss->GaussNode(element->GetElementType(),i); 199 200 damage_input->GetInputValue(&damage,gauss); 201 principalDevStress1_input->GetInputValue(&principalDevStress1,gauss); 202 principalDevStress2_input->GetInputValue(&principalDevStress2,gauss); 203 204 tensileStress = sqrt(1.5*(pow(max(principalDevStress1, 0.), 2) + pow(max(principalDevStress2, 0.), 2))); 205 compressiveStress = sqrt(1.5*(pow(min(principalDevStress1, 0.), 2) + pow(min(principalDevStress2, 0.), 2))); 206 207 /* Calculate principal effective stresses */ 208 if(dim==2){ 209 f[i] = 0; 210 if(tensileStress > stress_threshold) 211 f[i] += c1*atan((tensileStress/stress_threshold - 1)/(1-damage)); 212 213 if(compressiveStress < stress_ubound) 214 f[i] += c2*atan((compressiveStress/stress_ubound - 1)/(1-damage)); 215 } 216 else{ 217 _error_("Only 2D is implemented."); 218 } 219 } 220 221 /*Add input*/ 222 element->AddInput(DamageFEnum,f,element->GetElementType()); 223 224 /*Clean up and return*/ 225 xDelete<IssmDouble>(f); 226 delete gauss; 227 }/*}}}*/ 228 132 229 void DamageEvolutionAnalysis::CreateDamageFInputExp(Element* element){/*{{{*/ 133 230 … … 191 288 } 192 289 else f[i]=0; 290 291 /*Edits from MM*/ 292 if(f[i]>10.) f[i]=10.; 293 if(f[i]<-10.) f[i]=-10.; 193 294 } 194 295 … … 358 459 element->GetVerticesCoordinates(&xyz_list); 359 460 element->FindParam(&dt,TimesteppingTimeStepEnum); 461 //printf("dt %f\n", dt); 360 462 element->FindParam(&stabilization,DamageStabilizationEnum); 361 463 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); … … 525 627 this->CreateDamageFInputExp(element); 526 628 break; 629 case 3: 630 this->CreateDamageFInputArctan(element); 631 break; 527 632 default: 528 633 _error_("not implemented yet"); -
issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h
r23585 r24146 23 23 void Core(FemModel* femmodel); 24 24 void CreateDamageFInput(Element* element); 25 void CreateDamageFInputArctan(Element* element); 25 26 void CreateDamageFInputExp(Element* element); 26 27 void CreateDamageFInputPralong(Element* element); -
issm/trunk-jpl/src/c/modules/Damagex/Damagex.cpp
r19388 r24146 24 24 /* Damage calculated using source term in DamageEvolutionAnalysis */ 25 25 break; 26 case 3: 27 if(VerboseModule()) _printf0_(" computing damage using source term in advection scheme\n"); 28 /* Damage calculated using source term in DamageEvolutionAnalysis */ 29 break; 26 30 default: 27 31 _error_("Damage law "<<EnumToStringx(damagelaw)<<" not implemented yet"); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r24145 r24146 109 109 DamageC2Enum, 110 110 DamageC3Enum, 111 DamageC4Enum, 111 112 DamageEnum, 112 113 DamageEquivStressEnum, … … 119 120 DamageStabilizationEnum, 120 121 DamageStressThresholdEnum, 122 DamageStressUBoundEnum, 121 123 DebugProfilingEnum, 122 124 DomainDimensionEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r24145 r24146 117 117 case DamageC2Enum : return "DamageC2"; 118 118 case DamageC3Enum : return "DamageC3"; 119 case DamageC4Enum : return "DamageC4"; 119 120 case DamageEnum : return "Damage"; 120 121 case DamageEquivStressEnum : return "DamageEquivStress"; … … 127 128 case DamageStabilizationEnum : return "DamageStabilization"; 128 129 case DamageStressThresholdEnum : return "DamageStressThreshold"; 130 case DamageStressUBoundEnum : return "DamageStressUBound"; 129 131 case DebugProfilingEnum : return "DebugProfiling"; 130 132 case DomainDimensionEnum : return "DomainDimension"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r24145 r24146 117 117 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum; 118 118 else if (strcmp(name,"DamageC3")==0) return DamageC3Enum; 119 else if (strcmp(name,"DamageC4")==0) return DamageC4Enum; 119 120 else if (strcmp(name,"Damage")==0) return DamageEnum; 120 121 else if (strcmp(name,"DamageEquivStress")==0) return DamageEquivStressEnum; … … 127 128 else if (strcmp(name,"DamageStabilization")==0) return DamageStabilizationEnum; 128 129 else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum; 130 else if (strcmp(name,"DamageStressUBound")==0) return DamageStressUBoundEnum; 129 131 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; 130 132 else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum; … … 135 137 else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum; 136 138 else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum; 137 else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;138 else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum; 142 if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum; 143 else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum; 144 else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum; 143 145 else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum; 144 146 else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum; … … 258 260 else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum; 259 261 else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum; 260 else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;261 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum; 265 if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum; 266 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; 267 else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum; 266 268 else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum; 267 269 else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum; … … 381 383 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 382 384 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; 383 else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;384 else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum; 388 if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum; 389 else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum; 390 else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum; 389 391 else if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum; 390 392 else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum; … … 504 506 else if (strcmp(name,"DamageD")==0) return DamageDEnum; 505 507 else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum; 506 else if (strcmp(name,"DamageF")==0) return DamageFEnum;507 else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 511 if (strcmp(name,"DamageF")==0) return DamageFEnum; 512 else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum; 513 else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 512 514 else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum; 513 515 else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; … … 627 629 else if (strcmp(name,"MaterialsRheologyEc")==0) return MaterialsRheologyEcEnum; 628 630 else if (strcmp(name,"MaterialsRheologyEcbar")==0) return MaterialsRheologyEcbarEnum; 629 else if (strcmp(name,"MaterialsRheologyEs")==0) return MaterialsRheologyEsEnum;630 else if (strcmp(name,"MaterialsRheologyEsbar")==0) return MaterialsRheologyEsbarEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 634 if (strcmp(name,"MaterialsRheologyEs")==0) return MaterialsRheologyEsEnum; 635 else if (strcmp(name,"MaterialsRheologyEsbar")==0) return MaterialsRheologyEsbarEnum; 636 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 635 637 else if (strcmp(name,"MeshScaleFactor")==0) return MeshScaleFactorEnum; 636 638 else if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum; … … 750 752 else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum; 751 753 else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum; 752 else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;753 else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 757 if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 758 else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; 759 else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 758 760 else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum; 759 761 else if (strcmp(name,"SmbTz")==0) return SmbTzEnum; … … 873 875 else if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum; 874 876 else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum; 875 else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum;876 else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum; 880 if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum; 881 else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum; 882 else if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum; 881 883 else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum; 882 884 else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum; … … 996 998 else if (strcmp(name,"Dense")==0) return DenseEnum; 997 999 else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum; 998 else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;999 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Divergence")==0) return DivergenceEnum; 1003 if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; 1004 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum; 1005 else if (strcmp(name,"Divergence")==0) return DivergenceEnum; 1004 1006 else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum; 1005 1007 else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum; … … 1119 1121 else if (strcmp(name,"Masscon")==0) return MassconEnum; 1120 1122 else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum; 1121 else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;1122 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 1126 if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum; 1127 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 1128 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 1127 1129 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 1128 1130 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum; … … 1242 1244 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 1243 1245 else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 1244 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;1245 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1249 if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1250 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum; 1251 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1250 1252 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 1251 1253 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; -
issm/trunk-jpl/src/m/classes/damage.m
r21049 r24146 20 20 %general parameters for evolution law: 21 21 stress_threshold = 0; 22 stress_ubound = 0; 22 23 kappa = 0; 23 24 c1 = 0; … … 88 89 md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]); 89 90 if self.isdamage, 90 md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2 ]);91 md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3]); 91 92 md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices 1]); 92 93 md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1); … … 96 97 md = checkfield(md,'fieldname','damage.elementinterp','values',{'P1','P2'}); 97 98 md = checkfield(md,'fieldname','damage.stress_threshold','>=',0); 99 md = checkfield(md,'fieldname','damage.stress_ubound','>=',0); 98 100 md = checkfield(md,'fieldname','damage.kappa','>',1); 99 101 md = checkfield(md,'fieldname','damage.healing','>=',0); … … 131 133 fielddisplay(self,'maxiter','maximum number of non linear iterations'); 132 134 fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}'); 133 fielddisplay(self,'stress_threshold','stress threshold for damage initiation [Pa]'); 135 fielddisplay(self,'stress_threshold','stress threshold for damage initiation (Pa)'); 136 fielddisplay(self,'stress_ubound','stress upper bound for damage healing (Pa), arctan law'); 134 137 fielddisplay(self,'kappa','ductility parameter for stress softening and damage'); 135 138 fielddisplay(self,'c1','damage parameter 1'); … … 156 159 WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String'); 157 160 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double'); 161 WriteData(fid,prefix,'object',self,'fieldname','stress_ubound','format','Double'); 158 162 WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double'); 159 163 WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double'); -
issm/trunk-jpl/src/m/classes/damage.py
r23716 r24146 27 27 #general parameters for evolution law: 28 28 self.stress_threshold = float('NaN') 29 self.stress_ubound = float('NaN') 29 30 self.kappa = float('NaN') 30 31 self.c1 = float('NaN') … … 53 54 s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations") 54 55 s+="%s\n" % fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']") 55 s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]") 56 s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation (Pa)") 57 s+="%s\n" % fielddisplay(self,"stress_ubound","stress upper bound for damage healing (Pa)") 56 58 s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]") 57 59 s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ") … … 123 125 md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2']) 124 126 md = checkfield(md,'fieldname','damage.stress_threshold','>=',0) 127 md = checkfield(md,'fieldname','damage.stress_ubound','>=',0) 125 128 md = checkfield(md,'fieldname','damage.kappa','>',1) 126 129 md = checkfield(md,'fieldname','damage.healing','>=',0) … … 150 153 WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String') 151 154 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double') 155 WriteData(fid,prefix,'object',self,'fieldname','stress_ubound','format','Double') 152 156 WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double') 153 157 WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double')
Note:
See TracChangeset
for help on using the changeset viewer.