Changeset 20453
- Timestamp:
- 04/07/16 11:43:43 (9 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
r19394 r20453 65 65 iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum); 66 66 iomodel->FetchDataToInput(elements,PressureEnum); 67 68 if(islevelset){69 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);70 }71 67 72 68 }/*}}}*/ … … 669 665 }/*}}}*/ 670 666 void 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); 678 668 }/*}}}*/ 679 669 -
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r20272 r20453 160 160 InputUpdateFromConstantx(elements,0.,VzMeshEnum); 161 161 if(islevelset){ 162 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);163 162 iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes 164 163 } … … 1585 1584 }/*}}}*/ 1586 1585 void 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 167 167 iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum); 168 168 } 169 170 if(islevelset){171 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);172 }173 174 175 176 169 }/*}}}*/ 177 170 void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/ … … 743 736 }/*}}}*/ 744 737 void 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); 752 739 }/*}}}*/ 753 740 -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r20217 r20453 781 781 iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum,0.); 782 782 } 783 if(islevelset){784 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);785 }786 783 /*LATH parameters*/ 787 784 iomodel->Constant(&fe_FS,FlowequationFeFSEnum); … … 1148 1145 }/*}}}*/ 1149 1146 void 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); 1157 1148 }/*}}}*/ 1158 1149 -
issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
r20249 r20453 167 167 iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum); 168 168 if(islevelset){ 169 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);170 169 if(iomodel->domaintype!=Domain2DhorizontalEnum) 171 170 iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes … … 637 636 }/*}}}*/ 638 637 void 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 117 117 InputUpdateFromConstantx(elements,0.,VzMeshEnum); 118 118 if(islevelset){ 119 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);120 119 iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes 121 120 } … … 798 797 }/*}}}*/ 799 798 void 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 183 183 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); 184 184 185 185 186 /*do the post-processing of the datasets to get an FemModel that can actually run analyses: */ 186 187 for(i=0;i<nummodels;i++){ … … 190 191 this->SetCurrentConfiguration(analysis_type); 191 192 193 if(VerboseMProcessor()) _printf0_(" configuring element and loads\n"); 194 ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters); 195 192 196 if(i==0){ 193 197 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); 195 202 } 196 203 … … 200 207 if(VerboseMProcessor()) _printf0_(" creating nodal degrees of freedom\n"); 201 208 NodesDofx(nodes,parameters,analysis_type); 202 203 if(VerboseMProcessor()) _printf0_(" configuring element and loads\n");204 ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);205 209 } 206 210 -
issm/trunk-jpl/src/m/classes/mask.js
r19860 r20453 54 54 WriteData(fid,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1); 55 55 WriteData(fid,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1); 56 57 // get mask of vertices of elements with ice58 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);76 56 }//}}} 77 57 this.fix=function() { //{{{ -
issm/trunk-jpl/src/m/classes/mask.m
r20449 r20453 61 61 function marshall(self,md,fid) % {{{ 62 62 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); 80 64 end % }}} 81 65 function savemodeljs(self,fid,modelname) % {{{ -
issm/trunk-jpl/src/m/classes/mask.py
r19443 r20453 54 54 WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1) 55 55 WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1) 56 57 # get mask of vertices of elements with ice58 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]=162 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);63 56 # }}} -
issm/trunk-jpl/src/m/classes/maskpsl.js
r20295 r20453 63 63 WriteData(fid,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1); 64 64 WriteData(fid,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1); 65 66 // get mask of vertices of elements with ice67 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);85 65 }//}}} 86 66 this.fix=function() { //{{{ -
issm/trunk-jpl/src/m/classes/maskpsl.m
r20295 r20453 72 72 WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1); 73 73 WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1); 74 75 % get mask of vertices of elements with ice76 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 82 74 end % }}} 83 75 function savemodeljs(self,fid,modelname) % {{{ -
issm/trunk-jpl/src/m/classes/maskpsl.py
r20279 r20453 84 84 WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1) 85 85 WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1) 86 87 # get mask of vertices of elements with ice88 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]=194 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1)95 96 86 # }}} 97 87 def savemodeljs(self,fid,modelname): # {{{
Note:
See TracChangeset
for help on using the changeset viewer.