Changeset 17396


Ignore:
Timestamp:
03/08/14 15:03:27 (11 years ago)
Author:
cborstad
Message:

CHG: added max principal stress as option for damage equiv_stress

Location:
issm/trunk-jpl/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp

    r17391 r17396  
    441441        /*Intermediaries */
    442442        IssmDouble c1,c2,c3,healing,stress_threshold;
    443         IssmDouble s_xx,s_xy,s_yy;
     443        IssmDouble s_xx,s_xy,s_yy,s1,s2,stmp;
    444444        IssmDouble J2s,Chi,Psi,PosPsi,NegPsi;
    445445        IssmDouble damage,sigma_xx,sigma_xy,sigma_yy;
     
    478478                sigma_xy_input->GetInputValue(&sigma_xy,gauss);
    479479                sigma_yy_input->GetInputValue(&sigma_yy,gauss);
    480 
     480       
     481                /*Calculate effective stress components*/
    481482                s_xx=sigma_xx/(1.-damage);
    482483                s_xy=sigma_xy/(1.-damage);
    483484                s_yy=sigma_yy/(1.-damage);
    484485
     486                /*Calculate principal effective stresses*/
     487                s1=(s_xx+s_yy)/2.+sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
     488                s2=(s_xx+s_yy)/2.-sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
     489                if(fabs(s2)>fabs(s1)){stmp=s2; s2=s1; s1=stmp;}
     490
    485491                if(equivstress==0){ /* von Mises */
    486                         Chi=sqrt(s_xx*s_xx - s_xx*s_yy + s_yy*s_yy + 3*s_xy*s_xy);
     492                        Chi=sqrt(s1*s1-s1*s2+s2*s2);
     493                }
     494                else if(equivstress==1){ /* max principal stress */
     495                        Chi=s1;
    487496                }
    488497                Psi=Chi-stress_threshold;
  • issm/trunk-jpl/src/m/classes/damage.m

    r17392 r17396  
    104104                                md = checkfield(md,'fieldname','damage.c4','>=',0);
    105105                                md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
    106                                 md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0]);
     106                                md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
    107107                                md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
    108108                        elseif strcmpi(obj.law,'undamaged'),
     
    149149                                fielddisplay(obj,'healing','damage healing parameter');
    150150                                fielddisplay(obj,'stress_threshold','damage stress threshold [Pa]');
    151                                 fielddisplay(obj,'equiv_stress','0: von Mises');
     151                                fielddisplay(obj,'equiv_stress','0: von Mises, 1: max principal');
    152152                                fielddisplay(obj,'requested_outputs','additional outputs requested');
    153153                        end
  • issm/trunk-jpl/src/m/classes/damage.py

    r17392 r17396  
    6565                        s+="%s\n" % fielddisplay(self,"stress_threshold","damage stress threshold [Pa]")
    6666                        s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
    67                         s+="%s\n" % fielddisplay(self,"equiv_stresss","0: von Mises")
     67                        s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
    6868                        s+="%s\n" % fielddisplay(self,'requested_outputs','additional outputs requested')
    6969
     
    141141                        md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
    142142                        md = checkfield(md,'fieldname','damage.healing','>=',0)
    143                         md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0])
     143                        md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
    144144                        md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
    145145                elif strcmpi(self.law,'undamaged'):
Note: See TracChangeset for help on using the changeset viewer.