Changeset 20453


Ignore:
Timestamp:
04/07/16 11:43:43 (9 years ago)
Author:
Mathieu Morlighem
Message:

CHG: do not marshall NodeActivationMask, this is now done automatically by FemModel->InitFromFile. We also now alow positive levelsets for every solutions (presumably...)

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

Legend:

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

    r19394 r20453  
    6565        iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
    6666        iomodel->FetchDataToInput(elements,PressureEnum);
    67 
    68         if(islevelset){
    69                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    70         }
    7167
    7268}/*}}}*/
     
    669665}/*}}}*/
    670666void           DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    671         /*Default, do nothing*/
    672         bool islevelset;
    673         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    674         if(islevelset){
    675                 SetActiveNodesLSMx(femmodel);
    676         }
    677         return;
     667        SetActiveNodesLSMx(femmodel);
    678668}/*}}}*/
    679669
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp

    r20272 r20453  
    160160        InputUpdateFromConstantx(elements,0.,VzMeshEnum);
    161161        if(islevelset){
    162                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    163162                iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
    164163        }
     
    15851584}/*}}}*/
    15861585void           EnthalpyAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    1587 
    1588         bool islevelset;
    1589         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    1590         if(islevelset){
    1591                 SetActiveNodesLSMx(femmodel);
    1592         }
    1593         return;
    1594 }/*}}}*/
     1586        SetActiveNodesLSMx(femmodel);
     1587}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r20307 r20453  
    167167                iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
    168168        }
    169 
    170         if(islevelset){
    171                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    172         }
    173 
    174        
    175 
    176169}/*}}}*/
    177170void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
     
    743736}/*}}}*/
    744737void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    745 
    746         bool islevelset;
    747         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    748         if(islevelset){
    749                 SetActiveNodesLSMx(femmodel);
    750         }
    751         return;
     738        SetActiveNodesLSMx(femmodel);
    752739}/*}}}*/
    753740
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r20217 r20453  
    781781                iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum,0.);
    782782        }
    783         if(islevelset){
    784                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    785         }
    786783        /*LATH parameters*/
    787784        iomodel->Constant(&fe_FS,FlowequationFeFSEnum);
     
    11481145}/*}}}*/
    11491146void           StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    1150         /*Default, do nothing*/
    1151         bool islevelset;
    1152         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    1153         if(islevelset){
    1154                 SetActiveNodesLSMx(femmodel);
    1155         }
    1156         return;
     1147        SetActiveNodesLSMx(femmodel);
    11571148}/*}}}*/
    11581149
  • issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

    r20249 r20453  
    167167        iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
    168168        if(islevelset){
    169                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    170169                if(iomodel->domaintype!=Domain2DhorizontalEnum)
    171170                        iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
     
    637636}/*}}}*/
    638637void           StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    639 
    640         bool islevelset;
    641         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    642         if(islevelset){
    643                 SetActiveNodesLSMx(femmodel);
    644         }
    645         return;
    646 }/*}}}*/
     638        SetActiveNodesLSMx(femmodel);
     639}/*}}}*/
  • issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp

    r20155 r20453  
    117117        InputUpdateFromConstantx(elements,0.,VzMeshEnum);
    118118        if(islevelset){
    119                 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
    120119                iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
    121120        }
     
    798797}/*}}}*/
    799798void           ThermalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    800 
    801         bool islevelset;
    802         femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
    803         if(islevelset){
    804                 SetActiveNodesLSMx(femmodel);
    805         }
    806         return;
    807 }/*}}}*/
     799        SetActiveNodesLSMx(femmodel);
     800}/*}}}*/
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r20362 r20453  
    183183        ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
    184184
     185
    185186        /*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
    186187        for(i=0;i<nummodels;i++){
     
    190191                this->SetCurrentConfiguration(analysis_type);
    191192
     193                if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
     194                ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
     195
    192196                if(i==0){
    193197                        if(VerboseMProcessor()) _printf0_("      creating vertex PIDs\n");
    194                         VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices
     198                        VerticesDofx(vertices,parameters);
     199
     200                        if(VerboseMProcessor()) _printf0_("      detecting active vertices\n");
     201                        GetMaskOfIceVerticesLSMx(this);
    195202                }
    196203
     
    200207                if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
    201208                NodesDofx(nodes,parameters,analysis_type);
    202 
    203                 if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
    204                 ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
    205209        }
    206210
  • issm/trunk-jpl/src/m/classes/mask.js

    r19860 r20453  
    5454                        WriteData(fid,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
    5555                        WriteData(fid,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
    56 
    57                         // get mask of vertices of elements with ice
    58                         var isice= NewArrayFill(md.mesh.numberofvertices,0);
    59                         for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
    60                        
    61                         var vlist = NewArrayFill(md.mesh.numberofvertices,0);
    62                         var pos=[];
    63                         for(var i=0;i<md.mesh.numberofelements;i++){
    64                                 var sum=0;
    65                                 for(var j=0;j<md.mesh.elements[0].length;j++){
    66                                         sum+=isice[md.mesh.elements[i][j]-1];
    67                                 }
    68                                 if(sum>0)pos.push(i);
    69                         }
    70                         for(var i=0;i<pos.length;i++){
    71                                 for(var j=0;j<md.mesh.elements[0].length;j++){
    72                                         vlist[md.mesh.elements[pos[i]][j]-1]=1;
    73                                 }
    74                         }
    75                         WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    7656                }//}}}
    7757                this.fix=function() { //{{{
  • issm/trunk-jpl/src/m/classes/mask.m

    r20449 r20453  
    6161                function marshall(self,md,fid) % {{{
    6262                        WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
    63                         WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
    64 
    65                         % get mask of vertices of elements with ice
    66                         if size(md.mask.ice_levelset,1)==md.mesh.numberofvertices,
    67                                 isice=md.mask.ice_levelset<=0.;
    68                                 vlist = zeros(md.mesh.numberofvertices,1);
    69                                 pos=find(sum(isice(md.mesh.elements),2)>0);
    70                                 vlist(md.mesh.elements(pos,:))=1;
    71                                 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    72                         else
    73                                 isice=md.mask.ice_levelset(1:end-1,1)<=0.;
    74                                 vlist = zeros(md.mesh.numberofvertices,1);
    75                                 pos=find(sum(isice(md.mesh.elements),2)>0);
    76                                 vlist(md.mesh.elements(pos,:))=1;
    77                                 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    78                         end
    79 
     63                        WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'NaN',1);
    8064                end % }}}
    8165                function savemodeljs(self,fid,modelname) % {{{
  • issm/trunk-jpl/src/m/classes/mask.py

    r19443 r20453  
    5454                WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
    5555                WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
    56 
    57                 # get mask of vertices of elements with ice
    58                 isice=numpy.array(md.mask.ice_levelset<0.,int)
    59                 vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
    60                 pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0]
    61                 vlist[md.mesh.elements[pos,:]-1]=1
    62                 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    6356        # }}}
  • issm/trunk-jpl/src/m/classes/maskpsl.js

    r20295 r20453  
    6363                        WriteData(fid,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
    6464                        WriteData(fid,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
    65 
    66                         // get mask of vertices of elements with ice
    67                         var isice= NewArrayFill(md.mesh.numberofvertices,0);
    68                         for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
    69                        
    70                         var vlist = NewArrayFill(md.mesh.numberofvertices,0);
    71                         var pos=[];
    72                         for(var i=0;i<md.mesh.numberofelements;i++){
    73                                 var sum=0;
    74                                 for(var j=0;j<md.mesh.elements[0].length;j++){
    75                                         sum+=isice[md.mesh.elements[i][j]-1];
    76                                 }
    77                                 if(sum>0)pos.push(i);
    78                         }
    79                         for(var i=0;i<pos.length;i++){
    80                                 for(var j=0;j<md.mesh.elements[0].length;j++){
    81                                         vlist[md.mesh.elements[pos[i]][j]-1]=1;
    82                                 }
    83                         }
    84                         WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    8565                }//}}}
    8666                this.fix=function() { //{{{
  • issm/trunk-jpl/src/m/classes/maskpsl.m

    r20295 r20453  
    7272                        WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
    7373                        WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
    74 
    75                         % get mask of vertices of elements with ice
    76                         isice=md.mask.ice_levelset<=0.;
    77                         vlist = zeros(md.mesh.numberofvertices,1);
    78                         pos=find(sum(isice(md.mesh.elements),2)>0);
    79                         vlist(md.mesh.elements(pos,:))=1;
    80                         WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    81 
    8274                end % }}}
    8375                function savemodeljs(self,fid,modelname) % {{{
  • issm/trunk-jpl/src/m/classes/maskpsl.py

    r20279 r20453  
    8484                WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1)
    8585                WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1)
    86 
    87                 # get mask of vertices of elements with ice
    88                 isice=md.mask.ice_levelset<=0.
    89                 vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
    90                
    91                 elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
    92                 pos=numpy.nonzero(numpy.sum(isice[elements],axis=1))[0]
    93                 vlist[elements[pos,:]-1]=1
    94                 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1)
    95 
    9686        # }}}
    9787        def savemodeljs(self,fid,modelname): # {{{
Note: See TracChangeset for help on using the changeset viewer.