Changeset 18043


Ignore:
Timestamp:
05/22/14 08:36:18 (11 years ago)
Author:
cborstad
Message:

CHG: updated damage class for new law format

Location:
issm/trunk-jpl/src/m/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/damage.m

    r18032 r18043  
    99                isdamage            = 0;
    1010                D                   = NaN;
    11                 law                 = '';
     11                law                 = NaN;
    1212                spcdamage           = NaN;
    1313                max_damage          = NaN;
     
    109109                        obj.isdamage=0;
    110110                        obj.D=0;
    111                         obj.law='undamaged';
     111                        obj.law=0;
    112112                       
    113113                        obj.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil
     
    148148                        md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
    149149                        if obj.isdamage,
    150                                 md = checkfield(md,'fieldname','damage.law','values',{'undamaged','pralong'});
     150                                md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
    151151                                md = checkfield(md,'fieldname','damage.D','>=',0,'<=',obj.max_damage,'size',[md.mesh.numberofvertices 1]);
    152152                                md = checkfield(md,'fieldname','damage.spcdamage','forcing',1);
     
    160160                        end
    161161
    162                         if strcmpi(obj.law,'pralong'),
     162                        if (obj.law==1 | obj.law==2),
    163163                                md = checkfield(md,'fieldname','damage.healing','>=',0);
    164164                                md = checkfield(md,'fieldname','damage.c1','>=',0);
     
    169169                                md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
    170170                                md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
    171                         elseif strcmpi(obj.law,'undamaged'),
     171                        elseif (obj.law>0),
    172172                                if (solution==DamageEvolutionSolutionEnum),
    173173                                        error('Invalid evolution law (md.damage.law) for a damage solution');
     
    191191                        fielddisplay(obj,'isdamage','is damage mechanics being used? {true,false}');
    192192                        if obj.isdamage,
    193                                 fielddisplay(obj,'law','damage law (string) from {''undamaged'',''pralong''}');
     193                                fielddisplay(obj,'law','damage law {''0: undamaged'',''1: pralong''}');
    194194                                fielddisplay(obj,'D','damage tensor (scalar)');
    195195                                fielddisplay(obj,'spcdamage','damage constraints (NaN means no constraint)');
     
    204204                        end
    205205
    206                         if strcmpi(obj.law,'pralong'),
     206                        if (obj.law==1 | obj.law==2),
    207207                                fielddisplay(obj,'c1','damage parameter 1');
    208208                                fielddisplay(obj,'c2','damage parameter 2');
     
    220220                        WriteData(fid,'object',obj,'fieldname','isdamage','format','Boolean');
    221221                        if obj.isdamage,
    222                                 WriteData(fid,'object',obj,'fieldname','law','format','String');
     222                                WriteData(fid,'object',obj,'fieldname','law','format','Integer');
    223223                                WriteData(fid,'object',obj,'fieldname','D','format','DoubleMat','mattype',1);
    224224                                WriteData(fid,'object',obj,'fieldname','spcdamage','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
     
    233233                        end
    234234       
    235                         if strcmpi(obj.law,'pralong'),
     235                        if (obj.law==1 | obj.law==2),
    236236                                WriteData(fid,'object',obj,'fieldname','c1','format','Double');
    237237                                WriteData(fid,'object',obj,'fieldname','c2','format','Double');
  • issm/trunk-jpl/src/m/classes/damage.py

    r18031 r18043  
    1919                self.isdamage           = 0.
    2020                self.D                                          = float('NaN')
    21                 self.law                                                = ''
     21                self.law                                                = float('NaN')
    2222                self.spcdamage                          = float('NaN')
    2323                self.max_damage                 = float('NaN')
     
    5353                if self.isdamage:
    5454                        s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
    55                         s+="%s\n" % fielddisplay(self,"law","damage law (string) from ['undamaged','pralong']")
     55                        s+="%s\n" % fielddisplay(self,"law","damage law ['0: undamaged','1: pralong']")
    5656                        s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
    5757                        s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
     
    6464                        s+="%s\n" % fielddisplay(self,"penalty_factor","scaling exponent (default is 3)")
    6565
    66                 if (self.law=='pralong'):
     66                if self.law== 1 or self.law == 2:
    6767                        s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
    6868                        s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
     
    8181                self.isdamage=0
    8282                self.D=0
    83                 self.law='undamaged'
     83                self.law=0
    8484
    8585                self.max_damage=1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil
     
    132132                        md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])
    133133                        md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
    134                         md = checkfield(md,'fieldname','damage.law','values',['undamaged','pralong'])
     134                        md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2])
    135135                        md = checkfield(md,'fieldname','damage.spcdamage','forcing',1)
    136136                        md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2])
     
    141141                        md = checkfield(md,'fieldname','damage.penalty_threshold','>=0',0)
    142142
    143                 if self.law == 'pralong':
     143                if self.law == 1 or self.law == 2:
    144144                        md = checkfield(md,'fieldname','damage.healing','>=',0)
    145145                        md = checkfield(md,'fieldname','damage.c1','>=',0)
     
    151151                        md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
    152152                        md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
    153                 elif m.strcmpi(self.law,'undamaged'):
     153                elif self.law != 0:
    154154                        if (solution==DamageEvolutionSolutionEnum):
    155155                                raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
     
    162162                if self.isdamage:
    163163                        WriteData(fid,'object',self,'fieldname','D','format','DoubleMat','mattype',1)
    164                         WriteData(fid,'object',self,'fieldname','law','format','String')
     164                        WriteData(fid,'object',self,'fieldname','law','format','Integer')
    165165                        WriteData(fid,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1)
    166166                        WriteData(fid,'object',self,'fieldname','max_damage','format','Double')
     
    172172                        WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
    173173
    174                 if self.law=='pralong':
     174                if self.law==1 or self.law==2:
    175175                        WriteData(fid,'object',self,'fieldname','c1','format','Double')
    176176                        WriteData(fid,'object',self,'fieldname','c2','format','Double')
Note: See TracChangeset for help on using the changeset viewer.