Changeset 17210
- Timestamp:
- 02/04/14 16:04:28 (11 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/externalpackages/ipython/install.sh
r15921 r17210 7 7 mkdir src 8 8 9 #Download from ISSM server 10 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ipython-1.0.0.tar.gz' 'ipython-1.0.0.tar.gz' 9 if [ ! -f ipython-1.0.0.tar.gz ]; then 10 #Download from ISSM server 11 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ipython-1.0.0.tar.gz' 'ipython-1.0.0.tar.gz' 12 fi 11 13 12 14 #Untar -
issm/trunk-jpl/externalpackages/matplotlib/install-linux64.sh
r13371 r17210 8 8 export FFLAGS=-ff2c 9 9 10 git clone https://github.com/matplotlib/matplotlib 11 mv matplotlib src 10 if [ ! -d src ]; then 11 git clone https://github.com/matplotlib/matplotlib 12 mv matplotlib src 13 fi 12 14 cd src 13 15 python setup.py build -
issm/trunk-jpl/externalpackages/vim/addons/vimrc
r16549 r17210 100 100 101 101 " save & "make" the current file in all modes 102 map <F 8> :w <Enter> :make <Enter><Enter>103 map! <F 8> <ESC> :w <Enter> :make <Enter><Enter>102 map <F6> :w <Enter> :make <Enter><Enter> 103 map! <F6> <ESC> :w <Enter> :make <Enter><Enter> 104 104 " make update: nice for longer documents 105 map <F7> :w <Enter> :make update <Enter><Enter> 106 map! <F7> <ESC> :w <Enter> :make update <Enter><Enter> 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> 107 111 108 112 … … 141 145 autocmd BufWritePost *.sh !chmod +x % 142 146 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> 143 156 endif " has("autocmd") 144 157 " ----------------------------------------------------------------------}}} -
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r17166 r17210 826 826 int solution_type, i; 827 827 bool computebasalmeltingrates=true; 828 bool isdrainage= true;828 bool isdrainage=false; 829 829 bool updatebasalconstraints=true; 830 830 -
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r17208 r17210 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"); … … 317 324 }/*}}}*/ 318 325 319 /* Update of constraints */320 void LevelsetAnalysis::UpdateNoIceConstraints(FemModel* femmodel){/*{{{*/321 322 IssmDouble* mask_ice = GetMaskOfIce(femmodel->elements, femmodel->nodes);323 324 for (int i=0;i<femmodel->nodes->Size();i++){325 Node* node=dynamic_cast<Node*>(femmodel->nodes->GetObjectByOffset(i));326 if(node->InAnalysis(LevelsetAnalysisEnum)){327 if(mask_ice[node->Sid()]==1.){//FIXME: what should be done with actual spcs to ice model?328 // node->DofInFSet(0); /*remove spc*/329 }330 else{331 IssmDouble defval=0.;332 node->ApplyConstraint(1,defval); /*apply spc*/333 }334 }335 }336 }/*}}}*/337 IssmDouble* LevelsetAnalysis::GetMaskOfIce(Elements* elements, Nodes* nodes){/*{{{*/338 339 int i;340 IssmDouble* mask_ice = NULL;341 Vector<IssmDouble>* vec_mask_ice = NULL;342 Element* element = NULL;343 344 /*Initialize vector with number of vertices*/345 IssmDouble numnodes=nodes->NumberOfNodes(LevelsetAnalysisEnum);346 vec_mask_ice=new Vector<IssmDouble>(numnodes); //nodes at ice front that have ice at next time step347 for(i=0;i<numnodes;i++)348 vec_mask_ice[i]=0.;349 /*Fill vector vertices that have no contact to ice: */350 for(i=0;i<elements->Size();i++){351 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));352 SetMaskOfIceElement(vec_mask_ice, element);353 }354 355 /*Assemble vector and serialize */356 vec_mask_ice->Assemble();357 mask_ice=vec_mask_ice->ToMPISerial();358 delete vec_mask_ice;359 return mask_ice;360 361 }/*}}}*/362 void LevelsetAnalysis::SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element){/*{{{*/363 364 /* Intermediaries */365 int numnodes = element->GetNumberOfNodes();366 367 if(element->IsIceInElement()){368 for(int i = 0;i<numnodes;i++){369 vec_mask_ice->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);370 }371 }372 }/*}}}*/ -
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h
r17208 r17210 31 31 void GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss); 32 32 33 /* Updating constraints */34 void UpdateNoIceConstraints(FemModel* femmodel);35 IssmDouble* GetMaskOfIce(Elements* elements, Nodes* nodes);36 void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element);37 33 }; 38 34 #endif -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17208 r17210 1368 1368 1369 1369 /*If no front, return NULL*/ 1370 if(!element->Is Icefront()) return NULL;1370 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 1371 1371 1372 1372 /*Intermediaries*/ … … 1391 1391 IssmDouble gravity = element->GetMaterialParameter(ConstantsGEnum); 1392 1392 element->GetVerticesCoordinates(&xyz_list); 1393 1394 // element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1395 element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1396 1393 element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum); 1397 1394 element->NormalSection(&normal[0],xyz_list_front); 1398 // element->GetNormalFromLSF(&normal[0]);1399 1395 1400 1396 /*Start looping on Gaussian points*/ … … 1785 1781 1786 1782 /*If no front, return NULL*/ 1787 if(!element->Is Icefront()) return NULL;1783 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 1788 1784 1789 1785 /*Intermediaries*/ … … 2208 2204 2209 2205 /*If no front, return NULL*/ 2210 if(!element->Is Icefront()) return NULL;2206 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 2211 2207 2212 2208 /*Intermediaries*/ … … 2974 2970 2975 2971 /*If no front, return NULL*/ 2976 if(!element->Is Icefront()) return NULL;2972 if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL; 2977 2973 2978 2974 /*Intermediaries*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r17208 r17210 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
r17208 r17210 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
r17208 r17210 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
r17208 r17210 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; … … 2601 2586 GetInputListOnVertices(&ls[0],levelset_enum); 2602 2587 2603 /* 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*/ 2604 2589 iszerols= false; 2605 2590 if(IsIceInElement()){ … … 2612 2597 } 2613 2598 /*}}}*/ 2614 /*FUNCTION Tria::IsIcefront{{{*/2615 bool Tria::IsIcefront(void){2616 2617 bool isicefront;2618 int i,nrice;2619 IssmDouble ls[NUMVERTICES];2620 2621 /*Retrieve all inputs and parameters*/2622 GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);2623 2624 /* If only one vertex has ice, there is an ice front here */2625 isicefront= false;2626 if(IsIceInElement()){2627 nrice=0;2628 for(i=0;i<NUMVERTICES;i++)2629 if(ls[i]<0.) nrice++;2630 if(nrice==1) isicefront= true;2631 }2632 return isicefront;2633 }2634 /*}}}*/2635 2636 2599 2637 2600 #ifdef _HAVE_RESPONSES_ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r17208 r17210 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
r17162 r17210 407 407 if(VerboseModule()) _printf0_(" Updating constraints for time: " << time << "\n"); 408 408 409 // analysis->UpdateConstraints(); 410 409 411 /*Second, constraints might be time dependent: */ 410 412 SpcNodesx(nodes,constraints,parameters,analysis_type); -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r17208 r17210 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; i<2;i++){ 169 femmodel->parameters->SetParam(vars[i],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 /* update spc boundary conditions for ice model */ 178 // lsanalysis->UpdateNoIceConstraints(femmodel); 179 delete lsanalysis; 164 analysis = new LevelsetAnalysis(); 165 analysis->Core(femmodel); 166 delete analysis; 180 167 } 181 168 -
issm/trunk-jpl/test/NightlyRun/test336.py
r17209 r17210 8 8 from MatlabFuncs import * 9 9 10 md=triangle(model(),'../Exp/Square.exp',1 00000.)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.