Changeset 18041
- Timestamp:
- 05/22/14 08:17:51 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
r18034 r18041 32 32 33 33 /*Retrieve law dependent parameters: */ 34 char* law = NULL;34 int law; 35 35 iomodel->Constant(&law,DamageLawEnum); 36 if ( strcmp(law,"pralong")==0){36 if (law>0){ 37 37 parameters->AddObject(iomodel->CopyConstantObject(DamageC1Enum)); 38 38 parameters->AddObject(iomodel->CopyConstantObject(DamageC2Enum)); … … 43 43 parameters->AddObject(iomodel->CopyConstantObject(DamageEquivStressEnum)); 44 44 } 45 xDelete<char>(law);46 45 47 46 }/*}}}*/ … … 445 444 IssmDouble J2s,Chi,Psi,PosPsi,NegPsi; 446 445 IssmDouble damage,tau_xx,tau_xy,tau_yy; 447 int equivstress,domaintype ;446 int equivstress,domaintype,damagelaw; 448 447 449 448 /*Fetch number of vertices and allocate output*/ … … 458 457 element->FindParam(&stress_threshold,DamageStressThresholdEnum); 459 458 element->FindParam(&domaintype,DomainTypeEnum); 459 element->FindParam(&damagelaw,DamageLawEnum); 460 460 461 461 /*Compute stress tensor: */ … … 504 504 } 505 505 Psi=Chi-stress_threshold; 506 PosPsi=max(Psi,0.);507 506 NegPsi=max(-Chi,0.); /* healing only for compressive stresses */ 508 507 509 f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1.-damage),-c3); 508 if(damagelaw==1){ 509 PosPsi=max(Psi,0.); 510 f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3); 511 } 512 else if(damagelaw==2){ 513 PosPsi=max(Psi,1.); 514 f[i]= c1*(pow(log10(PosPsi),c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3); 515 } 516 else _error_("damage law not supported"); 510 517 } 511 518
Note:
See TracChangeset
for help on using the changeset viewer.