Changeset 9880
- Timestamp:
- 09/22/11 09:27:41 (13 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r9734 r9880 475 475 DragCoefficientAbsGradientEnum, 476 476 TransientInputEnum, 477 /*Temporary*/478 477 OutputfilenameEnum, 479 478 WaterfractionEnum, … … 485 484 HydrologyWaterVyEnum, 486 485 SpcDynamicEnum, 486 IceVolumeEnum, 487 487 MaximumNumberOfEnums 488 488 }; -
issm/trunk/src/c/Makefile.am
r9813 r9880 544 544 ./modules/SurfaceAreax/SurfaceAreax.h\ 545 545 ./modules/SurfaceAreax/SurfaceAreax.cpp\ 546 ./modules/IceVolumex/IceVolumex.h\ 547 ./modules/IceVolumex/IceVolumex.cpp\ 546 548 ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h\ 547 549 ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp\ … … 1241 1243 ./modules/MinVzx/MinVzx.h\ 1242 1244 ./modules/MinVzx/MinVzx.cpp\ 1245 ./modules/IceVolumex/IceVolumex.h\ 1246 ./modules/IceVolumex/IceVolumex.cpp\ 1243 1247 ./modules/RheologyBbarx/RheologyBbarx.cpp\ 1244 1248 ./modules/RheologyBbarx/RheologyBbarx.h\ -
issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
r9734 r9880 428 428 case HydrologyWaterVyEnum : return "HydrologyWaterVy"; 429 429 case SpcDynamicEnum : return "SpcDynamic"; 430 case IceVolumeEnum : return "IceVolume"; 430 431 default : return "unknown"; 431 432 -
issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp
r9679 r9880 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void RequestedOutputsx( Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step, double time){11 void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step, double time){ 12 12 13 int i, o;13 int i,j; 14 14 int output_enum; 15 double output_value; 15 16 Element* element=NULL; 16 17 17 18 /*retrieve parameters: */ 18 19 if(numoutputs){ 19 for(o=0;o<numoutputs;o++){ 20 output_enum=requested_outputs[o]; 21 /*create this output in the element inputs, and then transfer to results: */ 22 for(i=0;i<elements->Size();i++){ 23 element=(Element*)elements->GetObjectByOffset(i); 24 element->RequestedOutput(output_enum,step,time); 20 for(i=0;i<numoutputs;i++){ 21 output_enum=requested_outputs[i]; 22 23 switch(output_enum){ 24 25 case IceVolumeEnum: 26 Responsex(&output_value,elements,nodes,vertices,loads,materials,parameters,"IceVolume",false,0); 27 results->AddObject(new DoubleExternalResult(results->Size()+1,IceVolumeEnum,output_value,step,time)); 28 break; 29 default: 30 /*create this output in the element inputs, and then transfer to results:*/ 31 for(j=0;j<elements->Size();j++){ 32 element=(Element*)elements->GetObjectByOffset(j); 33 element->RequestedOutput(output_enum,step,time); 34 } 35 break; 25 36 } 26 37 } -
issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h
r9679 r9880 9 9 10 10 /* local prototypes: */ 11 void RequestedOutputsx( Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step=1, double time=0);11 void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step=1, double time=0); 12 12 13 13 #endif /* _INPUTTORESULTX_H */ -
issm/trunk/src/c/modules/Responsex/Responsex.cpp
r9775 r9880 21 21 22 22 #ifdef _HAVE_RESPONSES_ 23 case IceVolumeEnum: IceVolumex( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 23 24 case MinVelEnum: MinVelx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; 24 25 case MaxVelEnum: MaxVelx( responses, elements,nodes, vertices, loads, materials, parameters,process_units); break; -
issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
r9734 r9880 426 426 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 427 427 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 428 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 428 429 else _error_("Enum %s not found",name); 429 430 -
issm/trunk/src/c/modules/modules.h
r9775 r9880 33 33 #include "./GroundingLineMigrationx/GroundingLineMigrationx.h" 34 34 #include "./HoleFillerx/HoleFillerx.h" 35 #include "./IceVolumex/IceVolumex.h" 35 36 #include "./InputControlUpdatex/InputControlUpdatex.h" 36 37 #include "./InputConvergencex/InputConvergencex.h" -
issm/trunk/src/c/objects/Elements/Element.h
r9874 r9880 88 88 virtual double MassFlux(double* segment,bool process_units)=0; 89 89 virtual double RheologyBbarx(void)=0; 90 virtual double IceVolume(void)=0; 90 91 virtual int NodalValue(double* pvalue, int index, int natureofdataenum,bool process_units)=0; 91 92 #endif -
issm/trunk/src/c/objects/Elements/Penta.cpp
r9878 r9880 2667 2667 2668 2668 #ifdef _HAVE_RESPONSES_ 2669 /*FUNCTION Penta::IceVolume {{{1*/ 2670 double Penta::IceVolume(void){ 2671 2672 /*The volume of a troncated prism is base * 1/3 sum(length of edges)*/ 2673 double base,height; 2674 double xyz_list[NUMVERTICES][3]; 2675 2676 if(IsOnWater())return 0; 2677 2678 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 2679 2680 /*First calculate the area of the base (cross section triangle) 2681 * http://en.wikipedia.org/wiki/Pentangle 2682 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/ 2683 base = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1])); 2684 2685 /*Now get the average height*/ 2686 height = 1./3.*((xyz_list[3][2]-xyz_list[0][2])+(xyz_list[4][2]-xyz_list[1][2])+(xyz_list[5][2]-xyz_list[2][2])); 2687 2688 /*Return: */ 2689 return base*height; 2690 } 2691 /*}}}*/ 2669 2692 /*FUNCTION Penta::RheologyBbarx{{{1*/ 2670 2693 double Penta::RheologyBbarx(void){ -
issm/trunk/src/c/objects/Elements/Penta.h
r9874 r9880 123 123 124 124 #ifdef _HAVE_RESPONSES_ 125 double IceVolume(void); 125 126 void MinVel(double* pminvel, bool process_units); 126 127 void MinVx(double* pminvx, bool process_units); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r9878 r9880 2663 2663 2664 2664 #ifdef _HAVE_RESPONSES_ 2665 /*FUNCTION Tria::IceVolume {{{1*/ 2666 double Tria::IceVolume(void){ 2667 2668 /*The volume of a troncated prism is base * 1/3 sum(length of edges)*/ 2669 double base,surface,bed; 2670 double xyz_list[NUMVERTICES][3]; 2671 2672 if(IsOnWater())return 0; 2673 2674 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 2675 2676 /*First calculate the area of the base (cross section triangle) 2677 * http://en.wikipedia.org/wiki/Triangle 2678 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/ 2679 base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1])); 2680 2681 /*Now get the average height*/ 2682 Input* surface_input = inputs->GetInput(SurfaceEnum); _assert_(surface_input); 2683 Input* bed_input = inputs->GetInput(BedEnum); _assert_(bed_input); 2684 surface_input->GetParameterAverage(&surface); 2685 bed_input->GetParameterAverage(&bed); 2686 2687 /*Return: */ 2688 return base*(surface-bed); 2689 } 2690 /*}}}*/ 2665 2691 /*FUNCTION Tria::MassFlux {{{1*/ 2666 2692 double Tria::MassFlux( double* segment,bool process_units){ -
issm/trunk/src/c/objects/Elements/Tria.h
r9874 r9880 124 124 125 125 #ifdef _HAVE_RESPONSES_ 126 double IceVolume(void); 126 127 void MinVel(double* pminvel, bool process_units); 127 128 void MinVx(double* pminvx, bool process_units); -
issm/trunk/src/c/solutions/diagnostic_core.cpp
r9761 r9880 92 92 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum); 93 93 if(dim==3) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum); 94 RequestedOutputsx(femmodel-> elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);94 RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs); 95 95 } 96 96 -
issm/trunk/src/c/solutions/steadystate_core.cpp
r9761 r9880 84 84 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum); 85 85 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum); 86 RequestedOutputsx(femmodel-> elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);86 RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs); 87 87 } 88 88 -
issm/trunk/src/c/solutions/transient_core.cpp
r9775 r9880 122 122 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum,step,time); 123 123 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum,step,time); 124 RequestedOutputsx(femmodel-> elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);124 RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs,step,time); 125 125 126 126 /*unload results*/
Note:
See TracChangeset
for help on using the changeset viewer.