Changeset 16162


Ignore:
Timestamp:
09/17/13 18:44:22 (12 years ago)
Author:
cborstad
Message:

CHG: working toward damage class implementation. As long as md.damage.isdamage flag is set to zero, all NR should ignore damage and run okay

Location:
issm/trunk-jpl/src
Files:
10 added
8 deleted
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r16158 r16162  
    14481448
    14491449        /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
    1450         if (enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum)
     1450        if (enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum)
    14511451         input=this->material->inputs->GetInput(enum_type);
    14521452        else
     
    15641564                                        break;
    15651565                                case MaterialsRheologyBbarEnum:
    1566                                 case MaterialsDamageDbarEnum:
     1566                                case DamageDbarEnum:
    15671567                                        /*Material will take care of it*/ break;
    15681568                                default:
     
    17791779                }
    17801780                /*update input*/
    1781                 if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){
     1781                if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){
    17821782                        material->inputs->AddInput(new TriaInput(name,values,P1Enum));
    17831783                }
     
    17931793                }
    17941794                /*update input*/
    1795                 if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){
     1795                if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){
    17961796                        material->inputs->AddInput(new TriaInput(name,values,P1Enum));
    17971797                }
     
    19541954                                name==FrictionCoefficientEnum ||
    19551955                                name==MaterialsRheologyBbarEnum ||
    1956                                 name==MaterialsDamageDbarEnum ||
     1956                                name==DamageDbarEnum ||
    19571957                                name==GradientEnum ||
    19581958                                name==OldGradientEnum ||
     
    37183718        for(int i=0;i<num_controls;i++){
    37193719
    3720                 if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]==MaterialsDamageDbarEnum){
     3720                if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]==DamageDbarEnum){
    37213721                        input=(Input*)material->inputs->GetInput(control_type[i]); _assert_(input);
    37223722                }
     
    37453745        Input* input=NULL;
    37463746
    3747         if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
     3747        if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
    37483748                input=(Input*)material->inputs->GetInput(enum_type);
    37493749        }
     
    37633763        Input* input=NULL;
    37643764
    3765         if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
     3765        if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
    37663766                input=(Input*)material->inputs->GetInput(enum_type);
    37673767        }
     
    37823782        Input* input=NULL;
    37833783
    3784         if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
     3784        if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
    37853785                input=(Input*)material->inputs->GetInput(enum_type);
    37863786        }
     
    38133813                        GradjBSSA(gradient,control_index);
    38143814                        break;
    3815                 case MaterialsDamageDbarEnum:
     3815                case DamageDbarEnum:
    38163816                        GradjDSSA(gradient,control_index);
    38173817                        break;
     
    39873987        Input* adjointx_input=inputs->GetInput(AdjointxEnum);                       _assert_(adjointx_input);
    39883988        Input* adjointy_input=inputs->GetInput(AdjointyEnum);                       _assert_(adjointy_input);
    3989         Input* rheologyd_input=material->inputs->GetInput(MaterialsDamageDbarEnum); _assert_(rheologyd_input);
     3989        Input* rheologyd_input=material->inputs->GetInput(DamageDbarEnum); _assert_(rheologyd_input);
    39903990
    39913991        /* Start  looping on the number of gaussian points: */
     
    53675367
    53685368        /*Get input (either in element or material)*/
    5369         if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsDamageDbarEnum){
     5369        if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){
    53705370                input=(Input*)material->inputs->GetInput(control_enum); _assert_(input);
    53715371        }
     
    54025402        new_input = new TriaInput(control_enum,values,P1Enum);
    54035403
    5404         if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsDamageDbarEnum){
     5404        if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){
    54055405                input=(Input*)material->inputs->GetInput(control_enum); _assert_(input);
    54065406        }
  • issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp

    r16148 r16162  
    167167        IssmDouble D;
    168168
    169         inputs->GetInputAverage(&D,MaterialsDamageDEnum);
     169        inputs->GetInputAverage(&D,DamageDEnum);
    170170        return D;
    171171}
     
    177177        IssmDouble D;
    178178
    179         inputs->GetInputAverage(&D,MaterialsDamageDEnum);
     179        inputs->GetInputAverage(&D,DamageDEnum);
    180180        return 1/(1-D);
    181181}
     
    186186        /*Output*/
    187187        IssmDouble Dbar;
    188         inputs->GetInputAverage(&Dbar,MaterialsDamageDbarEnum);
     188        inputs->GetInputAverage(&Dbar,DamageDbarEnum);
    189189        return 1/(1-Dbar);
    190190}
     
    195195        /*Output*/
    196196        IssmDouble Dbar;
    197         inputs->GetInputAverage(&Dbar,MaterialsDamageDbarEnum);
     197        inputs->GetInputAverage(&Dbar,DamageDbarEnum);
    198198        return Dbar;
    199199}
     
    798798
    799799                /*Get D*/
    800                 if (iomodel->Data(MaterialsDamageDEnum)) {
    801                         for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
    802                         this->inputs->AddInput(new TriaInput(MaterialsDamageDbarEnum,nodeinputs,P1Enum));
     800                if (iomodel->Data(DamageDEnum)) {
     801                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
     802                        this->inputs->AddInput(new TriaInput(DamageDbarEnum,nodeinputs,P1Enum));
    803803                }
    804804
     
    817817                                                }
    818818                                                break;
    819                                         case MaterialsDamageDbarEnum:
    820                                                 if (iomodel->Data(MaterialsDamageDEnum)){
    821                                                         _assert_(iomodel->Data(MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));
    822                                                         for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
     819                                        case DamageDbarEnum:
     820                                                if (iomodel->Data(DamageDEnum)){
     821                                                        _assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));
     822                                                        for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
    823823                                                        for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
    824824                                                        for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
    825                                                         this->inputs->AddInput(new ControlInput(MaterialsDamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
     825                                                        this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
    826826                                                }
    827827                                                break;
     
    856856
    857857                /*Get D*/
    858                 if (iomodel->Data(MaterialsDamageDEnum)) {
    859                         for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
    860                         this->inputs->AddInput(new PentaInput(MaterialsDamageDEnum,nodeinputs,P1Enum));
     858                if (iomodel->Data(DamageDEnum)) {
     859                        for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
     860                        this->inputs->AddInput(new PentaInput(DamageDEnum,nodeinputs,P1Enum));
    861861                }
    862862
     
    875875                                                }
    876876                                                break;
    877                                         case MaterialsDamageDbarEnum:
    878                                                 if (iomodel->Data(MaterialsDamageDEnum)){
    879                                                         _assert_(iomodel->Data(MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));
    880                                                         for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
     877                                        case DamageDbarEnum:
     878                                                if (iomodel->Data(DamageDEnum)){
     879                                                        _assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum));
     880                                                        for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
    881881                                                        for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
    882882                                                        for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
    883                                                         this->inputs->AddInput(new ControlInput(MaterialsDamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
     883                                                        this->inputs->AddInput(new ControlInput(DamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
    884884                                                }
    885885                                                break;
     
    903903                                name==MaterialsRheologyBbarEnum ||
    904904                                name==MaterialsRheologyNEnum ||
    905                                 name==MaterialsDamageDEnum ||
    906                                 name==MaterialsDamageDbarEnum
     905                                name==DamageDEnum ||
     906                                name==DamageDbarEnum
    907907                ){
    908908                return true;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp

    r16148 r16162  
    4040                        case FrictionCoefficientEnum:   iomodel->FetchData(1,FrictionCoefficientEnum); break;
    4141                        case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break;
    42                         case MaterialsDamageDbarEnum: iomodel->FetchData(1,MaterialsDamageDEnum); break;
     42                        case DamageDbarEnum: iomodel->FetchData(1,DamageDEnum); break;
    4343                        default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet");
    4444                }
     
    5959
    6060        /*Free data: */
    61         iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsDamageDEnum);
     61        iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,DamageDEnum);
    6262}
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp

    r16148 r16162  
    6464                        break;
    6565                case MatdamageiceEnum:
    66                         iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsDamageDEnum);
     66                        iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum);
    6767                        for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matdamageice(i+1,i,iomodel));
    6868                        break;
     
    7373        /*Free data: */
    7474        iomodel->DeleteData(8,MeshUpperelementsEnum,MeshLowerelementsEnum,
    75                                 MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsDamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum,
     75                                MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum,
    7676                                InversionMaxParametersEnum);
    7777
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp

    r16148 r16162  
    102102        iomodel->FetchDataToInput(elements,LoadingforceYEnum);
    103103        if(materials_type==MatdamageiceEnum){
    104                 iomodel->FetchDataToInput(elements,MaterialsDamageDEnum);
     104                iomodel->FetchDataToInput(elements,DamageDEnum);
    105105        }
    106106        if(iomodel->dim==3){
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r16157 r16162  
    154154        MaterialsRheologyZEnum,
    155155        MaterialsRheologyZbarEnum,
    156         MaterialsDamageDEnum,
    157         MaterialsDamageDbarEnum,
    158         MaterialsDamageLawEnum,
    159         MaterialsDamageC1Enum,
    160         MaterialsDamageC2Enum,
    161         MaterialsDamageC3Enum,
    162         MaterialsDamageC4Enum,
    163         MaterialsDamageStressThresholdEnum,
     156        DamageDEnum,
     157        DamageDbarEnum,
     158        DamageIsdamageEnum,
     159        DamageLawEnum,
     160        DamageC1Enum,
     161        DamageC2Enum,
     162        DamageC3Enum,
     163        DamageC4Enum,
     164        DamageStressThresholdEnum,
    164165        MaterialsRhoIceEnum,
    165166        MaterialsRhoWaterEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r16157 r16162  
    162162                case MaterialsRheologyZEnum : return "MaterialsRheologyZ";
    163163                case MaterialsRheologyZbarEnum : return "MaterialsRheologyZbar";
    164                 case MaterialsDamageDEnum : return "MaterialsDamageD";
    165                 case MaterialsDamageDbarEnum : return "MaterialsDamageDbar";
    166                 case MaterialsDamageLawEnum : return "MaterialsDamageLaw";
    167                 case MaterialsDamageC1Enum : return "MaterialsDamageC1";
    168                 case MaterialsDamageC2Enum : return "MaterialsDamageC2";
    169                 case MaterialsDamageC3Enum : return "MaterialsDamageC3";
    170                 case MaterialsDamageC4Enum : return "MaterialsDamageC4";
    171                 case MaterialsDamageStressThresholdEnum : return "MaterialsDamageStressThreshold";
     164                case DamageDEnum : return "DamageD";
     165                case DamageDbarEnum : return "DamageDbar";
     166                case DamageIsdamageEnum : return "DamageIsdamage";
     167                case DamageLawEnum : return "DamageLaw";
     168                case DamageC1Enum : return "DamageC1";
     169                case DamageC2Enum : return "DamageC2";
     170                case DamageC3Enum : return "DamageC3";
     171                case DamageC4Enum : return "DamageC4";
     172                case DamageStressThresholdEnum : return "DamageStressThreshold";
    172173                case MaterialsRhoIceEnum : return "MaterialsRhoIce";
    173174                case MaterialsRhoWaterEnum : return "MaterialsRhoWater";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r16157 r16162  
    165165              else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;
    166166              else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;
    167               else if (strcmp(name,"MaterialsDamageD")==0) return MaterialsDamageDEnum;
    168               else if (strcmp(name,"MaterialsDamageDbar")==0) return MaterialsDamageDbarEnum;
    169               else if (strcmp(name,"MaterialsDamageLaw")==0) return MaterialsDamageLawEnum;
    170               else if (strcmp(name,"MaterialsDamageC1")==0) return MaterialsDamageC1Enum;
    171               else if (strcmp(name,"MaterialsDamageC2")==0) return MaterialsDamageC2Enum;
    172               else if (strcmp(name,"MaterialsDamageC3")==0) return MaterialsDamageC3Enum;
    173               else if (strcmp(name,"MaterialsDamageC4")==0) return MaterialsDamageC4Enum;
    174               else if (strcmp(name,"MaterialsDamageStressThreshold")==0) return MaterialsDamageStressThresholdEnum;
     167              else if (strcmp(name,"DamageD")==0) return DamageDEnum;
     168              else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
     169              else if (strcmp(name,"DamageIsdamage")==0) return DamageIsdamageEnum;
     170              else if (strcmp(name,"DamageLaw")==0) return DamageLawEnum;
     171              else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
     172              else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
     173              else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
     174              else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
     175              else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
    175176              else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
    176177              else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
     
    259260              else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
    260261              else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
    261               else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
     265              if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
     266              else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
    266267              else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
    267268              else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
     
    382383              else if (strcmp(name,"Node")==0) return NodeEnum;
    383384              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    384               else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"Param")==0) return ParamEnum;
     388              if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
     389              else if (strcmp(name,"Param")==0) return ParamEnum;
    389390              else if (strcmp(name,"L1L2IceFront")==0) return L1L2IceFrontEnum;
    390391              else if (strcmp(name,"HOIceFront")==0) return HOIceFrontEnum;
     
    505506              else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
    506507              else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
    507               else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
     511              if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
     512              else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
    512513              else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
    513514              else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
  • issm/trunk-jpl/src/m/classes/damage.m

    r16160 r16162  
    88        % {{{
    99                %damage
    10                 isdamage                   = NaN;
     10                isdamage            = NaN;
    1111                D                   = NaN;
    1212                law                 = '';
     
    5656                function md = checkconsistency(obj,md,solution,analyses) % {{{
    5757                       
    58                         md = checkfield(md,'materials.D','>=0',0,'size',[md.mesh.numberofvertices 1]);
    59                         md = checkfield(md,'materials.law','values',{'undamaged','pralong'});
     58                        if obj.isdamage,
     59                                md = checkfield(md,'damage.D','>=0',0,'size',[md.mesh.numberofvertices 1]);
     60                                md = checkfield(md,'damage.law','values',{'undamaged','pralong'});
     61                        end
    6062                        if strcmpi(obj.law,'pralong'),
    61                                 md = checkfield(md,'materials.c1','>=',0);
    62                                 md = checkfield(md,'materials.c2','>=',0);
    63                                 md = checkfield(md,'materials.c3','>=',0);
    64                                 md = checkfield(md,'materials.c4','>=',0);
    65                                 md = checkfield(md,'materials.stress_threshold','>=',0);
     63                                md = checkfield(md,'damage.c1','>=',0);
     64                                md = checkfield(md,'damage.c2','>=',0);
     65                                md = checkfield(md,'damage.c3','>=',0);
     66                                md = checkfield(md,'damage.c4','>=',0);
     67                                md = checkfield(md,'damage.stress_threshold','>=',0);
    6668                        end
    6769
     
    8284                end % }}}
    8385                function marshall(obj,md,fid) % {{{
    84                        
    85                         WriteData(fid,'object',obj,'class','materials','fieldname','D','format','DoubleMat','mattype',1);
    86                         WriteData(fid,'object',obj,'class','materials','fieldname','law','format','String');
     86               
     87                        WriteData(fid,'object',obj,'class','damage','fieldname','isdamage','format','DoubleMat','mattype',1);
     88                        if obj.isdamage,
     89                                WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1);
     90                                WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String');
     91                        end
    8792                        if strcmpi(obj.law,'pralong'),
    88                                 WriteData(fid,'object',obj,'class','materials','fieldname','c1','format','Double');
    89                                 WriteData(fid,'object',obj,'class','materials','fieldname','c2','format','Double');
    90                                 WriteData(fid,'object',obj,'class','materials','fieldname','c3','format','Double');
    91                                 WriteData(fid,'object',obj,'class','materials','fieldname','c4','format','Double');
    92                                 WriteData(fid,'object',obj,'class','materials','fieldname','stress_threshold','format','Double');
     93                                WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double');
     94                                WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double');
     95                                WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double');
     96                                WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double');
     97                                WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double');
    9398                        end
    9499
  • issm/trunk-jpl/src/m/classes/matdamageice.m

    r16160 r16162  
    122122                        md = checkfield(md,'materials.rheology_law','values',{'None' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
    123123                       
    124                         md = checkfield(md,'materials.damage_D','>',0,'size',[md.mesh.numberofvertices 1]);
    125                         md = checkfield(md,'materials.damage_law','values',{'initial'});
     124                        md = checkfield(md,'damage.D','>',0,'size',[md.mesh.numberofvertices 1]);
     125                        md = checkfield(md,'damage.law','values',{'undamaged' 'pralong'});
    126126                        if strcmpi(obj.damage_law,'initial'),
    127                                 md = checkfield(md,'materials.damage_c1','>=',0);
    128                                 md = checkfield(md,'materials.damage_c2','>=',0);
    129                                 md = checkfield(md,'materials.damage_c3','>=',0);
    130                                 md = checkfield(md,'materials.damage_c4','>=',0);
    131                                 md = checkfield(md,'materials.damage_stress_threshold','>=',0);
     127                                md = checkfield(md,'damage.c1','>=',0);
     128                                md = checkfield(md,'damage.c2','>=',0);
     129                                md = checkfield(md,'damage.c3','>=',0);
     130                                md = checkfield(md,'damage.c4','>=',0);
     131                                md = checkfield(md,'damage.stress_threshold','>=',0);
    132132                        end
    133133
     
    161161                        fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]');
    162162                        fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]');
    163                         fielddisplay(obj,'damage_D','damage tensor (scalar)');
    164                         fielddisplay(obj,'damage_law','damage law (string) from {''initial''}');
     163                        fielddisplay(obj,'D','damage tensor (scalar)');
     164                        fielddisplay(obj,'law','damage law (string) from {''initial''}');
    165165                        if strcmpi(obj.damage_law,'initial'),
    166                                 fielddisplay(obj,'damage_c1','damage parameter 1');
    167                                 fielddisplay(obj,'damage_c2','damage parameter 2');
    168                                 fielddisplay(obj,'damage_c3','damage parameter 3');
    169                                 fielddisplay(obj,'damage_c4','damage parameter 4');
    170                                 fielddisplay(obj,'damage_stress_threshold','damage stress threshold [Pa]');
     166                                fielddisplay(obj,'c1','damage parameter 1');
     167                                fielddisplay(obj,'c2','damage parameter 2');
     168                                fielddisplay(obj,'c3','damage parameter 3');
     169                                fielddisplay(obj,'c4','damage parameter 4');
     170                                fielddisplay(obj,'stress_threshold','damage stress threshold [Pa]');
    171171                        end
    172172
     
    195195                       
    196196                        %damage:
    197                         WriteData(fid,'object',obj,'class','materials','fieldname','damage_D','format','DoubleMat','mattype',1);
    198                         WriteData(fid,'object',obj,'class','materials','fieldname','damage_law','format','String');
    199                         if strcmpi(obj.damage_law,'initial'),
    200                                 WriteData(fid,'object',obj,'class','materials','fieldname','damage_c1','format','Double');
    201                                 WriteData(fid,'object',obj,'class','materials','fieldname','damage_c2','format','Double');
    202                                 WriteData(fid,'object',obj,'class','materials','fieldname','damage_c3','format','Double');
    203                                 WriteData(fid,'object',obj,'class','materials','fieldname','damage_c4','format','Double');
    204                                 WriteData(fid,'object',obj,'class','materials','fieldname','damage_stress_threshold','format','Double');
     197                        WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1);
     198                        WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String');
     199                        if strcmpi(obj.damage_law,'pralong'),
     200                                WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double');
     201                                WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double');
     202                                WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double');
     203                                WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double');
     204                                WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double');
    205205                        end
    206206
  • issm/trunk-jpl/src/m/classes/matdamageice.py

    r16157 r16162  
    183183                WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
    184184               
    185                 WriteData(fid,'object',self,'class','materials','fieldname','damage_D','format','DoubleMat','mattype',1)
    186                 WriteData(fid,'object',self,'class','materials','fieldname','damage_law','format','String')
     185                WriteData(fid,'object',self,'class','damage','fieldname','D','format','DoubleMat','mattype',1)
     186                WriteData(fid,'object',self,'class','damage','fieldname','law','format','String')
    187187                if self.damage_law=='initial':
    188                         WriteData(fid,'object',self,'class','materials','fieldname','damage_c1','format','Double')
    189                         WriteData(fid,'object',self,'class','materials','fieldname','damage_c2','format','Double')
    190                         WriteData(fid,'object',self,'class','materials','fieldname','damage_c3','format','Double')
    191                         WriteData(fid,'object',self,'class','materials','fieldname','damage_c4','format','Double')
    192                         WriteData(fid,'object',self,'class','materials','fieldname','damage_stress_threshold','format','Double')
     188                        WriteData(fid,'object',self,'class','damage','fieldname','c1','format','Double')
     189                        WriteData(fid,'object',self,'class','damage','fieldname','c2','format','Double')
     190                        WriteData(fid,'object',self,'class','damage','fieldname','c3','format','Double')
     191                        WriteData(fid,'object',self,'class','damage','fieldname','c4','format','Double')
     192                        WriteData(fid,'object',self,'class','damage','fieldname','stress_threshold','format','Double')
    193193        # }}}
  • issm/trunk-jpl/src/m/classes/model/model.py

    r15987 r16162  
    1010from basalforcings import basalforcings
    1111from matice import matice
     12from damage import damage
    1213from friction import friction
    1314from flowequation import flowequation
     
    5859                self.basalforcings    = basalforcings()
    5960                self.materials        = matice()
     61                self.damage           = damage()
    6062                self.friction         = friction()
    6163                self.flowequation     = flowequation()
     
    99101                        'basalforcings',\
    100102                        'materials',\
     103                        'damage',\
    101104                        'friction',\
    102105                        'flowequation',\
     
    136139                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
    137140                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
     141                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
    138142                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
    139143                string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
     
    627631                md.materials.rheology_n=project3d(md,'vector',md.materials.rheology_n,'type','element')
    628632
     633                #damage
     634                md.damage.D=project3d(md,'vector',md.damage.D,'type','node')
    629635                #parameters
    630636                md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node')
  • issm/trunk-jpl/src/m/dev/devpath.py

    r16119 r16162  
    2424from plotmodel import plotmodel
    2525
     26c = get_ipython().config
     27c.InteractiveShellApp.exec_lines = []
     28c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
     29c.InteractiveShellApp.exec_lines.append('%autoreload 2')
     30c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
     31
    2632print("\n  ISSM development path correctly loaded\n\n")
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r16157 r16162  
    154154def MaterialsRheologyZEnum(): return StringToEnum("MaterialsRheologyZ")[0]
    155155def MaterialsRheologyZbarEnum(): return StringToEnum("MaterialsRheologyZbar")[0]
    156 def MaterialsDamageDEnum(): return StringToEnum("MaterialsDamageD")[0]
    157 def MaterialsDamageDbarEnum(): return StringToEnum("MaterialsDamageDbar")[0]
    158 def MaterialsDamageLawEnum(): return StringToEnum("MaterialsDamageLaw")[0]
    159 def MaterialsDamageC1Enum(): return StringToEnum("MaterialsDamageC1")[0]
    160 def MaterialsDamageC2Enum(): return StringToEnum("MaterialsDamageC2")[0]
    161 def MaterialsDamageC3Enum(): return StringToEnum("MaterialsDamageC3")[0]
    162 def MaterialsDamageC4Enum(): return StringToEnum("MaterialsDamageC4")[0]
    163 def MaterialsDamageStressThresholdEnum(): return StringToEnum("MaterialsDamageStressThreshold")[0]
     156def DamageDEnum(): return StringToEnum("DamageD")[0]
     157def DamageDbarEnum(): return StringToEnum("DamageDbar")[0]
     158def DamageIsdamageEnum(): return StringToEnum("DamageIsdamage")[0]
     159def DamageLawEnum(): return StringToEnum("DamageLaw")[0]
     160def DamageC1Enum(): return StringToEnum("DamageC1")[0]
     161def DamageC2Enum(): return StringToEnum("DamageC2")[0]
     162def DamageC3Enum(): return StringToEnum("DamageC3")[0]
     163def DamageC4Enum(): return StringToEnum("DamageC4")[0]
     164def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
    164165def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0]
    165166def MaterialsRhoWaterEnum(): return StringToEnum("MaterialsRhoWater")[0]
  • issm/trunk-jpl/src/m/exp/expwrite.m

    r14295 r16162  
    4141        fprintf(fid,'%s\n','## Icon:0');
    4242        fprintf(fid,'%s\n','# Points Count Value');
    43         fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
     43        if isfield(a,'density'),
     44                if ~isempty(a(n).density),
     45                        fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
     46                else
     47                        fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
     48                end
     49        else
     50                fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
     51        end
    4452        fprintf(fid,'%s\n','# X pos Y pos');
    4553        fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]');
  • issm/trunk-jpl/src/m/plot/applyoptions.py

    r16095 r16162  
    123123        #view
    124124
    125         #axis
     125        #axis {{{
     126        if options.exist('axis'):
     127                if options.getfieldvalue('axis',True)=='off':
     128                        p.gca().ticklabel_format(style='plain')
     129                        p.setp(p.gca().get_xticklabels(), visible=False)
     130                        p.setp(p.gca().get_yticklabels(), visible=False)
     131        # }}}
    126132
    127133        #box
     
    164170
    165171        #colorbar {{{
    166         if options.getfieldvalue('colorbar','off')==1:
    167                 cb=p.colorbar()
     172        if options.getfieldvalue('colorbar',1)==1:
     173                if options.exist('clim'):
     174                        # build custom colorbar (does not yet allow customizing the location)
     175                        fig = p.gcf()
     176                        ax = p.gca()
     177                        divider = make_axes_locatable(ax)
     178                        cax = divider.new_horizontal("5%", pad=0.05, axes_class=maxes.Axes)
     179                        fig.add_axes(cax)
     180                        cmap = mpl.cm.jet
     181                        norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
     182                        cb = mpl.colorbar.ColorbarBase(cax, cmap=cmap, norm=norm)
     183                else:
     184                        cb=p.colorbar()
    168185                cb.locator=MaxNLocator(nbins=5) # default 5 ticks
    169186                cb.update_ticks()
Note: See TracChangeset for help on using the changeset viewer.