Changeset 13875
- Timestamp:
- 11/05/12 13:26:35 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/Makefile.am ¶
r13874 r13875 481 481 ./solutions/balancethickness_core.cpp 482 482 #}}} 483 #Responses sources {{{484 responses_sources = ./modules/TotalSmbx/TotalSmbx.h\485 ./modules/TotalSmbx/TotalSmbx.cpp\486 ./modules/IceVolumex/IceVolumex.h\487 ./modules/IceVolumex/IceVolumex.cpp\488 ./modules/ElementResponsex/ElementResponsex.h\489 ./modules/ElementResponsex/ElementResponsex.cpp490 #}}}491 483 #Slope sources {{{ 492 484 slope_sources = ./modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp\ … … 863 855 endif 864 856 865 if RESPONSES866 issm_sources += $(responses_sources)867 endif868 869 857 if SLOPE 870 858 issm_sources += $(slope_sources) -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r13874 r13875 404 404 405 405 #ifdef _HAVE_RESPONSES_ 406 case IceVolumeEnum: IceVolumex( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;406 case IceVolumeEnum: this->IceVolumex(responses,process_units); break; 407 407 case MinVelEnum: this->MinVelx(responses,process_units); break; 408 408 case MaxVelEnum: this->MaxVelx( responses,process_units); break; … … 416 416 case MaxVzEnum: this->MaxVzx( responses,process_units); break; 417 417 case MaxAbsVzEnum: this->MaxAbsVzx( responses,process_units); break; 418 case MassFluxEnum: this->MassFluxx( 419 case SurfaceAbsVelMisfitEnum: SurfaceAbsVelMisfitx( 420 case SurfaceRelVelMisfitEnum: SurfaceRelVelMisfitx( 421 case SurfaceLogVelMisfitEnum: SurfaceLogVelMisfitx( 422 case SurfaceLogVxVyMisfitEnum: SurfaceLogVxVyMisfitx( 418 case MassFluxEnum: this->MassFluxx( responses,process_units); break; 419 case SurfaceAbsVelMisfitEnum: SurfaceAbsVelMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 420 case SurfaceRelVelMisfitEnum: SurfaceRelVelMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 421 case SurfaceLogVelMisfitEnum: SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 422 case SurfaceLogVxVyMisfitEnum: SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 423 423 case SurfaceAverageVelMisfitEnum:SurfaceAverageVelMisfitx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 424 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx( 425 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx( 426 case ThicknessAlongGradientEnum: ThicknessAlongGradientx( 427 case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx( 428 case TotalSmbEnum: TotalSmbx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;429 case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx( 424 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 425 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx(responses, process_units,weight_index); break; 426 case ThicknessAlongGradientEnum: ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 427 case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 428 case TotalSmbEnum: this->TotalSmbx(responses,process_units); break; 429 case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 430 430 case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break; 431 case MaterialsRheologyBbarEnum: ElementResponsex(responses, elements,nodes, vertices, loads, materials, parameters,MaterialsRheologyBbarEnum,process_units); break;432 case VelEnum: ElementResponsex(responses, elements,nodes, vertices, loads, materials, parameters,VelEnum,process_units); break;431 case MaterialsRheologyBbarEnum: this->ElementResponsex(responses,MaterialsRheologyBbarEnum,process_units); break; 432 case VelEnum: this->ElementResponsex(responses,VelEnum,process_units); break; 433 433 case FrictionCoefficientEnum:NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters,process_units); break; 434 434 default: _error_("response descriptor \"" << EnumToStringx(response_descriptor_enum) << "\" not supported yet!"); break; … … 897 897 898 898 }/*}}}*/ 899 void FemModel::TotalSmbx(IssmDouble* pSmb,bool process_units){/*{{{*/ 900 901 IssmDouble local_smb = 0; 902 IssmDouble total_smb; 903 904 for(int i=0;i<this->elements->Size();i++){ 905 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 906 local_smb+=element->TotalSmb(); 907 } 908 #ifdef _HAVE_MPI_ 909 MPI_Reduce(&local_smb,&total_smb,1,MPI_DOUBLE,MPI_SUM,0,IssmComm::GetComm() ); 910 MPI_Bcast(&total_smb,1,MPI_DOUBLE,0,IssmComm::GetComm()); 911 #else 912 total_smb=local_smb; 913 #endif 914 915 /*Assign output pointers: */ 916 *pSmb=total_smb; 917 918 }/*}}}*/ 919 void FemModel::IceVolumex(IssmDouble* pV,bool process_units){/*{{{*/ 920 921 IssmDouble local_ice_volume = 0; 922 IssmDouble total_ice_volume; 923 924 for(int i=0;i<this->elements->Size();i++){ 925 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 926 local_ice_volume+=element->IceVolume(); 927 } 928 #ifdef _HAVE_MPI_ 929 MPI_Reduce(&local_ice_volume,&total_ice_volume,1,MPI_DOUBLE,MPI_SUM,0,IssmComm::GetComm() ); 930 MPI_Bcast(&total_ice_volume,1,MPI_DOUBLE,0,IssmComm::GetComm()); 931 #else 932 total_ice_volume=local_ice_volume; 933 #endif 934 935 /*Assign output pointers: */ 936 *pV=total_ice_volume; 937 938 }/*}}}*/ 939 void FemModel::ElementResponsex(IssmDouble* presponse,int response_enum,bool process_units){/*{{{*/ 940 941 int found=0; 942 int sumfound=0; 943 int cpu_found=-1; 944 int index; 945 IssmDouble response; 946 Element* element=NULL; 947 948 /*retrieve element we are interested in: */ 949 this->parameters->FindParam(&index,IndexEnum); 950 int my_rank=IssmComm::GetRank(); 951 952 /*now, go through our elements, and retrieve the one with this id: index: */ 953 for(int i=0;i<this->elements->Size();i++){ 954 element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 955 if (element->Id()==index){ 956 found=1; 957 cpu_found=my_rank; 958 break; 959 } 960 } 961 962 /*Broadcast whether we found the element: */ 963 #ifdef _HAVE_MPI_ 964 MPI_Allreduce ( &found,&sumfound,1,MPI_INT,MPI_SUM,IssmComm::GetComm()); 965 if(!sumfound)_error_("could not find material with id" << index << " to compute ElementResponse"); 966 #endif 967 968 /*Ok, we found the element, compute responseocity: */ 969 if(my_rank==cpu_found){ 970 element->ElementResponse(&response,response_enum,IuToExtEnum); 971 } 972 973 /*Broadcast and plug into response: */ 974 #ifdef _HAVE_MPI_ 975 MPI_Allreduce ( &cpu_found,&cpu_found,1,MPI_INT,MPI_MAX,IssmComm::GetComm()); 976 MPI_Bcast(&response,1,MPI_DOUBLE,cpu_found,IssmComm::GetComm()); 977 #endif 978 979 /*Assign output pointers: */ 980 *presponse=response; 981 982 }/*}}}*/ 899 983 #endif 900 984 #ifdef _HAVE_CONTROL_ -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r13874 r13875 74 74 void MinVyx(IssmDouble* presponse,bool process_units); 75 75 void MinVzx(IssmDouble* presponse,bool process_units); 76 void TotalSmbx(IssmDouble* pSmb,bool process_units); 77 void IceVolumex(IssmDouble* pV,bool process_units); 78 void ElementResponsex(IssmDouble* presponse,int response_enum,bool process_units); 76 79 #endif 77 80 #ifdef _HAVE_DAKOTA_ -
TabularUnified issm/trunk-jpl/src/c/modules/modules.h ¶
r13874 r13875 34 34 #include "./GroundinglineMigrationx/GroundinglineMigrationx.h" 35 35 #include "./HoleFillerx/HoleFillerx.h" 36 #include "./TotalSmbx/TotalSmbx.h"37 #include "./IceVolumex/IceVolumex.h"38 36 #include "./InputControlUpdatex/InputControlUpdatex.h" 39 37 #include "./InputConvergencex/InputConvergencex.h" … … 63 61 #include "./Krigingx/Krigingx.h" 64 62 #include "./Shp2Kmlx/Shp2Kmlx.h" 65 #include "./ElementResponsex/ElementResponsex.h"66 63 #include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h" 67 64 #include "./MeshPartitionx/MeshPartitionx.h"
Note:
See TracChangeset
for help on using the changeset viewer.