Changeset 18043
- Timestamp:
- 05/22/14 08:36:18 (11 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/damage.m
r18032 r18043 9 9 isdamage = 0; 10 10 D = NaN; 11 law = '';11 law = NaN; 12 12 spcdamage = NaN; 13 13 max_damage = NaN; … … 109 109 obj.isdamage=0; 110 110 obj.D=0; 111 obj.law= 'undamaged';111 obj.law=0; 112 112 113 113 obj.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil … … 148 148 md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]); 149 149 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]); 151 151 md = checkfield(md,'fieldname','damage.D','>=',0,'<=',obj.max_damage,'size',[md.mesh.numberofvertices 1]); 152 152 md = checkfield(md,'fieldname','damage.spcdamage','forcing',1); … … 160 160 end 161 161 162 if strcmpi(obj.law,'pralong'),162 if (obj.law==1 | obj.law==2), 163 163 md = checkfield(md,'fieldname','damage.healing','>=',0); 164 164 md = checkfield(md,'fieldname','damage.c1','>=',0); … … 169 169 md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]); 170 170 md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1); 171 elseif strcmpi(obj.law,'undamaged'),171 elseif (obj.law>0), 172 172 if (solution==DamageEvolutionSolutionEnum), 173 173 error('Invalid evolution law (md.damage.law) for a damage solution'); … … 191 191 fielddisplay(obj,'isdamage','is damage mechanics being used? {true,false}'); 192 192 if obj.isdamage, 193 fielddisplay(obj,'law','damage law (string) from {''undamaged'',''pralong''}');193 fielddisplay(obj,'law','damage law {''0: undamaged'',''1: pralong''}'); 194 194 fielddisplay(obj,'D','damage tensor (scalar)'); 195 195 fielddisplay(obj,'spcdamage','damage constraints (NaN means no constraint)'); … … 204 204 end 205 205 206 if strcmpi(obj.law,'pralong'),206 if (obj.law==1 | obj.law==2), 207 207 fielddisplay(obj,'c1','damage parameter 1'); 208 208 fielddisplay(obj,'c2','damage parameter 2'); … … 220 220 WriteData(fid,'object',obj,'fieldname','isdamage','format','Boolean'); 221 221 if obj.isdamage, 222 WriteData(fid,'object',obj,'fieldname','law','format',' String');222 WriteData(fid,'object',obj,'fieldname','law','format','Integer'); 223 223 WriteData(fid,'object',obj,'fieldname','D','format','DoubleMat','mattype',1); 224 224 WriteData(fid,'object',obj,'fieldname','spcdamage','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); … … 233 233 end 234 234 235 if strcmpi(obj.law,'pralong'),235 if (obj.law==1 | obj.law==2), 236 236 WriteData(fid,'object',obj,'fieldname','c1','format','Double'); 237 237 WriteData(fid,'object',obj,'fieldname','c2','format','Double'); -
issm/trunk-jpl/src/m/classes/damage.py
r18031 r18043 19 19 self.isdamage = 0. 20 20 self.D = float('NaN') 21 self.law = ''21 self.law = float('NaN') 22 22 self.spcdamage = float('NaN') 23 23 self.max_damage = float('NaN') … … 53 53 if self.isdamage: 54 54 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']") 56 56 s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)") 57 57 s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)") … … 64 64 s+="%s\n" % fielddisplay(self,"penalty_factor","scaling exponent (default is 3)") 65 65 66 if (self.law=='pralong'):66 if self.law== 1 or self.law == 2: 67 67 s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ") 68 68 s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ") … … 81 81 self.isdamage=0 82 82 self.D=0 83 self.law= 'undamaged'83 self.law=0 84 84 85 85 self.max_damage=1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil … … 132 132 md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices]) 133 133 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]) 135 135 md = checkfield(md,'fieldname','damage.spcdamage','forcing',1) 136 136 md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2]) … … 141 141 md = checkfield(md,'fieldname','damage.penalty_threshold','>=0',0) 142 142 143 if self.law == 'pralong':143 if self.law == 1 or self.law == 2: 144 144 md = checkfield(md,'fieldname','damage.healing','>=',0) 145 145 md = checkfield(md,'fieldname','damage.c1','>=',0) … … 151 151 md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1]) 152 152 md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1) 153 elif m.strcmpi(self.law,'undamaged'):153 elif self.law != 0: 154 154 if (solution==DamageEvolutionSolutionEnum): 155 155 raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution') … … 162 162 if self.isdamage: 163 163 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') 165 165 WriteData(fid,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 166 166 WriteData(fid,'object',self,'fieldname','max_damage','format','Double') … … 172 172 WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double') 173 173 174 if self.law== 'pralong':174 if self.law==1 or self.law==2: 175 175 WriteData(fid,'object',self,'fieldname','c1','format','Double') 176 176 WriteData(fid,'object',self,'fieldname','c2','format','Double')
Note:
See TracChangeset
for help on using the changeset viewer.