Changeset 17600


Ignore:
Timestamp:
03/28/14 16:09:25 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: relaxed constrain for free surface bed when floating, and removed +1 shift in dof for constraints (really a headhache), use C convention all over now

Location:
issm/trunk-jpl/src/c
Files:
12 edited

Legend:

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

    r17585 r17600  
    134134                                if (!xIsNan<IssmDouble>(spcvector[i])){
    135135
    136                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,heatcapacity*(spcvector[i]-referencetemperature),EnthalpyAnalysisEnum));
     136                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,heatcapacity*(spcvector[i]-referencetemperature),EnthalpyAnalysisEnum));
    137137                                        count++;
    138138
     
    167167
    168168                                if(spcpresent){
    169                                         constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,N,times,values,EnthalpyAnalysisEnum));
     169                                        constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,N,times,values,EnthalpyAnalysisEnum));
    170170                                        count++;
    171171                                }
     
    12011201
    12021202                node=element->GetNode(indices[i]);
    1203                 if (setspc)
    1204                         node->ApplyConstraint(1,h_pmp); /*apply spc*/
     1203                if(setspc)
     1204                        node->ApplyConstraint(0,h_pmp); /*apply spc*/
    12051205                else                   
    12061206                        node->DofInFSet(0); /*remove spc*/
  • issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp

    r17585 r17600  
    334334                                /* if ice, set dirichlet BC */
    335335                                extvar_input->GetInputValue(&value,gauss);
    336                                 node->ApplyConstraint(1,value);
     336                                node->ApplyConstraint(0,value);
    337337                        }
    338338                        else {
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp

    r17585 r17600  
    388388                                if(phi>=0.){
    389389                                        base_input->GetInputValue(&base,gauss);
    390                                         element->nodes[iv]->ApplyConstraint(1,base);
     390                                        element->nodes[iv]->ApplyConstraint(0,base);
    391391                                }
     392                                else{
     393                                        element->nodes[iv]->DofInFSet(0);
     394                                }
    392395                        }
    393396                }
  • issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp

    r17521 r17600  
    396396                                node=element->GetNode(k);
    397397                                if(node->IsActive()){
    398                                         node->ApplyConstraint(1,lsf[k]);
     398                                        node->ApplyConstraint(0,lsf[k]);
    399399                                }
    400400                        }
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r17585 r17600  
    433433                        }
    434434                        if(iomodel->meshtype==Mesh3DEnum || iomodel->meshtype==Mesh3DtetrasEnum){
    435                                 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,1);
    436                                 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,2);
    437                                 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,3);
     435                                IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
     436                                IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1);
     437                                IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,2);
    438438                                iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum);
    439439                        }
    440440                        else if (iomodel->meshtype==Mesh2DverticalEnum){
    441                                 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,1);
    442                                 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,2);
     441                                IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
     442                                IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,1);
    443443                                iomodel->DeleteData(spcvz,StressbalanceSpcvyEnum);
    444444                        }
     
    461461                                                if(iomodel->my_vertices[i]){
    462462                                                        if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
    463                                                                 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
     463                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    464464                                                                count++;
    465465                                                        }
     
    471471                                                if(iomodel->my_vertices[i]){
    472472                                                        if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
    473                                                                 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
     473                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    474474                                                                count++;
    475475                                                        }
     
    481481                                                if(iomodel->my_vertices[i]){
    482482                                                        if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
    483                                                                 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
     483                                                                constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
    484484                                                                count++;
    485485                                                        }
     
    498498                }
    499499                else{
    500                         IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,1);
     500                        IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
    501501                        if(iomodel->meshtype!=Mesh2DverticalEnum){
    502                                 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,2);
     502                                IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1);
    503503                        }
    504504                }
     
    547547                                /*If grionSSA, spc HO dofs: 3 & 4*/
    548548                                        if (reCast<int,IssmDouble>(nodeonHO[i])){
     549                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     550                                                count++;
    549551                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    550552                                                count++;
    551                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    552                                                 count++;
    553553                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    554                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     554                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    555555                                                        count++;
    556556                                                }
    557557                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    558                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     558                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    559559                                                        count++;
    560560                                                }
     
    562562                                        }
    563563                                        else if (reCast<int,IssmDouble>(nodeonSSA[i])){
     564                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     565                                                count++;
    564566                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    565567                                                count++;
    566                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    567                                                 count++;
    568568                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    569                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     569                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    570570                                                        count++;
    571571                                                }
    572572                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    573                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     573                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    574574                                                        count++;
    575575                                                }
     
    582582                                /*If grion,HO spc FS dofs: 3 4 & 5*/
    583583                                        if (reCast<int,IssmDouble>(nodeonHO[i])){
     584                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     585                                                count++;
    584586                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    585587                                                count++;
    586588                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    587589                                                count++;
    588                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    589                                                 count++;
    590590                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    591                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     591                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    592592                                                        count++;
    593593                                                }
    594594                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    595                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     595                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    596596                                                        count++;
    597597                                                }
     
    599599                                        }
    600600                                        else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc HO nodes: 1 & 2
     601                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     602                                                count++;
    601603                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    602604                                                count++;
    603                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    604                                                 count++;
    605605                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    606                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     606                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    607607                                                        count++;
    608608                                                }
    609609                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    610                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     610                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    611611                                                        count++;
    612612                                                }
    613613                                                if (!xIsNan<IssmDouble>(spcvz[i])){
    614                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     614                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    615615                                                        count++;
    616616                                                }
     
    622622                                /*If grion,HO spc FS dofs: 3 4 & 5*/
    623623                                        if (reCast<int,IssmDouble>(nodeonSSA[i])){
     624                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     625                                                count++;
    624626                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    625627                                                count++;
    626628                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    627629                                                count++;
    628                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    629                                                 count++;
    630630                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    631                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     631                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    632632                                                        count++;
    633633                                                }
    634634                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    635                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     635                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    636636                                                        count++;
    637637                                                }
     
    639639                                        }
    640640                                        else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc SSA nodes: 1 & 2
     641                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     642                                                count++;
    641643                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    642644                                                count++;
    643                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    644                                                 count++;
    645645                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    646                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     646                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    647647                                                        count++;
    648648                                                }
    649649                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    650                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     650                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    651651                                                        count++;
    652652                                                }
    653653                                                if (!xIsNan<IssmDouble>(spcvz[i])){
    654                                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     654                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    655655                                                        count++;
    656656                                                }
     
    661661                        else{
    662662                                if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){
    663                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     663                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    664664                                        count++;
    665665
     
    675675
    676676                                        if(spcpresent){
    677                                                 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Nx,timesx,values,StressbalanceAnalysisEnum));
     677                                                constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,Nx,timesx,values,StressbalanceAnalysisEnum));
    678678                                                count++;
    679679                                        }
     
    681681                                }
    682682                                else if (vertices_type[i]==SIAApproximationEnum){
    683                                         constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum));
     683                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,StressbalanceAnalysisEnum));
    684684                                        count++;
    685685                                }
    686686
    687687                                if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){
    688                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
     688                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
    689689                                        count++;
    690690                                }
     
    698698                                        }
    699699                                        if(spcpresent){
    700                                                 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Ny,timesy,values,StressbalanceAnalysisEnum));
     700                                                constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Ny,timesy,values,StressbalanceAnalysisEnum));
    701701                                                count++;
    702702                                        }
     
    704704                                }
    705705                                else if (vertices_type[i]==SIAApproximationEnum){
    706                                         constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,StressbalanceAnalysisEnum));
     706                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum));
    707707                                        count++;
    708708                                }
     
    710710                                if (reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum ||  (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){
    711711                                        if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){
    712                                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     712                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    713713                                                count++;
    714714                                        }
     
    722722                                                }
    723723                                                if(spcpresent){
    724                                                         constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,Nz,timesz,values,StressbalanceAnalysisEnum));
     724                                                        constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Nz,timesz,values,StressbalanceAnalysisEnum));
    725725                                                        count++;
    726726                                                }
     
    730730                                }
    731731                                if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){
    732                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     732                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    733733                                        count++;
    734734                                }
  • issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

    r17585 r17600  
    114114                        if (reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])!=SIAApproximationEnum){
    115115
     116                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));
     117                                count++;
     118
    116119                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum));
    117                                 count++;
    118 
    119                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceSIAAnalysisEnum));
    120120                                count++;
    121121                        }
    122122                        else{
    123123                                if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvxEnum)[i])){
    124                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(StressbalanceSpcvxEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     124                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,iomodel->Data(StressbalanceSpcvxEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    125125                                        count++;
    126126                                }
    127127
    128128                                if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvyEnum)[i])){
    129                                         constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data(StressbalanceSpcvyEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     129                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(StressbalanceSpcvyEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    130130                                        count++;
    131131                                }
  • issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp

    r17585 r17600  
    7474
    7575                        if (reCast<int,IssmDouble>(iomodel->Data(FlowequationBorderFSEnum)[i])){
    76                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
     76                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
    7777                                count++;
    7878                        }
    7979                        else if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvzEnum)[i])){
    80                                 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
     80                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,
    8181                                                                iomodel->Data(StressbalanceSpcvzEnum)[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    8282                                count++;
  • issm/trunk-jpl/src/c/classes/Constraints/SpcDynamic.cpp

    r15104 r17600  
    124124
    125125        Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
    126         pos=node->GetDof(dof-1,GsetEnum);
     126        pos=node->GetDof(dof,GsetEnum);
    127127
    128128        this->value=yg_serial[pos];
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r17585 r17600  
    25052505                if(isonbed==1.){
    25062506                        input->GetInputValue(&value,gauss);
    2507                         this->nodes[iv]->ApplyConstraint(1,value);
     2507                        this->nodes[iv]->ApplyConstraint(0,value);
    25082508                }
    25092509        }
     
    25282528                gauss->GaussNode(P1Enum,indices[i]);
    25292529                input->GetInputValue(&value,gauss);
    2530                 this->nodes[indices[i]]->ApplyConstraint(1,value);
     2530                this->nodes[indices[i]]->ApplyConstraint(0,value);
    25312531        }
    25322532        delete gauss;
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r17585 r17600  
    20022002                if(isonbed==1.){
    20032003                        input->GetInputValue(&value,gauss);
    2004                         this->nodes[iv]->ApplyConstraint(1,value);
     2004                        this->nodes[iv]->ApplyConstraint(0,value);
    20052005                }
    20062006        }
     
    20262026                gauss->GaussNode(P1Enum,indices[i]);
    20272027                input->GetInputValue(&value,gauss);
    2028                 this->nodes[indices[i]]->ApplyConstraint(1,value);
     2028                this->nodes[indices[i]]->ApplyConstraint(0,value);
    20292029        }
    20302030        delete gauss;
  • issm/trunk-jpl/src/c/classes/Node.cpp

    r17513 r17600  
    7878                        if(in_approximation==SSAFSApproximationEnum && reCast<int>(iomodel->Data(FlowequationBorderSSAEnum)[io_index])){
    7979                                if(!reCast<int>(iomodel->Data(MeshVertexonbedEnum)[io_index])){
    80                                         for(k=1;k<=2;k++) this->FreezeDof(k);
     80                                        for(k=0;k<=1;k++) this->FreezeDof(k);
    8181                                }
    8282                        }
     
    383383        /*Dof should be added in the s set, describing which
    384384         * dofs are constrained to a certain value (dirichlet boundary condition*/
    385         DofInSSet(dof-1);
    386         this->indexing.svalues[dof-1]=value;
     385        DofInSSet(dof);
     386        this->indexing.svalues[dof]=value;
    387387}
    388388/*}}}*/
     
    405405
    406406        /*Dof should be added to the f-set, and taken out of the s-set:*/
    407         DofInFSet(dof-1);
    408         this->indexing.svalues[dof-1]=0.;
     407        DofInFSet(dof);
     408        this->indexing.svalues[dof]=0.;
    409409}
    410410/*}}}*/
     
    468468void  Node::FreezeDof(int dof){
    469469
    470         DofInSSet(dof-1); //with 0 displacement for this dof.
     470        DofInSSet(dof); //with 0 displacement for this dof.
    471471
    472472}
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h

    r15654 r17600  
    88
    99/* local prototypes: */
    10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=1);
    11 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=1);
     10void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0);
     11void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
    1212
    1313#endif  /* _IOMODELTOELEMENTINPUTX_H */
Note: See TracChangeset for help on using the changeset viewer.