#include #include #include #include "JTools/JGrid.hh" #include "JAcoustics/JGeometry.hh" #include "JAcoustics/JModel.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" /** * Example application for acoustics geometry. */ int main(int argc, char **argv) { using namespace std; using namespace JPP; typedef JGrid grid_type; JMODEL::JString parameters; JMechanics mechanics; grid_type grid; string outputFile; int debug; try { JParser<> zap("Example application for acoustics geometry."); zap['S'] = make_field(parameters) = JPARSER::initialised(); zap['M'] = make_field(mechanics) = JPARSER::initialised(); zap['G'] = make_field(grid); zap['o'] = make_field(outputFile) = ""; zap['d'] = make_field(debug) = 3; zap(argc, argv); } catch(const exception &error) { FATAL(error.what() << endl); } // build string const double x0 = 0.0; const double y0 = 0.0; const double z0 = 0.0; JGEOMETRY::JString string(JPosition3D(x0, y0, z0), mechanics); string.has_hydrophone = true; string[0] = JGEOMETRY::JFloor(z0); for (int i = 1; i <= grid.getSize(); ++i) { string[i] = JGEOMETRY::JFloor(z0 + grid.getX(i - 1)); } cout << "tilt: " << FIXED(6,3) << parameters.tx << ' ' << FIXED(6,3) << parameters.ty << endl; cout << " " << ' ' << " x " << ' ' << " y " << ' ' << " z " << ' ' << " dx " << ' ' << " dy " << ' ' << " dz " << endl; for (int i = 1; i <= grid.getSize(); ++i) { const JPosition3D pos[] = { string.getPosition(parameters, i - 1), string.getPosition(parameters, i) }; cout << setw(2) << i << ' ' << FIXED(7,3) << pos[1].getX() << ' ' << FIXED(7,3) << pos[1].getY() << ' ' << FIXED(7,3) << pos[1].getZ() << ' ' << FIXED(7,3) << pos[1].getX() - pos[0].getX() << ' ' << FIXED(7,3) << pos[1].getY() - pos[0].getY() << ' ' << FIXED(7,3) << pos[1].getZ() - pos[0].getZ() << endl; } if (outputFile != "") { ofstream out(outputFile.c_str()); for (int i = 1; i <= grid.getSize(); ++i) { const JPosition3D pos = string.getPosition(parameters, i); out << FIXED(7,3) << pos.getX() << ' ' << FIXED(7,3) << pos.getZ() << endl; } out.close(); } }