Changeset 17600
- Timestamp:
- 03/28/14 16:09:25 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r17585 r17600 134 134 if (!xIsNan<IssmDouble>(spcvector[i])){ 135 135 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)); 137 137 count++; 138 138 … … 167 167 168 168 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)); 170 170 count++; 171 171 } … … 1201 1201 1202 1202 node=element->GetNode(indices[i]); 1203 if 1204 node->ApplyConstraint( 1,h_pmp); /*apply spc*/1203 if(setspc) 1204 node->ApplyConstraint(0,h_pmp); /*apply spc*/ 1205 1205 else 1206 1206 node->DofInFSet(0); /*remove spc*/ -
issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
r17585 r17600 334 334 /* if ice, set dirichlet BC */ 335 335 extvar_input->GetInputValue(&value,gauss); 336 node->ApplyConstraint( 1,value);336 node->ApplyConstraint(0,value); 337 337 } 338 338 else { -
issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
r17585 r17600 388 388 if(phi>=0.){ 389 389 base_input->GetInputValue(&base,gauss); 390 element->nodes[iv]->ApplyConstraint( 1,base);390 element->nodes[iv]->ApplyConstraint(0,base); 391 391 } 392 else{ 393 element->nodes[iv]->DofInFSet(0); 394 } 392 395 } 393 396 } -
issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp
r17521 r17600 396 396 node=element->GetNode(k); 397 397 if(node->IsActive()){ 398 node->ApplyConstraint( 1,lsf[k]);398 node->ApplyConstraint(0,lsf[k]); 399 399 } 400 400 } -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17585 r17600 433 433 } 434 434 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); 438 438 iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum); 439 439 } 440 440 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); 443 443 iomodel->DeleteData(spcvz,StressbalanceSpcvyEnum); 444 444 } … … 461 461 if(iomodel->my_vertices[i]){ 462 462 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)); 464 464 count++; 465 465 } … … 471 471 if(iomodel->my_vertices[i]){ 472 472 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)); 474 474 count++; 475 475 } … … 481 481 if(iomodel->my_vertices[i]){ 482 482 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)); 484 484 count++; 485 485 } … … 498 498 } 499 499 else{ 500 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement, 1);500 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0); 501 501 if(iomodel->meshtype!=Mesh2DverticalEnum){ 502 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement, 2);502 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1); 503 503 } 504 504 } … … 547 547 /*If grionSSA, spc HO dofs: 3 & 4*/ 548 548 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++; 549 551 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. 550 552 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++;553 553 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. 555 555 count++; 556 556 } 557 557 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. 559 559 count++; 560 560 } … … 562 562 } 563 563 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++; 564 566 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. 565 567 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++;568 568 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. 570 570 count++; 571 571 } 572 572 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. 574 574 count++; 575 575 } … … 582 582 /*If grion,HO spc FS dofs: 3 4 & 5*/ 583 583 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++; 584 586 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. 585 587 count++; 586 588 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. 587 589 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++;590 590 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. 592 592 count++; 593 593 } 594 594 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. 596 596 count++; 597 597 } … … 599 599 } 600 600 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++; 601 603 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. 602 604 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++;605 605 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. 607 607 count++; 608 608 } 609 609 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. 611 611 count++; 612 612 } 613 613 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. 615 615 count++; 616 616 } … … 622 622 /*If grion,HO spc FS dofs: 3 4 & 5*/ 623 623 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++; 624 626 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. 625 627 count++; 626 628 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. 627 629 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++;630 630 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. 632 632 count++; 633 633 } 634 634 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. 636 636 count++; 637 637 } … … 639 639 } 640 640 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++; 641 643 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. 642 644 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++;645 645 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. 647 647 count++; 648 648 } 649 649 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. 651 651 count++; 652 652 } 653 653 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. 655 655 count++; 656 656 } … … 661 661 else{ 662 662 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. 664 664 count++; 665 665 … … 675 675 676 676 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)); 678 678 count++; 679 679 } … … 681 681 } 682 682 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)); 684 684 count++; 685 685 } 686 686 687 687 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. 689 689 count++; 690 690 } … … 698 698 } 699 699 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)); 701 701 count++; 702 702 } … … 704 704 } 705 705 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)); 707 707 count++; 708 708 } … … 710 710 if (reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){ 711 711 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 vy712 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 713 713 count++; 714 714 } … … 722 722 } 723 723 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)); 725 725 count++; 726 726 } … … 730 730 } 731 731 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 vy732 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 733 733 count++; 734 734 } -
issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
r17585 r17600 114 114 if (reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])!=SIAApproximationEnum){ 115 115 116 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum)); 117 count++; 118 116 119 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));120 120 count++; 121 121 } 122 122 else{ 123 123 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. 125 125 count++; 126 126 } 127 127 128 128 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 vy129 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 130 130 count++; 131 131 } -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r17585 r17600 74 74 75 75 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 FS76 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 77 77 count++; 78 78 } 79 79 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, 81 81 iomodel->Data(StressbalanceSpcvzEnum)[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 82 82 count++; -
issm/trunk-jpl/src/c/classes/Constraints/SpcDynamic.cpp
r15104 r17600 124 124 125 125 Node* node=(Node*)nodes->GetObjectById(NULL,nodeid); 126 pos=node->GetDof(dof -1,GsetEnum);126 pos=node->GetDof(dof,GsetEnum); 127 127 128 128 this->value=yg_serial[pos]; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r17585 r17600 2505 2505 if(isonbed==1.){ 2506 2506 input->GetInputValue(&value,gauss); 2507 this->nodes[iv]->ApplyConstraint( 1,value);2507 this->nodes[iv]->ApplyConstraint(0,value); 2508 2508 } 2509 2509 } … … 2528 2528 gauss->GaussNode(P1Enum,indices[i]); 2529 2529 input->GetInputValue(&value,gauss); 2530 this->nodes[indices[i]]->ApplyConstraint( 1,value);2530 this->nodes[indices[i]]->ApplyConstraint(0,value); 2531 2531 } 2532 2532 delete gauss; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17585 r17600 2002 2002 if(isonbed==1.){ 2003 2003 input->GetInputValue(&value,gauss); 2004 this->nodes[iv]->ApplyConstraint( 1,value);2004 this->nodes[iv]->ApplyConstraint(0,value); 2005 2005 } 2006 2006 } … … 2026 2026 gauss->GaussNode(P1Enum,indices[i]); 2027 2027 input->GetInputValue(&value,gauss); 2028 this->nodes[indices[i]]->ApplyConstraint( 1,value);2028 this->nodes[indices[i]]->ApplyConstraint(0,value); 2029 2029 } 2030 2030 delete gauss; -
issm/trunk-jpl/src/c/classes/Node.cpp
r17513 r17600 78 78 if(in_approximation==SSAFSApproximationEnum && reCast<int>(iomodel->Data(FlowequationBorderSSAEnum)[io_index])){ 79 79 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); 81 81 } 82 82 } … … 383 383 /*Dof should be added in the s set, describing which 384 384 * 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; 387 387 } 388 388 /*}}}*/ … … 405 405 406 406 /*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.; 409 409 } 410 410 /*}}}*/ … … 468 468 void Node::FreezeDof(int dof){ 469 469 470 DofInSSet(dof -1); //with 0 displacement for this dof.470 DofInSSet(dof); //with 0 displacement for this dof. 471 471 472 472 } -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h
r15654 r17600 8 8 9 9 /* 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);10 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0); 11 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0); 12 12 13 13 #endif /* _IOMODELTOELEMENTINPUTX_H */
Note:
See TracChangeset
for help on using the changeset viewer.