Changeset 17230
- Timestamp:
- 02/07/14 09:43:44 (11 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/externalpackages/vim/addons/vimrc
r17227 r17230 100 100 101 101 " save & "make" the current file in all modes 102 map <F 6> :w <Enter> :make <Enter><Enter>103 map! <F 6> <ESC> :w <Enter> :make <Enter><Enter>102 map <F8> :w <Enter> :make <Enter><Enter> 103 map! <F8> <ESC> :w <Enter> :make <Enter><Enter> 104 104 " make update: nice for longer documents 105 map <F5> :w <Enter> :make update <Enter><Enter> 106 map! <F5> <ESC> :w <Enter> :make update <Enter><Enter> 107 108 " switch between tabs 109 nmap <F7> :tabp <CR> 110 nmap <F8> :tabn <CR> 105 map <F7> :w <Enter> :make update <Enter><Enter> 106 map! <F7> <ESC> :w <Enter> :make update <Enter><Enter> 111 107 112 108 … … 145 141 autocmd BufWritePost *.sh !chmod +x % 146 142 147 " Commenting blocks of code.148 autocmd FileType c,cpp,java,scala let b:comment_leader = '// '149 autocmd FileType sh,ruby,python let b:comment_leader = '# '150 autocmd FileType conf,fstab let b:comment_leader = '# '151 autocmd FileType tex let b:comment_leader = '% '152 autocmd FileType mail let b:comment_leader = '> '153 autocmd FileType vim let b:comment_leader = '" '154 noremap <silent> ,cc :<C-B>silent <C-E>s/^/<C-R>=escape(b:comment_leader,'\/')<CR>/<CR>:nohlsearch<CR>155 noremap <silent> ,cu :<C-B>silent <C-E>s/^\V<C-R>=escape(b:comment_leader,'\/')<CR>//e<CR>:nohlsearch<CR>156 143 endif " has("autocmd") 157 144 " ----------------------------------------------------------------------}}} -
issm/trunk-jpl/src/c/Makefile.am
r17227 r17230 285 285 ./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h\ 286 286 ./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\ 287 ./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h\288 ./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp\289 287 ./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h\ 290 288 ./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\ -
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r17227 r17230 33 33 iomodel->FetchDataToInput(elements,VxEnum); 34 34 iomodel->FetchDataToInput(elements,VyEnum); 35 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);35 36 36 } 37 37 /*}}}*/ … … 67 67 bool save_results; 68 68 69 /* extrapolate */ 70 Analysis* analysis = new ExtrapolationAnalysis(); 71 femmodel->parameters->SetParam(VxEnum,ExtrapolationVariableEnum); 72 analysis->Core(femmodel); 73 delete analysis; 74 69 75 /*activate formulation: */ 70 76 femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum); 71 77 78 /*recover parameters: */ 79 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 80 72 81 if(VerboseSolution()) _printf0_("call computational core:\n"); 73 82 solutionsequence_linear(femmodel); 74 83 75 /*recover parameters: */76 femmodel->parameters->FindParam(&save_results,SaveResultsEnum);77 84 if(save_results){ 78 85 if(VerboseSolution()) _printf0_(" saving results\n"); … … 321 328 }/*}}}*/ 322 329 323 /* Update of constraints */324 // void LevelsetAnalysis::UpdateNoIceConstraints(FemModel* femmodel){/*{{{*/325 //326 // IssmDouble* mask_ice = GetMaskOfIce(femmodel->elements, femmodel->nodes);327 //328 // for (int i=0;i<femmodel->nodes->Size();i++){329 // Node* node=dynamic_cast<Node*>(femmodel->nodes->GetObjectByOffset(i));330 // if(node->InAnalysis(LevelsetAnalysisEnum)){331 // if(mask_ice[node->Sid()]==1.){//FIXME: what should be done with actual spcs to ice model?332 // // node->DofInFSet(0); /*remove spc*/333 // }334 // else{335 // IssmDouble defval=0.;336 // node->ApplyConstraint(1,defval); /*apply spc*/337 // }338 // }339 // }340 // }/*}}}*/341 // IssmDouble* LevelsetAnalysis::GetMaskOfIce(Elements* elements, Nodes* nodes){/*{{{*/342 //343 // int i;344 // IssmDouble* mask_ice = NULL;345 // Vector<IssmDouble>* vec_mask_ice = NULL;346 // Element* element = NULL;347 //348 // /*Initialize vector with number of vertices*/349 // IssmDouble numnodes=nodes->NumberOfNodes(LevelsetAnalysisEnum);350 // vec_mask_ice=new Vector<IssmDouble>(numnodes); //nodes at ice front that have ice at next time step351 // for(i=0;i<numnodes;i++)352 // vec_mask_ice[i]=0.;353 // /*Fill vector vertices that have no contact to ice: */354 // for(i=0;i<elements->Size();i++){355 // element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));356 // SetMaskOfIceElement(vec_mask_ice, element);357 // }358 //359 // /*Assemble vector and serialize */360 // vec_mask_ice->Assemble();361 // mask_ice=vec_mask_ice->ToMPISerial();362 // delete vec_mask_ice;363 // return mask_ice;364 //365 // }/*}}}*/366 // void LevelsetAnalysis::SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element){/*{{{*/367 //368 // /* Intermediaries */369 // int numnodes = element->GetNumberOfNodes();370 //371 // if(element->IsIceInElement()){372 // for(int i = 0;i<numnodes;i++){373 // vec_mask_ice->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);374 // }375 // }376 // }/*}}}*/ -
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h
r17227 r17230 32 32 void GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss); 33 33 34 /* Updating constraints */35 // void UpdateNoIceConstraints(FemModel* femmodel);36 // IssmDouble* GetMaskOfIce(Elements* elements, Nodes* nodes);37 // void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element);38 34 }; 39 35 #endif -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17227 r17230 189 189 iomodel->FetchDataToInput(elements,LoadingforceYEnum); 190 190 iomodel->FetchDataToInput(elements,DamageDEnum); 191 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);192 193 191 194 192 if(iomodel->meshtype==Mesh3DEnum){ … … 1026 1024 }/*}}}*/ 1027 1025 void StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/ 1028 SetActiveNodesLSMx(femmodel->elements);1026 /*Default, do nothing*/ 1029 1027 return; 1030 1028 }/*}}}*/ … … 1145 1143 delete Ke1; 1146 1144 delete Ke2; 1147 1148 // FIXME: TESTING1149 // _printf0_("\n element ID: " << element->Id() << ";\n");1150 // Ke->Echo();1151 1145 return Ke; 1152 1146 }/*}}}*/ … … 1271 1265 newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity); 1272 1266 D_scalar=2.*newviscosity*thickness*gauss->weight*Jdet; 1273 1274 // _printf0_("element, node, weight, Jdet: " << element->Id() << "; " << ig << "; " << gauss->weight << "; " << Jdet << "\n");1275 1276 1267 for(int i=0;i<3;i++) D[i*3+i]=D_scalar; 1277 1268 … … 1324 1315 delete pe1; 1325 1316 delete pe2; 1326 1327 // _printf0_("\n element ID: " << element->Id() << ";\n");1328 // pe->Echo();1329 1330 1317 return pe; 1331 1318 }/*}}}*/ … … 1385 1372 1386 1373 /*If no front, return NULL*/ 1387 if(!element->Is Icefront()) return NULL;1374 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 1388 1375 1389 1376 /*Intermediaries*/ … … 1408 1395 IssmDouble gravity = element->GetMaterialParameter(ConstantsGEnum); 1409 1396 element->GetVerticesCoordinates(&xyz_list); 1410 1411 // element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1412 element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1413 1397 element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1414 1398 element->NormalSection(&normal[0],xyz_list_front); 1415 // element->GetNormalFromLSF(&normal[0]);1416 1399 1417 1400 /*Start looping on Gaussian points*/ … … 1802 1785 1803 1786 /*If no front, return NULL*/ 1804 if(!element->Is Icefront()) return NULL;1787 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 1805 1788 1806 1789 /*Intermediaries*/ … … 2225 2208 2226 2209 /*If no front, return NULL*/ 2227 if(!element->Is Icefront()) return NULL;2210 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 2228 2211 2229 2212 /*Intermediaries*/ … … 2991 2974 2992 2975 /*If no front, return NULL*/ 2993 if(!element->Is Icefront()) return NULL;2976 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 2994 2977 2995 2978 /*Intermediaries*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r17227 r17230 220 220 virtual int PressureInterpolation()=0; 221 221 virtual bool IsZeroLevelset(int levelset_enum)=0; 222 virtual bool IsIcefront(void)=0;223 222 virtual void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0; 224 223 virtual void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r17227 r17230 114 114 int PressureInterpolation(); 115 115 bool IsZeroLevelset(int levelset_enum); 116 bool IsIcefront(void){_error_("not implemented yet");};117 116 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 118 117 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r17227 r17230 159 159 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");}; 160 160 bool IsZeroLevelset(int levelset_enum){_error_("not implemented");}; 161 bool IsIcefront(void){_error_("not implemented yet");};162 161 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");}; 163 162 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17227 r17230 909 909 } 910 910 } 911 _assert_(nrfrontnodes==2); 912 913 /* arrange order of frontnodes such that they are oriented counterclockwise */ 914 if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=2){ 915 int index=indicesfront[0]; 916 indicesfront[0]=indicesfront[1]; 917 indicesfront[1]=index; 918 } 911 919 912 IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes); 920 913 /* Return nodes */ 921 914 for(i=0;i<nrfrontnodes;i++){ 922 915 for(dir=0;dir<3;dir++){ 923 xyz_front[3*i+dir]=xyz_list[3*indicesfront[i]+dir]; 924 } 925 } 926 927 // for(i=0;i<nrfrontnodes;i++){ 928 // _printf0_("coords frontnode " << i << " :["); 929 // for(dir=0;dir<3;dir++){ 930 // xyz_front[3*i+dir]=xyz_list[indicesfront[i]+dir]; 931 // _printf0_(xyz_front[3*i+dir] << "; "); 932 // } 933 // _printf0_("]\n"); 934 // } 916 xyz_front[3*i+dir]=xyz_list[indicesfront[i]+dir]; 917 } 918 } 935 919 936 920 *pxyz_front=xyz_front; … … 938 922 xDelete<int>(indicesfront); 939 923 }/*}}}*/ 940 void Tria::GetNormalFromLSF(IssmDouble * normal){/*{{{*/924 void Tria::GetNormalFromLSF(IssmDouble *pnormal){/*{{{*/ 941 925 942 926 /* Intermediaries */ … … 945 929 IssmDouble* xyz_list = NULL; 946 930 IssmDouble dlevelset[dim], norm_dlevelset; 931 IssmDouble normal[dim]={0.}; 947 932 948 933 /*Retrieve all inputs and parameters*/ … … 951 936 952 937 counter=0; 953 for(i=0;i<dim;i++) normal[i]=0.;954 955 938 Gauss* gauss = this->NewGauss(2); 956 939 for(int ig=gauss->begin();ig<gauss->end();ig++){ … … 964 947 } 965 948 _assert_(counter>0); 966 for(i=0;i<dim;i++) normal[i]/=IssmDouble(counter); 949 for(i=0;i<dim;i++) normal[i]/counter; 950 951 pnormal=&normal[0]; 967 952 968 953 delete gauss; … … 1625 1610 name==MaskGroundediceLevelsetEnum || 1626 1611 name==MaskIceLevelsetEnum || 1627 name==IceMaskNodeActivationEnum ||1628 1612 name==SurfaceSlopeXEnum || 1629 1613 name==SurfaceSlopeYEnum || … … 2602 2586 GetInputListOnVertices(&ls[0],levelset_enum); 2603 2587 2604 /* If levelset function changes sign, or is zero on at least two vertices, there is a zero level set here*/2588 /*If the level set is awlays <0, there is no ice front here*/ 2605 2589 iszerols= false; 2606 2590 if(IsIceInElement()){ … … 2613 2597 } 2614 2598 /*}}}*/ 2615 /*FUNCTION Tria::IsIcefront{{{*/2616 bool Tria::IsIcefront(void){2617 2618 bool isicefront;2619 int i,nrice;2620 IssmDouble ls[NUMVERTICES];2621 2622 /*Retrieve all inputs and parameters*/2623 GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);2624 2625 /* If only one vertex has ice, there is an ice front here */2626 isicefront= false;2627 if(IsIceInElement()){2628 nrice=0;2629 for(i=0;i<NUMVERTICES;i++)2630 if(ls[i]<0.) nrice++;2631 if(nrice==1) isicefront= true;2632 }2633 return isicefront;2634 }2635 /*}}}*/2636 2637 2599 2638 2600 #ifdef _HAVE_RESPONSES_ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r17227 r17230 132 132 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 133 133 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum); 134 void GetNormalFromLSF(IssmDouble *normal);134 void GetNormalFromLSF(IssmDouble *pnormal); 135 135 bool IsZeroLevelset(int levelset_enum); 136 bool IsIcefront(void);137 136 138 137 #ifdef _HAVE_RESPONSES_ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r17227 r17230 406 406 /*start module: */ 407 407 if(VerboseModule()) _printf0_(" Updating constraints for time: " << time << "\n"); 408 if(VerboseModule()) _printf0_(" and analysis: " << EnumToStringx(analysis_type) << "\n"); 409 Analysis* analysis = EnumToAnalysis(analysis_type); 410 _assert_(analysis); 411 // analysis->UpdateConstraints(this); 412 delete analysis; 413 408 409 // analysis->UpdateConstraints(); 410 414 411 /*Second, constraints might be time dependent: */ 415 412 SpcNodesx(nodes,constraints,parameters,analysis_type); -
issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp
r17229 r17230 86 86 /*output*/ 87 87 TriaInput* outinput=NULL; 88 89 if(this->element_type==P0Enum){ 90 outinput=new TriaInput(this->enum_type,&this->values[0],P0Enum); 91 } 92 else{ 93 /*Assume P1 interpolation only for now*/ 94 IssmDouble newvalues[3]; 95 96 /*Create array of indices depending on location (0=base 1=surface)*/ 97 int indices[3]; 98 switch(location){ 99 case 0: 100 indices[0] = 0; 101 indices[1] = 1; 102 indices[2] = 2; 103 break; 104 case 1: 105 indices[0] = 3; 106 indices[1] = 4; 107 indices[2] = 5; 108 break; 109 default: 110 _error_("case "<<location<<" not supported"); 111 } 112 113 /*Create new input*/ 114 for(int i=0;i<3;i++){ 115 _assert_(indices[i]>=0 && indices[i]<6); 116 newvalues[i]=this->values[indices[i]]; 117 } 118 outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum); 119 } 88 IssmDouble newvalues[3]; //Assume P1 interpolation only for now 89 90 /*Create arrow of indices depending on location (0=base 1=surface)*/ 91 int indices[3]; 92 switch(location){ 93 case 0: 94 indices[0] = 0; 95 indices[1] = 1; 96 indices[2] = 2; 97 break; 98 case 1: 99 indices[0] = 3; 100 indices[1] = 4; 101 indices[2] = 5; 102 break; 103 default: 104 _error_("case "<<location<<" not supported"); 105 } 106 107 /*Loop over the new indices*/ 108 for(int i=0;i<3;i++){ 109 110 /*Check index value*/ 111 _assert_(indices[i]>=0 && indices[i]<6); 112 113 /*Assign value to new input*/ 114 newvalues[i]=this->values[indices[i]]; 115 } 116 117 /*Create new Tria input*/ 118 outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum); 120 119 121 120 /*Assign output*/ -
issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp
r17229 r17230 100 100 /*output*/ 101 101 SegInput* outinput=NULL; 102 103 if(this->element_type==P0Enum){ 104 outinput=new SegInput(this->enum_type,&this->values[0],P0Enum); 105 } 106 else{ 107 /*Assume P1 interpolation only for now*/ 108 IssmDouble newvalues[2]; 109 110 /*Create array of indices depending on location (0=base 1=surface)*/ 111 newvalues[0]=this->values[index1]; 112 newvalues[1]=this->values[index2]; 113 114 /*Create new Seg input*/ 115 outinput=new SegInput(this->enum_type,&newvalues[0],P1Enum); 116 } 102 IssmDouble newvalues[2]; //Assume P1 interpolation only for now 103 104 /*Create arrow of indices depending on location (0=base 1=surface)*/ 105 106 newvalues[0]=this->values[index1]; 107 newvalues[1]=this->values[index2]; 108 109 /*Create new Seg input*/ 110 outinput=new SegInput(this->enum_type,&newvalues[0],P1Enum); 117 111 118 112 /*Assign output*/ -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r17227 r17230 162 162 if(islevelset){ 163 163 if(VerboseSolution()) _printf0_(" computing movement of ice boundaries\n"); 164 165 /* extrapolate */ 166 Analysis* extanalysis = new ExtrapolationAnalysis(); 167 int vars[2] = {VxEnum, VyEnum}; 168 for(int iv=0; iv<2;iv++){ 169 femmodel->parameters->SetParam(vars[iv],ExtrapolationVariableEnum); 170 extanalysis->Core(femmodel); 171 } 172 delete extanalysis; 173 174 LevelsetAnalysis* lsanalysis = new LevelsetAnalysis(); 175 /* solve level-set equation */ 176 lsanalysis->Core(femmodel); 177 delete lsanalysis; 178 179 /* update vertices included for next calculation */ 180 GetMaskOfIceVerticesLSMx(femmodel); 164 analysis = new LevelsetAnalysis(); 165 analysis->Core(femmodel); 166 delete analysis; 181 167 } 182 168 -
issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
r17227 r17230 119 119 //Kfs->AllocationInfo(); 120 120 121 // TESTING122 IssmDouble* Kffd=Kff->ToSerial();123 Kff->GetSize(&M,&N);124 _printf0_(" (Kff stiffness matrix size: "<<M<<" x "<<N<<")\n");125 // printarray(Kffd,M,N);126 for(int row=0;row<M;row++){127 IssmDouble value = Kffd[row*N + row];128 if(fabs(value)<1.)129 _printf0_("Kff(" << row << "," << row << ")=" << value << "\n");130 }131 delete Kffd;132 133 134 121 /*cleanu up and assign output pointers: */ 135 122 delete analysis; -
issm/trunk-jpl/src/c/modules/modules.h
r17227 r17230 31 31 #include "./GetVectorFromControlInputsx/GetVectorFromControlInputsx.h" 32 32 #include "./GiaDeflectionCorex/GiaDeflectionCorex.h" 33 #include "./SetActiveNodesLSMx/SetActiveNodesLSMx.h"34 33 #include "./SetControlInputsFromVectorx/SetControlInputsFromVectorx.h" 35 34 #include "./Gradjx/Gradjx.h" -
issm/trunk-jpl/src/m/dev/devpath.py
r17227 r17230 25 25 from plotmodel import plotmodel 26 26 27 c = get_ipython().config28 c.InteractiveShellApp.exec_lines = []29 c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')30 c.InteractiveShellApp.exec_lines.append('%autoreload 2')31 c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')27 #c = get_ipython().config 28 #c.InteractiveShellApp.exec_lines = [] 29 #c.InteractiveShellApp.exec_lines.append('%load_ext autoreload') 30 #c.InteractiveShellApp.exec_lines.append('%autoreload 2') 31 #c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ') 32 32 33 33 print("\n ISSM development path correctly loaded\n\n") -
issm/trunk-jpl/src/m/plot/processmesh.py
r17227 r17230 14 14 if md.mesh.numberofvertices==0: 15 15 raise ValueError('processmesh error: mesh is empty') 16 #if md.mesh.numberofvertices==md.mesh.numberofelements:17 #raise ValueError('processmesh error: the number of elements is the same as the number of nodes')16 if md.mesh.numberofvertices==md.mesh.numberofelements: 17 raise ValueError('processmesh error: the number of elements is the same as the number of nodes') 18 18 19 19 if len(data)==0 or not isinstance(data,dict): -
issm/trunk-jpl/test/NightlyRun/test336.py
r17227 r17230 8 8 from MatlabFuncs import * 9 9 10 md=triangle(model(),'../Exp/Square.exp',1 0000.)10 md=triangle(model(),'../Exp/Square.exp',150000.) 11 11 md=setmask(md,'','') 12 12 md=parameterize(md,'../Par/SquareSheetConstrained.py') … … 20 20 md.transient.isgroundingline=False 21 21 md.transient.isgia=False 22 md.transient.islevelset= False22 md.transient.islevelset=True 23 23 24 24 # init levelset function … … 27 27 xmin=min(md.mesh.x) 28 28 xmax=max(md.mesh.x) 29 xmed=(xmax+xmin)/2. 30 ymed=(ymax+ymin)/2. 31 md.mask.ice_levelset=numpy.sqrt(numpy.power(md.mesh.x-xmed,2.)+numpy.power(md.mesh.y-ymed,2.)) - (xmax-xmin)/3. 32 33 # set spcs 34 mask=1.*numpy.ones((md.mesh.numberofvertices,1)) 35 nrverts=md.mesh.elements.shape[1] 36 for i in range(0,md.mesh.numberofelements): 37 elt=numpy.copy(md.mesh.elements[i]) 38 elt-=1 39 isiceinelement=False 40 for iv in range(0,nrverts): 41 if(md.mask.ice_levelset[elt[iv]]<=0.): 42 isiceinelement=True 43 if(isiceinelement): 44 for iv in range(0,nrverts): 45 mask[elt[iv]]=2. 46 47 v=0. 48 for i in range(0,md.mesh.numberofvertices): 49 if(mask[i]==1.): 50 md.stressbalance.spcvx[i]=v 51 md.stressbalance.spcvy[i]=v 52 md.stressbalance.spcvz[i]=v 29 xmed=(xmax+xmin)/2 30 ymed=(ymax+ymin)/2 31 distx=numpy.absolute(md.mesh.x.reshape(-1,1)-xmed) 32 disty=numpy.absolute(md.mesh.y.reshape(-1,1)-ymed) 33 md.mask.ice_levelset=numpy.maximum(distx,disty)-1.e5 53 34 54 35 md=solve(md,TransientSolutionEnum()) … … 56 37 #Fields and tolerances to track changes 57 38 field_names =['Vx','Vy','Vel','Pressure','MaskIceLevelset'] 58 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13 ]#,1e-13,1e-13]39 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13] 59 40 field_values=[\ 60 41 md.results.TransientSolution[0].Vx,\ … … 62 43 md.results.TransientSolution[0].Vel,\ 63 44 md.results.TransientSolution[0].Pressure,\ 64 #md.results.TransientSolution[0].MaskIceLevelset,\45 md.results.TransientSolution[0].MaskIceLevelset,\ 65 46 md.results.TransientSolution[1].Vx,\ 66 47 md.results.TransientSolution[1].Vy,\ 67 48 md.results.TransientSolution[1].Vel,\ 68 49 md.results.TransientSolution[1].Pressure,\ 69 #md.results.TransientSolution[1].MaskIceLevelset,\50 md.results.TransientSolution[1].MaskIceLevelset,\ 70 51 ]
Note:
See TracChangeset
for help on using the changeset viewer.