Changeset 13722
- Timestamp:
- 10/17/12 16:44:25 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r13721 r13722 496 496 responses_sources = ./modules/MinVelx/MinVelx.h\ 497 497 ./modules/MinVelx/MinVelx.cpp\ 498 ./modules/MaxVelx/MaxVelx.h\499 ./modules/MaxVelx/MaxVelx.cpp\500 ./modules/MaxAbsVxx/MaxAbsVxx.h\501 ./modules/MaxAbsVxx/MaxAbsVxx.cpp\502 ./modules/MaxAbsVyx/MaxAbsVyx.h\503 ./modules/MaxAbsVyx/MaxAbsVyx.cpp\504 ./modules/MaxAbsVzx/MaxAbsVzx.h\505 ./modules/MaxAbsVzx/MaxAbsVzx.cpp\506 ./modules/MaxVxx/MaxVxx.h\507 ./modules/MaxVxx/MaxVxx.cpp\508 ./modules/MaxVyx/MaxVyx.h\509 ./modules/MaxVyx/MaxVyx.cpp\510 ./modules/MaxVzx/MaxVzx.h\511 ./modules/MaxVzx/MaxVzx.cpp\512 498 ./modules/MinVxx/MinVxx.h\ 513 499 ./modules/MinVxx/MinVxx.cpp\ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r13721 r13722 380 380 void FemModel::Responsex(IssmDouble* responses,const char* response_descriptor,bool process_units,int weight_index){/*{{{*/ 381 381 382 383 int response_descriptor_enum; 384 385 response_descriptor_enum=StringToEnumx(response_descriptor); 382 int response_descriptor_enum=StringToEnumx(response_descriptor); 386 383 this->Responsex(responses, response_descriptor_enum, process_units, weight_index); 387 384 … … 396 393 case IceVolumeEnum: IceVolumex( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 397 394 case MinVelEnum: MinVelx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 398 case MaxVelEnum: MaxVelx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;395 case MaxVelEnum: this->MaxVelx( responses,process_units); break; 399 396 case MinVxEnum: MinVxx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 400 case MaxVxEnum: MaxVxx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;401 case MaxAbsVxEnum: MaxAbsVxx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;397 case MaxVxEnum: this->MaxVxx( responses,process_units); break; 398 case MaxAbsVxEnum: this->MaxAbsVxx( responses,process_units); break; 402 399 case MinVyEnum: MinVyx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 403 case MaxVyEnum: MaxVyx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;404 case MaxAbsVyEnum: MaxAbsVyx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;400 case MaxVyEnum: this->MaxVyx( responses,process_units); break; 401 case MaxAbsVyEnum: this->MaxAbsVyx( responses,process_units); break; 405 402 case MinVzEnum: MinVzx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 406 case MaxVzEnum: MaxVzx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;407 case MaxAbsVzEnum: MaxAbsVzx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;403 case MaxVzEnum: this->MaxVzx( responses,process_units); break; 404 case MaxAbsVzEnum: this->MaxAbsVzx( responses,process_units); break; 408 405 case MassFluxEnum: this->MassFluxx( responses,process_units); break; 409 406 case SurfaceAbsVelMisfitEnum: SurfaceAbsVelMisfitx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; … … 414 411 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 415 412 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx( responses, process_units,weight_index); break; 416 case ThicknessAlongGradientEnum: 417 case ThicknessAcrossGradientEnum: 413 case ThicknessAlongGradientEnum: ThicknessAlongGradientx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 414 case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 418 415 case TotalSmbEnum: TotalSmbx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 419 416 case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; … … 590 587 591 588 /*Free ressources:*/ 592 for(i=0; j<M;i++){593 IssmDouble* matrix=array[ j];589 for(i=0;i<M;i++){ 590 IssmDouble* matrix=array[i]; 594 591 xDelete<IssmDouble>(matrix); 595 592 } … … 600 597 /*Assign output pointers: */ 601 598 *pmass_flux=mass_flux; 599 600 }/*}}}*/ 601 void FemModel::MaxAbsVxx(IssmDouble* pmaxabsvx,bool process_units){/*{{{*/ 602 603 int i; 604 IssmDouble maxabsvx; 605 IssmDouble node_maxabsvx; 606 IssmDouble element_maxabsvx; 607 608 /*Go through elements, and request velocity: */ 609 maxabsvx=-INFINITY; 610 for(i=0;i<this->elements->Size();i++){ 611 Element* element=(Element*)this->elements->GetObjectByOffset(i); 612 element->MaxAbsVx(&element_maxabsvx,process_units); 613 if(element_maxabsvx>maxabsvx) maxabsvx=element_maxabsvx; 614 } 615 616 /*Figure out maximum across the cluster: */ 617 #ifdef _HAVE_MPI_ 618 MPI_Reduce(&maxabsvx,&node_maxabsvx,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 619 MPI_Bcast(&node_maxabsvx,1,MPI_DOUBLE,0,IssmComm::GetComm()); 620 maxabsvx=node_maxabsvx; 621 #endif 622 623 /*Assign output pointers:*/ 624 *pmaxabsvx=maxabsvx; 625 626 }/*}}}*/ 627 void FemModel::MaxAbsVyx(IssmDouble* pmaxabsvy,bool process_units){/*{{{*/ 628 629 int i; 630 IssmDouble maxabsvy; 631 IssmDouble node_maxabsvy; 632 IssmDouble element_maxabsvy; 633 634 /*Go through elements, and request velocity: */ 635 maxabsvy=-INFINITY; 636 for(i=0;i<this->elements->Size();i++){ 637 Element* element=(Element*)this->elements->GetObjectByOffset(i); 638 element->MaxAbsVy(&element_maxabsvy,process_units); 639 if(element_maxabsvy>maxabsvy) maxabsvy=element_maxabsvy; 640 } 641 642 /*Figure out maximum across the cluster: */ 643 #ifdef _HAVE_MPI_ 644 MPI_Reduce(&maxabsvy,&node_maxabsvy,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 645 MPI_Bcast(&node_maxabsvy,1,MPI_DOUBLE,0,IssmComm::GetComm()); 646 maxabsvy=node_maxabsvy; 647 #endif 648 649 /*Assign output pointers:*/ 650 *pmaxabsvy=maxabsvy; 651 652 }/*}}}*/ 653 void FemModel::MaxAbsVzx(IssmDouble* pmaxabsvz,bool process_units){/*{{{*/ 654 655 int i; 656 IssmDouble maxabsvz; 657 IssmDouble node_maxabsvz; 658 IssmDouble element_maxabsvz; 659 660 /*Go through elements, and request velocity: */ 661 maxabsvz=-INFINITY; 662 for(i=0;i<this->elements->Size();i++){ 663 Element* element=(Element*)this->elements->GetObjectByOffset(i); 664 element->MaxAbsVz(&element_maxabsvz,process_units); 665 if(element_maxabsvz>maxabsvz) maxabsvz=element_maxabsvz; 666 } 667 668 /*Figure out maximum across the cluster: */ 669 #ifdef _HAVE_MPI_ 670 MPI_Reduce(&maxabsvz,&node_maxabsvz,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 671 MPI_Bcast(&node_maxabsvz,1,MPI_DOUBLE,0,IssmComm::GetComm()); 672 maxabsvz=node_maxabsvz; 673 #endif 674 675 /*Assign output pointers:*/ 676 *pmaxabsvz=maxabsvz; 677 678 }/*}}}*/ 679 void FemModel::MaxVelx(IssmDouble* pmaxvel,bool process_units){/*{{{*/ 680 681 int i; 682 IssmDouble maxvel; 683 IssmDouble node_maxvel; 684 IssmDouble element_maxvel; 685 686 /*Go through elements, and request velocity: */ 687 maxvel=-INFINITY; 688 for(i=0;i<this->elements->Size();i++){ 689 Element* element=(Element*)this->elements->GetObjectByOffset(i); 690 element->MaxVel(&element_maxvel,process_units); 691 if(element_maxvel>maxvel) maxvel=element_maxvel; 692 } 693 694 /*Figure out maximum across the cluster: */ 695 #ifdef _HAVE_MPI_ 696 MPI_Reduce(&maxvel,&node_maxvel,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 697 MPI_Bcast(&node_maxvel,1,MPI_DOUBLE,0,IssmComm::GetComm()); 698 maxvel=node_maxvel; 699 #endif 700 701 /*Assign output pointers:*/ 702 *pmaxvel=maxvel; 703 704 }/*}}}*/ 705 void FemModel::MaxVxx(IssmDouble* pmaxvx,bool process_units){/*{{{*/ 706 707 int i; 708 IssmDouble maxvx; 709 IssmDouble node_maxvx; 710 IssmDouble element_maxvx; 711 712 /*Go through elements, and request velocity: */ 713 maxvx=-INFINITY; 714 for(i=0;i<this->elements->Size();i++){ 715 Element* element=(Element*)this->elements->GetObjectByOffset(i); 716 element->MaxVx(&element_maxvx,process_units); 717 if(element_maxvx>maxvx) maxvx=element_maxvx; 718 } 719 720 /*Figure out maximum across the cluster: */ 721 #ifdef _HAVE_MPI_ 722 MPI_Reduce(&maxvx,&node_maxvx,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 723 MPI_Bcast(&node_maxvx,1,MPI_DOUBLE,0,IssmComm::GetComm()); 724 maxvx=node_maxvx; 725 #endif 726 727 /*Assign output pointers:*/ 728 *pmaxvx=maxvx; 729 730 }/*}}}*/ 731 void FemModel::MaxVyx(IssmDouble* pmaxvy,bool process_units){/*{{{*/ 732 733 int i; 734 IssmDouble maxvy; 735 IssmDouble node_maxvy; 736 IssmDouble element_maxvy; 737 738 /*Go through elements, and request velocity: */ 739 maxvy=-INFINITY; 740 for(i=0;i<this->elements->Size();i++){ 741 Element* element=(Element*)this->elements->GetObjectByOffset(i); 742 element->MaxVy(&element_maxvy,process_units); 743 if(element_maxvy>maxvy) maxvy=element_maxvy; 744 } 745 746 /*Figure out maximum across the cluster: */ 747 #ifdef _HAVE_MPI_ 748 MPI_Reduce(&maxvy,&node_maxvy,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 749 MPI_Bcast(&node_maxvy,1,MPI_DOUBLE,0,IssmComm::GetComm()); 750 maxvy=node_maxvy; 751 #endif 752 753 /*Assign output pointers:*/ 754 *pmaxvy=maxvy; 755 756 }/*}}}*/ 757 void FemModel::MaxVzx(IssmDouble* pmaxvz,bool process_units){/*{{{*/ 758 759 int i; 760 IssmDouble maxvz; 761 IssmDouble node_maxvz; 762 IssmDouble element_maxvz; 763 764 /*Go through elements, and request velocity: */ 765 maxvz=-INFINITY; 766 for(i=0;i<this->elements->Size();i++){ 767 Element* element=(Element*)this->elements->GetObjectByOffset(i); 768 element->MaxVz(&element_maxvz,process_units); 769 if(element_maxvz>maxvz) maxvz=element_maxvz; 770 } 771 772 /*Figure out maximum across the cluster: */ 773 #ifdef _HAVE_MPI_ 774 MPI_Reduce(&maxvz,&node_maxvz,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() ); 775 MPI_Bcast(&node_maxvz,1,MPI_DOUBLE,0,IssmComm::GetComm()); 776 maxvz=node_maxvz; 777 #endif 778 779 /*Assign output pointers:*/ 780 *pmaxvz=maxvz; 602 781 603 782 }/*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r13721 r13722 62 62 /*Modules*/ 63 63 #ifdef _HAVE_RESPONSES_ 64 void MassFluxx(IssmDouble* pmass_flux,bool process_units); 64 void MassFluxx(IssmDouble* presponse,bool process_units); 65 void MaxAbsVxx(IssmDouble* presponse,bool process_units); 66 void MaxAbsVyx(IssmDouble* presponse,bool process_units); 67 void MaxAbsVzx(IssmDouble* presponse,bool process_units); 68 void MaxVelx(IssmDouble* presponse,bool process_units); 69 void MaxVxx(IssmDouble* presponse,bool process_units); 70 void MaxVyx(IssmDouble* presponse,bool process_units); 71 void MaxVzx(IssmDouble* presponse,bool process_units); 65 72 #endif 66 73 #ifdef _HAVE_DAKOTA_ -
issm/trunk-jpl/src/c/modules/modules.h
r13721 r13722 63 63 #include "./Krigingx/Krigingx.h" 64 64 #include "./Shp2Kmlx/Shp2Kmlx.h" 65 #include "./MaxAbsVxx/MaxAbsVxx.h"66 #include "./MaxAbsVyx/MaxAbsVyx.h"67 #include "./MaxAbsVzx/MaxAbsVzx.h"68 #include "./MaxVelx/MaxVelx.h"69 65 #include "./ElementResponsex/ElementResponsex.h" 70 #include "./MaxVxx/MaxVxx.h"71 #include "./MaxVyx/MaxVyx.h"72 #include "./MaxVzx/MaxVzx.h"73 66 #include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h" 74 67 #include "./MeshPartitionx/MeshPartitionx.h"
Note:
See TracChangeset
for help on using the changeset viewer.