Changeset 4974
- Timestamp:
- 08/04/10 12:01:29 (15 years ago)
- Location:
- issm/trunk
- Files:
-
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp
r4573 r4974 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 14 14 15 15 /*Intermediary*/ … … 22 22 double J=0; 23 23 double J_sum; 24 24 25 25 /*Compute surface area: */ 26 26 SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters); … … 35 35 for (i=0;i<elements->Size();i++){ 36 36 element=(Element*)elements->GetObjectByOffset(i); 37 J+=element->CostFunction( );37 J+=element->CostFunction(process_units); 38 38 } 39 39 -
issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MISFITX_H */ -
issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp
r4863 r4974 20 20 void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,int numresponses){ 21 21 22 int i,j ;22 int i,j,k; 23 23 int dummy; 24 24 int counter; 25 25 extern int my_rank; 26 bool process_units = true; 26 27 27 28 /*intermediary: */ … … 36 37 37 38 if(strcmp(response_descriptor,"MinVel")==0){ 38 MinVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );39 MinVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 39 40 } 40 41 else if(strcmp(response_descriptor,"MaxVel")==0){ 41 MaxVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );42 MaxVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 42 43 } 43 44 else if(strcmp(response_descriptor,"MinVx")==0){ 44 MinVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );45 MinVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 45 46 } 46 47 else if(strcmp(response_descriptor,"MaxVx")==0){ 47 MaxVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );48 MaxVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 48 49 } 49 50 else if(strcmp(response_descriptor,"MaxAbsVx")==0){ 50 MaxAbsVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );51 MaxAbsVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 51 52 } 52 53 else if(strcmp(response_descriptor,"MinVy")==0){ 53 MinVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );54 MinVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 54 55 } 55 56 else if(strcmp(response_descriptor,"MaxVy")==0){ 56 MaxVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );57 MaxVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 57 58 } 58 59 else if(strcmp(response_descriptor,"MaxAbsVy")==0){ 59 MaxAbsVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );60 MaxAbsVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 60 61 } 61 62 else if(strcmp(response_descriptor,"MinVz")==0){ 62 MinVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );63 MinVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 63 64 } 64 65 else if(strcmp(response_descriptor,"MaxVz")==0){ 65 MaxVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );66 MaxVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 66 67 } 67 68 else if(strcmp(response_descriptor,"MaxAbsVz")==0){ 68 MaxAbsVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );69 MaxAbsVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 69 70 } 70 71 else if(strcmp(response_descriptor,"Misfit")==0){ 71 Misfitx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters );72 Misfitx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units); 72 73 } 73 74 else if(strlen(response_descriptor)>=8){ … … 85 86 /*retrieve qmu_mass_flux_segments: */ 86 87 parameters->FindParam(&array,&M,&mdims_array,&ndims_array,QmuMassFluxSegmentsEnum); 87 88 88 89 /*figure out counter after MassFlux: */ 89 90 sscanf(response_descriptor,"MassFlux%i",&counter); … … 94 95 95 96 /*call mass flux module: */ 96 MassFluxx(&femmodel_response,elements,nodes,vertices,loads,materials,parameters,segments,num_segments );97 MassFluxx(&femmodel_response,elements,nodes,vertices,loads,materials,parameters,segments,num_segments,process_units); 97 98 98 99 /*Free ressources:*/ -
issm/trunk/src/c/modules/MassFluxx/MassFluxx.cpp
r4573 r4974 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, double* segments,int num_segments ){12 void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, double* segments,int num_segments,bool process_units){ 13 13 14 14 int i,j; … … 32 32 if (element->Id()==element_id){ 33 33 /*We found the element which owns this segment, use it to compute the mass flux: */ 34 mass_flux+=element->MassFlux(segments+5*i+0 );34 mass_flux+=element->MassFlux(segments+5*i+0,process_units); 35 35 break; 36 36 } -
issm/trunk/src/c/modules/MassFluxx/MassFluxx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double* segments,int num_segments );12 void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double* segments,int num_segments,bool process_units); 13 13 14 14 -
issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double maxabsvx; 16 16 double node_maxabsvx; 17 bool process_units=true;18 17 double element_maxabsvx; 19 18 -
issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVXX_H */ -
issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double maxabsvy; 16 16 double node_maxabsvy; 17 bool process_units=true;18 17 double element_maxabsvy; 19 18 -
issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVYX_H */ -
issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double maxabsvz; 16 16 double node_maxabsvz; 17 bool process_units=true;18 17 double element_maxabsvz; 19 18 -
issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXABSVZX_H */ -
issm/trunk/src/c/modules/MaxVelx/MaxVelx.cpp
r4573 r4974 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 14 14 15 15 int i; 16 16 double maxvel; 17 17 double node_maxvel; 18 bool process_units=true;19 18 double element_maxvel; 20 19 -
issm/trunk/src/c/modules/MaxVelx/MaxVelx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVELX_H */ -
issm/trunk/src/c/modules/MaxVxx/MaxVxx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double maxvx; 16 16 double node_maxvx; 17 bool process_units=true;18 17 double element_maxvx; 19 18 -
issm/trunk/src/c/modules/MaxVxx/MaxVxx.h
r4236 r4974 9 9 10 10 /* local prototypes: */ 11 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );11 void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 12 12 13 13 #endif /* _MAXVXX_H */ -
issm/trunk/src/c/modules/MaxVyx/MaxVyx.cpp
r4573 r4974 1 1 /*!\file MaxVyx 2 2 */ 3 3 4 4 #include "./MaxVyx.h" … … 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 12 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 14 14 int i; 15 15 double maxvy; 16 16 double node_maxvy; 17 bool process_units=true;18 17 double element_maxvy; 19 18 -
issm/trunk/src/c/modules/MaxVyx/MaxVyx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVYX_H */ -
issm/trunk/src/c/modules/MaxVzx/MaxVzx.cpp
r4573 r4974 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 14 14 15 15 int i; 16 16 double maxvz; 17 17 double node_maxvz; 18 bool process_units=true;19 18 double element_maxvz; 20 19 -
issm/trunk/src/c/modules/MaxVzx/MaxVzx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MAXVZX_H */ -
issm/trunk/src/c/modules/MinVelx/MinVelx.cpp
r4573 r4974 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 14 14 15 15 int i; 16 16 double minvel; 17 17 double node_minvel; 18 bool process_units=true;19 18 double element_minvel; 20 19 -
issm/trunk/src/c/modules/MinVelx/MinVelx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVELX_H */ -
issm/trunk/src/c/modules/MinVxx/MinVxx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double minvx; 16 16 double node_minvx; 17 bool process_units=true;18 17 double element_minvx; 19 18 -
issm/trunk/src/c/modules/MinVxx/MinVxx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVX_H */ -
issm/trunk/src/c/modules/MinVyx/MinVyx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double minvy; 16 16 double node_minvy; 17 bool process_units=true;18 17 double element_minvy; 19 18 -
issm/trunk/src/c/modules/MinVyx/MinVyx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVYX_H */ -
issm/trunk/src/c/modules/MinVzx/MinVzx.cpp
r4573 r4974 10 10 #include "../SurfaceAreax/SurfaceAreax.h" 11 11 12 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){12 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 13 13 14 14 int i; 15 15 double minvz; 16 16 double node_minvz; 17 bool process_units=true;18 17 double element_minvz; 19 18 -
issm/trunk/src/c/modules/MinVzx/MinVzx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MINVZX_H */ -
issm/trunk/src/c/modules/Misfitx/Misfitx.cpp
r4573 r4974 11 11 #include "../SurfaceAreax/SurfaceAreax.h" 12 12 13 void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters ){13 void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){ 14 14 15 15 /*Intermediary*/ … … 35 35 for (i=0;i<elements->Size();i++){ 36 36 element=(Element*)elements->GetObjectByOffset(i); 37 J+=element->Misfit( );37 J+=element->Misfit(process_units); 38 38 } 39 39 -
issm/trunk/src/c/modules/Misfitx/Misfitx.h
r4236 r4974 10 10 11 11 /* local prototypes: */ 12 void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters );12 void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units); 13 13 14 14 #endif /* _MISFITX_H */ -
issm/trunk/src/c/objects/Elements/Element.h
r4970 r4974 42 42 virtual void GradjDrag(Vec gradient)=0; 43 43 virtual void GradjB(Vec gradient)=0; 44 virtual double Misfit( void)=0;45 virtual double CostFunction( void)=0;44 virtual double Misfit(bool process_units)=0; 45 virtual double CostFunction(bool process_units)=0; 46 46 virtual double SurfaceArea(void)=0; 47 47 virtual void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum)=0; … … 49 49 virtual void ComputePressure(Vec p_g)=0; 50 50 virtual void ComputeStrainRate(Vec eps)=0; 51 virtual double MassFlux(double* segment )=0;51 virtual double MassFlux(double* segment,bool process_units)=0; 52 52 virtual void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0; 53 53 virtual void PatchFill(int* pcount, Patch* patch)=0; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r4970 r4974 667 667 /*}}}*/ 668 668 /*FUNCTION Penta::CostFunction {{{1*/ 669 double Penta::CostFunction( void){669 double Penta::CostFunction(bool process_units){ 670 670 671 671 double J; … … 698 698 * and compute CostFunction*/ 699 699 tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face). 700 J=tria->CostFunction( );700 J=tria->CostFunction(process_units); 701 701 delete tria; 702 702 return J; … … 705 705 706 706 tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face). 707 J=tria->CostFunction( );707 J=tria->CostFunction(process_units); 708 708 delete tria; 709 709 return J; … … 1188 1188 /*}}}*/ 1189 1189 /*FUNCTION Penta::MassFlux {{{1*/ 1190 double Penta::MassFlux( double* segment ){1190 double Penta::MassFlux( double* segment,bool process_units){ 1191 1191 ISSMERROR(" not supported yet!"); 1192 1192 } … … 1520 1520 /*}}}*/ 1521 1521 /*FUNCTION Penta::Misfit {{{1*/ 1522 double Penta::Misfit( void){1522 double Penta::Misfit(bool process_units){ 1523 1523 1524 1524 double J; … … 1551 1551 * and compute Misfit*/ 1552 1552 tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face). 1553 J=tria->Misfit( );1553 J=tria->Misfit(process_units); 1554 1554 delete tria; 1555 1555 return J; … … 1558 1558 1559 1559 tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face). 1560 J=tria->Misfit( );1560 J=tria->Misfit(process_units); 1561 1561 delete tria; 1562 1562 return J; -
issm/trunk/src/c/objects/Elements/Penta.h
r4970 r4974 71 71 void Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 72 72 void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 73 double CostFunction( void);73 double CostFunction(bool process_units); 74 74 void CreateKMatrix(Mat Kgg); 75 75 void CreatePVector(Vec pg); … … 92 92 void InputScale(int enum_type,double scale_factor); 93 93 void InputToResult(int enum_type,int step,double time); 94 double MassFlux(double* segment );94 double MassFlux(double* segment,bool process_units); 95 95 void MaxAbsVx(double* pmaxabsvx, bool process_units); 96 96 void MaxAbsVy(double* pmaxabsvy, bool process_units); … … 104 104 void MinVy(double* pminvy, bool process_units); 105 105 void MinVz(double* pminvz, bool process_units); 106 double Misfit( void);106 double Misfit(bool process_units); 107 107 void PatchFill(int* pcount, Patch* patch); 108 108 void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r4970 r4974 551 551 /*}}}*/ 552 552 /*FUNCTION Tria::CostFunction {{{1*/ 553 double Tria::CostFunction( void){553 double Tria::CostFunction(bool process_units){ 554 554 555 555 int i; … … 608 608 609 609 /*First, get Misfit*/ 610 Jelem=Misfit( );611 612 613 610 Jelem=Misfit(process_units); 611 612 /* Get gaussian points and weights (make this a statically initialized list of points? fstd): */ 613 GaussTria( &num_gauss, &first_gauss_area_coord, &second_gauss_area_coord, &third_gauss_area_coord, &gauss_weights, 2); 614 614 615 615 /* Start looping on the number of gaussian points: */ … … 1381 1381 /*}}}*/ 1382 1382 /*FUNCTION Tria::MassFlux {{{1*/ 1383 double Tria::MassFlux( double* segment ){1383 double Tria::MassFlux( double* segment,bool process_units){ 1384 1384 1385 1385 int i; … … 1436 1436 (ONETHIRD*(h1-h2)*(vy1-vy2)+0.5*h2*(vy1-vy2)+0.5*(h1-h2)*vy2+h2*vy2)*normal[1] 1437 1437 ); 1438 1439 /*Process units: */ 1440 NodalValuesUnitConversion(&mass_flux,1,MassFluxEnum,this->parameters); 1441 1438 1442 return mass_flux; 1439 1443 } … … 1767 1771 /*}}}*/ 1768 1772 /*FUNCTION Tria::Misfit {{{1*/ 1769 double Tria::Misfit( void){1773 double Tria::Misfit(bool process_units){ 1770 1774 1771 1775 int i; … … 1787 1791 double obs_vx_list[numgrids]; 1788 1792 double obs_vy_list[numgrids]; 1793 double misfit_square_list[numgrids]; 1789 1794 double misfit_list[numgrids]; 1790 1795 double weights_list[numgrids]; … … 1862 1867 misfit_list[i]=0.5*(pow((vx_list[i]-obs_vx_list[i]),(double)2)+pow((vy_list[i]-obs_vy_list[i]),(double)2)); 1863 1868 } 1869 /*Process units: */ 1870 if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters); 1871 1864 1872 } 1865 1873 else if(fit==1){ … … 1878 1886 misfit_list[i]=0.5*(scalex*pow((vx_list[i]-obs_vx_list[i]),2)+scaley*pow((vy_list[i]-obs_vy_list[i]),2)); 1879 1887 } 1888 1889 /*Process units: */ 1890 if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters); 1891 1880 1892 } 1881 1893 else if(fit==2){ … … 1892 1904 misfit_list[i]=4*pow(meanvel,(double)2)*pow(log(velocity_mag/obs_velocity_mag),(double)2); 1893 1905 } 1906 1907 /*Process units: */ 1908 if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters); 1909 1894 1910 } 1895 1911 else if(fit==3){ 1896 /*We are using a nspacially average absolute misfit:1912 /*We are using a spacially average absolute misfit: 1897 1913 * 1898 1914 * 1 2 2 … … 1900 1916 * S obs obs 1901 1917 */ 1902 for (i=0;i<numgrids;i++){ 1903 misfit_list[i]=sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))/S; 1904 } 1918 for (i=0;i<numgrids;i++) misfit_square_list[i]=pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2); 1919 1920 /*Process units: */ 1921 if(process_units)NodalValuesUnitConversion(&misfit_square_list[0],numgrids,MisfitEnum,this->parameters); 1922 1923 /*Take the square root, and scale by surface: */ 1924 for (i=0;i<numgrids;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S; 1905 1925 } 1906 1926 else if(fit==4){ … … 1917 1937 pow(log((fabs(vy_list[i])+epsvel)/(fabs(obs_vy_list[i])+epsvel)),(double)2) ); 1918 1938 } 1939 1940 /*Process units: */ 1941 if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters); 1942 1919 1943 } 1920 1944 else{ -
issm/trunk/src/c/objects/Elements/Tria.h
r4970 r4974 68 68 void Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 69 69 void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters); 70 double CostFunction( void);70 double CostFunction(bool process_units); 71 71 void CreateKMatrix(Mat Kgg); 72 72 void CreatePVector(Vec pg); … … 90 90 void DeleteResults(void); 91 91 void MaterialUpdateFromTemperature(void){ISSMERROR("not implemented yet");}; 92 double MassFlux(double* segment );92 double MassFlux(double* segment,bool process_units); 93 93 void MaxAbsVx(double* pmaxabsvx, bool process_units); 94 94 void MaxAbsVy(double* pmaxabsvy, bool process_units); … … 102 102 void MinVy(double* pminvy, bool process_units); 103 103 void MinVz(double* pminvz, bool process_units); 104 double Misfit( void);104 double Misfit(bool process_units); 105 105 void PatchFill(int* pcount, Patch* patch); 106 106 void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes); -
issm/trunk/src/c/solutions/objectivefunctionC.cpp
r4967 r4974 37 37 bool isstokes=false; 38 38 bool conserve_loads=true; 39 bool process_units=false; 39 40 40 41 /*Recover finite element model: */ … … 64 65 /*Compute misfit for this velocity field.*/ 65 66 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,(int)fit[n],FitEnum); 66 CostFunctionx( &J, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters );67 CostFunctionx( &J, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters,process_units); 67 68 68 69 /*Free ressources:*/ -
issm/trunk/src/mex/CostFunction/CostFunction.cpp
r4573 r4974 14 14 Materials* materials=NULL; 15 15 Parameters* parameters=NULL; 16 bool process_units=false; 16 17 17 18 /* output datasets: */ … … 38 39 39 40 /*!Call core code: */ 40 CostFunctionx(&J, elements,nodes,vertices, loads,materials,parameters );41 CostFunctionx(&J, elements,nodes,vertices, loads,materials,parameters,process_units); 41 42 42 43 /*write output : */ -
issm/trunk/src/mex/MassFlux/MassFlux.cpp
r4573 r4974 14 14 Materials* materials=NULL; 15 15 Parameters* parameters=NULL; 16 bool process_units=false; 16 17 17 18 double* segments=NULL; … … 42 43 43 44 /*!Compute mass flux along the profile: */ 44 MassFluxx(&mass_flux, elements,nodes,vertices,loads,materials,parameters,segments,num_segments );45 MassFluxx(&mass_flux, elements,nodes,vertices,loads,materials,parameters,segments,num_segments,process_units); 45 46 46 47 -
issm/trunk/src/mex/Misfit/Misfit.cpp
r4573 r4974 14 14 Materials* materials=NULL; 15 15 Parameters* parameters=NULL; 16 17 bool process_units=false; 16 18 17 19 /* output datasets: */ … … 38 40 39 41 /*!Call core code: */ 40 Misfitx(&J, elements,nodes,vertices,loads,materials,parameters );42 Misfitx(&J, elements,nodes,vertices,loads,materials,parameters,process_units); 41 43 42 44 /*write output : */ -
issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/Square.par
r4612 r4974 38 38 md.waitonlock=30; 39 39 40 %spc everything 41 md.spcvelocity(:,1:3)=1; 42 md.spcvelocity(:,4)=0; 43 md.spcvelocity(:,5)=100; 44 md.spcvelocity(:,6)=0; 40 45 41 46 %Dakota: -
issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/testpostsolve.m
r4794 r4974 1 1 md=tres(md,'dakota'); 2 md.results.dakota.importancefactors=importancefactors(md,'DragCoefficient','MaxVel')';2 %md.results.dakota.importancefactors=importancefactors(md,'DragCoefficient','MaxVel')';
Note:
See TracChangeset
for help on using the changeset viewer.