Changeset 5529
- Timestamp:
- 08/23/10 17:33:25 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 12 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r5478 r5529 107 107 ./objects/IoModel.cpp\ 108 108 ./objects/ElementResults/ElementResultLocal.h\ 109 ./objects/ElementResults/NodalValuesUnitConversion.cpp\110 109 ./objects/ElementResults/DoubleElementResult.h\ 111 110 ./objects/ElementResults/DoubleElementResult.cpp\ … … 244 243 ./shared/Numerics/OptFunc.cpp\ 245 244 ./shared/Numerics/extrema.cpp\ 245 ./shared/Numerics/UnitConversion.cpp\ 246 246 ./shared/Exceptions/exceptions.h\ 247 247 ./shared/Exceptions/Exceptions.cpp\ … … 661 661 ./objects/Patch.cpp\ 662 662 ./objects/ElementResults/ElementResultLocal.h\ 663 ./objects/ElementResults/NodalValuesUnitConversion.cpp\664 663 ./objects/ElementResults/DoubleElementResult.h\ 665 664 ./objects/ElementResults/DoubleElementResult.cpp\ … … 796 795 ./shared/Numerics/OptFunc.cpp\ 797 796 ./shared/Numerics/extrema.cpp\ 797 ./shared/Numerics/UnitConversion.cpp\ 798 798 ./shared/Exceptions/exceptions.h\ 799 799 ./shared/Exceptions/Exceptions.cpp\ -
issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r5477 r5529 153 153 /*Recover data: */ 154 154 IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,EnumToModelField(StringToEnum(tag))); 155 155 156 /*Convert units: */ 157 UnitConversion(dakota_parameter,iomodel->numberofvertices,ExtToIuEnum,StringToEnum(tag),parameters); 158 156 159 /*Add to parameters: */ 157 160 parameters->AddObject(new DoubleVecParam(StringToEnum(tag),dakota_parameter,iomodel->numberofvertices)); -
issm/trunk/src/c/objects/ElementResults/DoubleElementResult.cpp
r5103 r5529 162 162 void DoubleElementResult::ProcessUnits(Parameters* parameters){ 163 163 164 NodalValuesUnitConversion(&this->value,1,this->enum_type,parameters);164 this->value=UnitConversion(this->value,IuToExtEnum,this->enum_type,parameters); 165 165 166 166 } -
issm/trunk/src/c/objects/ElementResults/ElementResult.h
r4927 r5529 25 25 }; 26 26 27 void NodalValuesUnitConversion(double* nodal_values, int num_nodal_values,int enum_type,Parameters* parameters);28 27 #endif -
issm/trunk/src/c/objects/ElementResults/ElementResultLocal.h
r4050 r5529 8 8 class Parameters; 9 9 10 void NodalValuesUnitConversion(double* patch, int patch_size,int enum_type,Parameters* parameters);11 12 10 #endif //ifndef _ELEMENTRESULTLOCAL_H_ 13 11 -
issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.cpp
r5103 r5529 173 173 void PentaVertexElementResult::ProcessUnits(Parameters* parameters){ 174 174 175 NodalValuesUnitConversion(this->values,6,this->enum_type,parameters);175 UnitConversion(this->values,6,IuToExtEnum,this->enum_type,parameters); 176 176 177 177 } -
issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.cpp
r5103 r5529 162 162 void TriaVertexElementResult::ProcessUnits(Parameters* parameters){ 163 163 164 NodalValuesUnitConversion(this->values,3,this->enum_type,parameters);164 UnitConversion(this->values,3,IuToExtEnum,this->enum_type,parameters); 165 165 166 166 } -
issm/trunk/src/c/objects/Elements/Penta.cpp
r5523 r5529 1308 1308 1309 1309 /*process units if requested: */ 1310 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1310 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1311 1311 1312 1312 /*now, compute maximum:*/ … … 1337 1337 1338 1338 /*process units if requested: */ 1339 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1339 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1340 1340 1341 1341 /*now, compute maximum:*/ … … 1366 1366 1367 1367 /*process units if requested: */ 1368 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1368 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1369 1369 1370 1370 /*now, compute maximum:*/ … … 1395 1395 1396 1396 /*process units if requested: */ 1397 if(process_units) NodalValuesUnitConversion(&vel_values[0],numgrids,VelEnum,this->parameters);1397 if(process_units)UnitConversion(&vel_values[0],numgrids,IuToExtEnum,VelEnum,this->parameters); 1398 1398 1399 1399 /*now, compute maximum:*/ … … 1425 1425 1426 1426 /*process units if requested: */ 1427 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1427 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1428 1428 1429 1429 /*now, compute maximum:*/ … … 1455 1455 1456 1456 /*process units if requested: */ 1457 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1457 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1458 1458 1459 1459 /*now, compute maximum:*/ … … 1485 1485 1486 1486 /*process units if requested: */ 1487 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1487 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1488 1488 1489 1489 /*now, compute maximum:*/ … … 1515 1515 1516 1516 /*process units if requested: */ 1517 if(process_units) NodalValuesUnitConversion(&vel_values[0],numgrids,VelEnum,this->parameters);1517 if(process_units)UnitConversion(&vel_values[0],numgrids,IuToExtEnum,VelEnum,this->parameters); 1518 1518 1519 1519 /*now, compute minimum:*/ … … 1545 1545 1546 1546 /*process units if requested: */ 1547 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1547 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1548 1548 1549 1549 /*now, compute minimum:*/ … … 1575 1575 1576 1576 /*process units if requested: */ 1577 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1577 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1578 1578 1579 1579 /*now, compute minimum:*/ … … 1605 1605 1606 1606 /*process units if requested: */ 1607 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1607 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1608 1608 1609 1609 /*now, compute minimum:*/ -
issm/trunk/src/c/objects/Elements/Tria.cpp
r5518 r5529 1652 1652 1653 1653 /*Process units: */ 1654 NodalValuesUnitConversion(&mass_flux,1,MassFluxEnum,this->parameters);1654 mass_flux=UnitConversion(mass_flux,IuToExtEnum,MassFluxEnum,this->parameters); 1655 1655 1656 1656 return mass_flux; … … 1674 1674 1675 1675 /*process units if requested: */ 1676 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1676 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1677 1677 1678 1678 /*now, compute maximum:*/ … … 1703 1703 1704 1704 /*process units if requested: */ 1705 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1705 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1706 1706 1707 1707 /*now, compute maximum:*/ … … 1732 1732 1733 1733 /*process units if requested: */ 1734 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1734 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1735 1735 1736 1736 /*now, compute maximum:*/ … … 1761 1761 1762 1762 /*process units if requested: */ 1763 if(process_units) NodalValuesUnitConversion(&vel_values[0],numgrids,VelEnum,this->parameters);1763 if(process_units)UnitConversion(&vel_values[0],numgrids,IuToExtEnum,VelEnum,this->parameters); 1764 1764 1765 1765 /*now, compute maximum:*/ … … 1791 1791 1792 1792 /*process units if requested: */ 1793 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1793 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1794 1794 1795 1795 /*now, compute maximum:*/ … … 1821 1821 1822 1822 /*process units if requested: */ 1823 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1823 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1824 1824 1825 1825 /*now, compute maximum:*/ … … 1851 1851 1852 1852 /*process units if requested: */ 1853 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1853 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1854 1854 1855 1855 /*now, compute maximum:*/ … … 1881 1881 1882 1882 /*process units if requested: */ 1883 if(process_units) NodalValuesUnitConversion(&vel_values[0],numgrids,VelEnum,this->parameters);1883 if(process_units)UnitConversion(&vel_values[0],numgrids,IuToExtEnum,VelEnum,this->parameters); 1884 1884 1885 1885 /*now, compute minimum:*/ … … 1911 1911 1912 1912 /*process units if requested: */ 1913 if(process_units) NodalValuesUnitConversion(&vx_values[0],numgrids,VxEnum,this->parameters);1913 if(process_units)UnitConversion(&vx_values[0],numgrids,IuToExtEnum,VxEnum,this->parameters); 1914 1914 1915 1915 /*now, compute minimum:*/ … … 1941 1941 1942 1942 /*process units if requested: */ 1943 if(process_units) NodalValuesUnitConversion(&vy_values[0],numgrids,VyEnum,this->parameters);1943 if(process_units)UnitConversion(&vy_values[0],numgrids,IuToExtEnum,VyEnum,this->parameters); 1944 1944 1945 1945 /*now, compute minimum:*/ … … 1971 1971 1972 1972 /*process units if requested: */ 1973 if(process_units) NodalValuesUnitConversion(&vz_values[0],numgrids,VzEnum,this->parameters);1973 if(process_units)UnitConversion(&vz_values[0],numgrids,IuToExtEnum,VzEnum,this->parameters); 1974 1974 1975 1975 /*now, compute minimum:*/ … … 2152 2152 } 2153 2153 /*Process units: */ 2154 if(process_units) NodalValuesUnitConversion(&misfit_list[0],numgrids,SurfaceAbsVelMisfitEnum,this->parameters);2154 if(process_units)UnitConversion(&misfit_list[0],numgrids,IuToExtEnum,SurfaceAbsVelMisfitEnum,this->parameters); 2155 2155 2156 2156 /*Apply weights to misfits*/ … … 2284 2284 2285 2285 /*Process units: */ 2286 if(process_units) NodalValuesUnitConversion(&misfit_list[0],numgrids,SurfaceRelVelMisfitEnum,this->parameters);2286 if(process_units)UnitConversion(&misfit_list[0],numgrids,IuToExtEnum,SurfaceRelVelMisfitEnum,this->parameters); 2287 2287 2288 2288 /*Apply weights to misfits*/ … … 2414 2414 2415 2415 /*Process units: */ 2416 if(process_units) NodalValuesUnitConversion(&misfit_list[0],numgrids,SurfaceLogVelMisfitEnum,this->parameters);2416 if(process_units)UnitConversion(&misfit_list[0],numgrids,IuToExtEnum,SurfaceLogVelMisfitEnum,this->parameters); 2417 2417 2418 2418 /*Apply weights to misfits*/ … … 2546 2546 2547 2547 /*Process units: */ 2548 if(process_units) NodalValuesUnitConversion(&misfit_list[0],numgrids,SurfaceLogVxVyMisfitEnum,this->parameters);2548 if(process_units)UnitConversion(&misfit_list[0],numgrids,IuToExtEnum,SurfaceLogVxVyMisfitEnum,this->parameters); 2549 2549 2550 2550 /*Apply weights to misfits*/ … … 2674 2674 2675 2675 /*Process units: */ 2676 if(process_units) NodalValuesUnitConversion(&misfit_square_list[0],numgrids,SurfaceAverageVelMisfitEnum,this->parameters);2676 if(process_units)UnitConversion(&misfit_square_list[0],numgrids,IuToExtEnum,SurfaceAverageVelMisfitEnum,this->parameters); 2677 2677 2678 2678 /*Take the square root, and scale by surface: */ -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
r5513 r5529 418 418 419 419 /*Process units if requested: */ 420 if(process_units) NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);420 if(process_units)UnitConversion(&valuescopy[0],numnodes,IuToExtEnum,enum_type,parameters); 421 421 422 422 /*Now, figure out minimum of valuescopy: */ -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
r5513 r5529 270 270 271 271 /*Process units if requested: */ 272 if(process_units) NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);272 if(process_units)UnitConversion(&valuescopy[0],numnodes,IuToExtEnum,enum_type,parameters); 273 273 274 274 /*Now, figure out minimum of valuescopy: */ -
issm/trunk/src/c/shared/Numerics/UnitConversion.cpp
r5522 r5529 1 /*!\file: NodalValuesUnitConversion.cpp 2 * \brief: process nodal_values held in a ElementResult object. 3 * For example, velocities need to be in m/yr, melting rates in m/yr, etc ... 4 * This centralizes all post-processing of results when they are being output. 1 /*!\file: UnitConversion.cpp 2 * \brief: convert units from the model to IU or from IU to the model. 5 3 */ 6 4 5 /*headers {{{1*/ 7 6 #ifdef HAVE_CONFIG_H 8 7 #include "config.h" … … 16 15 #include "../../shared/shared.h" 17 16 18 void NodalValuesUnitConversion(double* nodal_values, int num_nodal_values,int enum_type,Parameters* parameters){ 17 double UnitConversionScaleFactor(int type_enum,Parameters* parameters); 18 /*}}}*/ 19 19 20 void UnitConversion(double* values, int numvalues,int direction_enum, int type_enum, Parameters* parameters){ 21 22 double scale; 20 23 int i; 21 double yts; 24 25 /*Get scaling factor: */ 26 scale=UnitConversionScaleFactor(type_enum,parameters); 27 28 /*Now, which direction are we going? once determined, use scale factor: */ 29 if(direction_enum==IuToExtEnum) for(i=0;i<numvalues;i++)values[i]=values[i]*scale; 30 else if(direction_enum==ExtToIuEnum) for(i=0;i<numvalues;i++)values[i]=values[i]/scale; 31 else ISSMERROR(" wrong direction for unit conversion, either IuToExtEnum or ExtToIuEnum. "); 32 33 } 34 35 double UnitConversion(double value, int direction_enum, int type_enum, Parameters* parameters){ 36 22 37 double scale; 23 38 39 /*Get scaling factor: */ 40 scale=UnitConversionScaleFactor(type_enum,parameters); 41 42 /*Now, which direction are we going? once determined, use scale factor: */ 43 if(direction_enum==IuToExtEnum)value=value*scale; 44 else if(direction_enum==ExtToIuEnum)value=value/scale; 45 else ISSMERROR(" wrong direction for unit conversion, either IuToExtEnum or ExtToIuEnum. "); 46 47 return value; 48 } 49 50 51 52 double UnitConversionScaleFactor(int type_enum,Parameters* parameters){ 53 54 double yts; 55 24 56 /*Get some values from parameters, that are often needed: */ 25 57 parameters->FindParam(&yts,YtsEnum); 26 58 27 /*Get scaling factor: */28 switch( enum_type){59 double scale; 60 switch(type_enum){ 29 61 case VxEnum: scale=yts;break; //m/yr 62 case VxObsEnum: scale=yts;break; //m/yr 30 63 case VyEnum: scale=yts;break; //m/yr 64 case VyObsEnum: scale=yts;break; //m/yr 31 65 case VzEnum: scale=yts;break; //m/yr 66 case VzObsEnum: scale=yts;break; //m/yr 32 67 case VelEnum: scale=yts;break; //m/yr 68 case VelObsEnum: scale=yts;break; //m/yr 33 69 case DhDtEnum: scale=yts;break; //m/yr 34 70 case MeltingRateEnum: scale=yts;break; //m/yr 35 71 case MisfitEnum: scale=pow(yts,2);break; //(m/yr)^2 36 72 case MassFluxEnum: scale=pow(10,-12)*yts;break; // (GigaTon/year) 37 default: return;73 default: scale=1.0; break; 38 74 } 39 40 /*Scale : */ 41 for(i=0;i<num_nodal_values;i++)nodal_values[i]=nodal_values[i]*scale; 75 return scale; 42 76 } 77 78 79 -
issm/trunk/src/c/shared/Numerics/numerics.h
r4055 r5529 9 9 #include "./isnan.h" 10 10 class Input; 11 class Parameters; 11 12 12 13 struct OptArgs; … … 20 21 double norm(double* vector); 21 22 void IsInputConverged(double* peps, Input** new_inputs,Input** old_inputs,int num_inputs,int criterion_enum); 23 void UnitConversion(double* values, int numvalues,int direction_enum, int type_enum, Parameters* parameters); 24 double UnitConversion(double value, int direction_enum, int type_enum, Parameters* parameters); 22 25 23 26 #endif //ifndef _NUMERICS_H_
Note:
See TracChangeset
for help on using the changeset viewer.