Changeset 13975 for issm/trunk/src/c/classes/objects/Loads/Riftfront.cpp
- Timestamp:
- 11/16/12 08:10:16 (12 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk
- Property svn:mergeinfo changed
/issm/trunk-jpl merged: 13397-13398,13401,13407-13582,13584-13974
- Property svn:mergeinfo changed
-
issm/trunk/src
- Property svn:mergeinfo changed
-
issm/trunk/src/c/classes/objects/Loads/Riftfront.cpp
r13395 r13975 97 97 //intialize inputs, and add as many inputs per element as requested: 98 98 this->inputs=new Inputs(); 99 99 100 100 riftfront_type=SegmentRiftfrontEnum; 101 101 riftfront_fill = reCast<int,IssmDouble>(*(iomodel->Data(RiftsRiftstructEnum)+RIFTINFOSIZE*i+7)); … … 109 109 this->inputs->AddInput(new DoubleInput(FractionIncrementEnum,riftfront_fractionincrement)); 110 110 this->inputs->AddInput(new BoolInput(SegmentOnIceShelfEnum,riftfront_shelf)); 111 111 112 112 //parameters and hooked fields: we still can't point to them, they may not even exist. Configure will handle this. 113 113 this->parameters=NULL; … … 115 115 this->elements= NULL; 116 116 this->matpar= NULL; 117 117 118 118 } 119 119 /*}}}*/ … … 137 137 IssmDouble friction,fractionincrement; 138 138 139 140 139 /*recover some inputs first: */ 141 140 input=(Input*)this->inputs->GetInput(FillEnum); input->GetInputValue(&fill); … … 165 164 _printLine_(" state: " << state); 166 165 _printLine_(" frozen: " << (frozen ? "true":"false")); 167 166 168 167 } 169 168 /*}}}*/ … … 186 185 int Riftfront::Id(void){ return id; } 187 186 /*}}}*/ 188 /*FUNCTION Riftfront::MyRank {{{*/189 int Riftfront::MyRank(void){190 extern int my_rank;191 return my_rank;192 }193 /*}}}*/194 187 /*FUNCTION Riftfront::ObjectEnum{{{*/ 195 188 int Riftfront::ObjectEnum(void){ … … 201 194 /*FUNCTION Riftfront::copy {{{*/ 202 195 Object* Riftfront::copy() { 203 196 204 197 Riftfront* riftfront=NULL; 205 198 … … 240 233 riftfront->length=this->length; 241 234 riftfront->fraction=this->fraction; 242 235 243 236 return riftfront; 244 237 245 238 } 246 239 /*}}}*/ 247 240 248 241 /*Update virtual functions definitions:*/ 249 242 /*FUNCTION Riftfront::InputUpdateFromConstant(bool constant,int name) {{{*/ … … 281 274 } 282 275 /*}}}*/ 283 284 276 285 277 /*Load virtual functions definitions:*/ … … 301 293 this->parameters=parametersin; 302 294 295 } 296 /*}}}*/ 297 /*FUNCTION Riftfront::IsPenalty{{{*/ 298 bool Riftfront::IsPenalty(void){ 299 return true; 303 300 } 304 301 /*}}}*/ … … 372 369 } 373 370 /*}}}*/ 371 /*FUNCTION Riftfront::GetNodesSidList{{{*/ 372 void Riftfront::GetNodesSidList(int* sidlist){ 373 374 _assert_(sidlist); 375 _assert_(nodes); 376 377 for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid(); 378 } 379 /*}}}*/ 380 /*FUNCTION Riftfront::GetNumberOfNodes{{{*/ 381 int Riftfront::GetNumberOfNodes(void){ 382 383 return NUMVERTICES; 384 } 385 /*}}}*/ 374 386 /*FUNCTION Riftfront::InAnalysis{{{*/ 375 387 bool Riftfront::InAnalysis(int in_analysis_type){ … … 378 390 } 379 391 /*}}}*/ 392 /*FUNCTION Riftfront::SetwiseNodeConnectivity{{{*/ 393 void Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){ 394 395 /*Output */ 396 int d_nz = 0; 397 int o_nz = 0; 398 399 /*Loop over all nodes*/ 400 for(int i=0;i<NUMVERTICES;i++){ 401 402 if(!flags[this->nodes[i]->Sid()]){ 403 404 /*flag current node so that no other element processes it*/ 405 flags[this->nodes[i]->Sid()]=true; 406 407 /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/ 408 switch(set2_enum){ 409 case FsetEnum: 410 if(nodes[i]->indexing.fsize){ 411 if(this->nodes[i]->IsClone()) 412 o_nz += 1; 413 else 414 d_nz += 1; 415 } 416 break; 417 case GsetEnum: 418 if(nodes[i]->indexing.gsize){ 419 if(this->nodes[i]->IsClone()) 420 o_nz += 1; 421 else 422 d_nz += 1; 423 } 424 break; 425 case SsetEnum: 426 if(nodes[i]->indexing.ssize){ 427 if(this->nodes[i]->IsClone()) 428 o_nz += 1; 429 else 430 d_nz += 1; 431 } 432 break; 433 default: _error_("not supported"); 434 } 435 } 436 } 437 438 /*Assign output pointers: */ 439 *pd_nz=d_nz; 440 *po_nz=o_nz; 441 } 442 /*}}}*/ 380 443 381 444 /*Riftfront numerics*/ … … 384 447 385 448 const int numdof = NDOF2*NUMVERTICES; 386 int i,j;387 449 int dofs[1] = {0}; 388 IssmDouble Ke_gg[4][4]; 389 IssmDouble thickness; 390 IssmDouble h[2]; 391 IssmDouble penalty_offset; 392 IssmDouble friction; 450 IssmDouble thickness; 451 IssmDouble h[2]; 452 IssmDouble penalty_offset; 453 IssmDouble friction; 393 454 394 455 /*Objects: */ … … 466 527 ElementVector* Riftfront::PenaltyCreatePVectorDiagnosticHoriz(IssmDouble kmax){ 467 528 468 const int 469 int i,j;470 IssmDouble 471 IssmDouble 472 IssmDouble 473 IssmDouble 474 IssmDouble 475 IssmDouble 476 IssmDouble 477 IssmDouble 478 IssmDouble 479 IssmDouble 480 IssmDouble 481 IssmDouble 482 int 483 bool 529 const int numdof = NDOF2*NUMVERTICES; 530 int j; 531 IssmDouble rho_ice; 532 IssmDouble rho_water; 533 IssmDouble gravity; 534 IssmDouble thickness; 535 IssmDouble h[2]; 536 IssmDouble bed; 537 IssmDouble b[2]; 538 IssmDouble pressure; 539 IssmDouble pressure_litho; 540 IssmDouble pressure_air; 541 IssmDouble pressure_melange; 542 IssmDouble pressure_water; 543 int fill; 544 bool shelf; 484 545 485 546 /*Objects: */ 486 Tria *tria1= NULL;487 Tria *tria2= NULL;547 Tria *tria1 = NULL; 548 Tria *tria2 = NULL; 488 549 489 550 /*enum of element? */ … … 569 630 570 631 const int numnodes = 2; 571 IssmDouble max_penetration;572 632 IssmDouble penetration; 573 633 int activate; 574 int found;575 634 int unstable; 576 635 IssmDouble vx1; … … 602 661 if(this->state==OpenEnum)this->active=0; 603 662 if(this->state==ClosedEnum)this->active=1; 604 663 605 664 /*this segment is like frozen, no instability here: */ 606 665 *punstable=0; 607 666 return 1; 608 667 } 609 610 668 611 669 /*recover parameters: */ … … 674 732 int Riftfront::IsMaterialStable(void){ 675 733 676 int found=0;677 734 IssmDouble converged=0; 678 735 … … 693 750 694 751 const int numnodes=2; 695 IssmDouble max_penetration;696 752 IssmDouble penetration=0; 697 int found;698 753 IssmDouble vx1; 699 754 IssmDouble vy1; … … 729 784 /*If we are zigzag locked, same thing: */ 730 785 if(this->counter>this->penalty_lock)penetration=-1; 731 786 732 787 /*assign output pointer: */ 733 788 *ppenetration=penetration; … … 744 799 745 800 IssmDouble penetration; 746 int found;747 801 748 802 /*Objects: */ … … 768 822 /*Now, we return penetration only if we are active!: */ 769 823 if(this->active==0)penetration=0; 770 824 771 825 /*assign output pointer: */ 772 826 *ppenetration=penetration; … … 777 831 int Riftfront::PotentialUnstableConstraint(int* punstable){ 778 832 779 780 833 const int numnodes = 2; 781 IssmDouble max_penetration; 782 IssmDouble penetration; 783 int activate; 834 IssmDouble penetration; 784 835 int unstable; 785 int found; 786 IssmDouble vx1; 787 IssmDouble vy1; 788 IssmDouble vx2; 789 IssmDouble vy2; 836 IssmDouble vx1; 837 IssmDouble vy1; 838 IssmDouble vx2; 839 IssmDouble vy2; 790 840 791 841 /*Objects: */ 792 Tria *tria1 793 Tria *tria2 842 Tria *tria1 = NULL; 843 Tria *tria2 = NULL; 794 844 795 845 /*enum of element? */ … … 833 883 IssmDouble penetration; 834 884 int unstable; 835 int found;836 885 IssmDouble vx1; 837 886 IssmDouble vy1;
Note:
See TracChangeset
for help on using the changeset viewer.