Changeset 17210


Ignore:
Timestamp:
02/04/14 16:04:28 (11 years ago)
Author:
jbondzio
Message:

revert to r17207

Location:
issm/trunk-jpl
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/externalpackages/ipython/install.sh

    r15921 r17210  
    77mkdir src
    88
    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'
     9if [ ! -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'
     12fi
    1113
    1214#Untar
  • issm/trunk-jpl/externalpackages/matplotlib/install-linux64.sh

    r13371 r17210  
    88export FFLAGS=-ff2c
    99
    10 git clone https://github.com/matplotlib/matplotlib
    11 mv matplotlib src
     10if [ ! -d src ]; then
     11        git clone https://github.com/matplotlib/matplotlib
     12        mv matplotlib src
     13fi
    1214cd src
    1315python setup.py build
  • issm/trunk-jpl/externalpackages/vim/addons/vimrc

    r16549 r17210  
    100100
    101101" save & "make" the current file in all modes
    102 map <F8> :w <Enter> :make <Enter><Enter>
    103 map! <F8>  <ESC> :w <Enter> :make <Enter><Enter>
     102map <F6> :w <Enter> :make <Enter><Enter>
     103map! <F6>  <ESC> :w <Enter> :make <Enter><Enter>
    104104" 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>
     105map <F5> :w <Enter> :make update <Enter><Enter>
     106map! <F5> <ESC> :w <Enter> :make update <Enter><Enter>
     107
     108" switch between tabs
     109nmap <F7> :tabp <CR>
     110nmap <F8> :tabn <CR>
    107111
    108112
     
    141145  autocmd BufWritePost   *.sh         !chmod +x %
    142146
     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>
    143156endif " has("autocmd")
    144157" ----------------------------------------------------------------------}}}
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp

    r17166 r17210  
    826826        int solution_type, i;
    827827        bool computebasalmeltingrates=true;
    828         bool isdrainage=true;
     828        bool isdrainage=false;
    829829        bool updatebasalconstraints=true;
    830830
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r17208 r17210  
    6767        bool save_results;
    6868
     69        /* extrapolate */
     70        Analysis* analysis = new ExtrapolationAnalysis();
     71        femmodel->parameters->SetParam(VxEnum,ExtrapolationVariableEnum);
     72        analysis->Core(femmodel);
     73        delete analysis;
     74
    6975        /*activate formulation: */
    7076        femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
    7177
     78        /*recover parameters: */
     79        femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
     80
    7281        if(VerboseSolution()) _printf0_("call computational core:\n");
    7382        solutionsequence_linear(femmodel);
    7483
    75         /*recover parameters: */
    76         femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
    7784        if(save_results){
    7885                if(VerboseSolution()) _printf0_("   saving results\n");
     
    317324}/*}}}*/
    318325
    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 step
    347         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  
    3131        void GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    3232
    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);
    3733};
    3834#endif
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r17208 r17210  
    13681368
    13691369        /*If no front, return NULL*/
    1370         if(!element->IsIcefront()) return NULL;
     1370        if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
    13711371
    13721372        /*Intermediaries*/
     
    13911391        IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
    13921392        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);
    13971394        element->NormalSection(&normal[0],xyz_list_front);
    1398 //      element->GetNormalFromLSF(&normal[0]);
    13991395
    14001396        /*Start looping on Gaussian points*/
     
    17851781
    17861782        /*If no front, return NULL*/
    1787         if(!element->IsIcefront()) return NULL;
     1783        if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
    17881784
    17891785        /*Intermediaries*/
     
    22082204
    22092205        /*If no front, return NULL*/
    2210         if(!element->IsIcefront()) return NULL;
     2206        if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
    22112207
    22122208        /*Intermediaries*/
     
    29742970
    29752971        /*If no front, return NULL*/
    2976         if(!element->IsIcefront()) return NULL;
     2972        if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
    29772973
    29782974        /*Intermediaries*/
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r17208 r17210  
    220220                virtual int    PressureInterpolation()=0;
    221221                virtual bool   IsZeroLevelset(int levelset_enum)=0;
    222                 virtual bool   IsIcefront(void)=0;
    223222                virtual void   ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0;
    224223                virtual void   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r17208 r17210  
    114114                int    PressureInterpolation();
    115115                bool   IsZeroLevelset(int levelset_enum);
    116                 bool   IsIcefront(void){_error_("not implemented yet");};
    117116                void   ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
    118117                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  
    159159                void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
    160160                bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
    161                 bool            IsIcefront(void){_error_("not implemented yet");};
    162161                void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
    163162                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  
    909909                }
    910910        }
    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
    919912        IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes);
    920913        /* Return nodes */
    921914        for(i=0;i<nrfrontnodes;i++){
    922915                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        }
    935919
    936920        *pxyz_front=xyz_front;
     
    938922        xDelete<int>(indicesfront);
    939923}/*}}}*/
    940 void  Tria::GetNormalFromLSF(IssmDouble *normal){/*{{{*/
     924void  Tria::GetNormalFromLSF(IssmDouble *pnormal){/*{{{*/
    941925
    942926        /* Intermediaries */
     
    945929        IssmDouble* xyz_list = NULL;
    946930        IssmDouble  dlevelset[dim], norm_dlevelset;
     931        IssmDouble  normal[dim]={0.};
    947932
    948933        /*Retrieve all inputs and parameters*/
     
    951936       
    952937        counter=0;
    953         for(i=0;i<dim;i++) normal[i]=0.;
    954 
    955938        Gauss* gauss = this->NewGauss(2);
    956939        for(int ig=gauss->begin();ig<gauss->end();ig++){
     
    964947        }
    965948        _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];
    967952
    968953        delete gauss;
     
    26012586        GetInputListOnVertices(&ls[0],levelset_enum);
    26022587
    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*/
    26042589        iszerols= false;
    26052590        if(IsIceInElement()){
     
    26122597}
    26132598/*}}}*/
    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 
    26362599
    26372600#ifdef _HAVE_RESPONSES_
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r17208 r17210  
    132132                void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
    133133                void        GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
    134                 void        GetNormalFromLSF(IssmDouble *normal);
     134            void        GetNormalFromLSF(IssmDouble *pnormal);
    135135                bool        IsZeroLevelset(int levelset_enum);
    136                 bool        IsIcefront(void);
    137136
    138137                #ifdef _HAVE_RESPONSES_
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r17162 r17210  
    407407        if(VerboseModule()) _printf0_("   Updating constraints for time: " << time << "\n");
    408408
     409        // analysis->UpdateConstraints();
     410       
    409411        /*Second, constraints might be time dependent: */
    410412        SpcNodesx(nodes,constraints,parameters,analysis_type);
  • issm/trunk-jpl/src/c/cores/transient_core.cpp

    r17208 r17210  
    162162                if(islevelset){
    163163                        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;
    180167                }
    181168
  • issm/trunk-jpl/test/NightlyRun/test336.py

    r17209 r17210  
    88from MatlabFuncs import *
    99
    10 md=triangle(model(),'../Exp/Square.exp',100000.)
     10md=triangle(model(),'../Exp/Square.exp',150000.)
    1111md=setmask(md,'','')
    1212md=parameterize(md,'../Par/SquareSheetConstrained.py')
     
    2020md.transient.isgroundingline=False
    2121md.transient.isgia=False
    22 md.transient.islevelset=False
     22md.transient.islevelset=True
    2323
    2424# init levelset function
     
    2727xmin=min(md.mesh.x)
    2828xmax=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
     29xmed=(xmax+xmin)/2
     30ymed=(ymax+ymin)/2
     31distx=numpy.absolute(md.mesh.x.reshape(-1,1)-xmed)
     32disty=numpy.absolute(md.mesh.y.reshape(-1,1)-ymed)
     33md.mask.ice_levelset=numpy.maximum(distx,disty)-1.e5
    5334
    5435md=solve(md,TransientSolutionEnum())
     
    5637#Fields and tolerances to track changes
    5738field_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]
     39field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
    5940field_values=[\
    6041        md.results.TransientSolution[0].Vx,\
     
    6243        md.results.TransientSolution[0].Vel,\
    6344        md.results.TransientSolution[0].Pressure,\
    64 #       md.results.TransientSolution[0].MaskIceLevelset,\
     45        md.results.TransientSolution[0].MaskIceLevelset,\
    6546        md.results.TransientSolution[1].Vx,\
    6647        md.results.TransientSolution[1].Vy,\
    6748        md.results.TransientSolution[1].Vel,\
    6849        md.results.TransientSolution[1].Pressure,\
    69 #       md.results.TransientSolution[1].MaskIceLevelset,\
     50        md.results.TransientSolution[1].MaskIceLevelset,\
    7051        ]
Note: See TracChangeset for help on using the changeset viewer.