Loading .clang-tidy +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License along with # aqcnes. If not, see <https://www.gnu.org/licenses/>. --- Checks: '*,-abseil-*,-altera-*,-android-*,-darwin-*,-fuchsia-*,-llvmlibc-*,linuxkernel-*,-zirkon-*,-objc-*,-google-objc-*,-google-readability-*,-llvm-include-order,-llvm-prefer-register-over-unsigned,-llvm-twine-local,-llvm-header-guard,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-non-private-member-variables-in-classes,-readability-magic-numbers,-readability-identifier-length,-readability-braces-around-statements,-readability-use-anyofallof,-readability-named-parameter,-readability-avoid-const-params-in-decls,-hicpp-named-parameter,-hicpp-braces-around-statements,-modernize-use-trailing-return-type,-misc-non-private-member-variables-in-classes,-misc-no-recursion,-bugprone-easily-swappable-parameters,-cert-msc32-c,-cert-msc51-cpp,-clang-analyzer-optin.mpi.MPI-Checker,-todo,-readability-function-cognitive-complexity,-cert-err34-c,-cert-msc30-c,-cert-msc50-cpp,-bugprone-exception-escape,-concurrency-mt-unsafe,-google-build-using-namespace,-google-runtime-int' Checks: '*,-abseil-*,-altera-*,-android-*,-darwin-*,-fuchsia-*,-llvmlibc-*,linuxkernel-*,-zirkon-*,-objc-*,-google-objc-*,-google-readability-*,-llvm-include-order,-llvm-prefer-register-over-unsigned,-llvm-twine-local,-llvm-header-guard,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-non-private-member-variables-in-classes,-readability-magic-numbers,-readability-identifier-length,-readability-braces-around-statements,-readability-use-anyofallof,-readability-named-parameter,-readability-avoid-const-params-in-decls,-hicpp-named-parameter,-hicpp-braces-around-statements,-modernize-use-trailing-return-type,-misc-non-private-member-variables-in-classes,-misc-no-recursion,-bugprone-easily-swappable-parameters,-cert-msc32-c,-cert-msc51-cpp,-clang-analyzer-optin.mpi.MPI-Checker,-todo,-readability-function-cognitive-complexity,-cert-err34-c,-cert-msc30-c,-cert-msc50-cpp,-bugprone-exception-escape,-concurrency-mt-unsafe,-google-runtime-int' WarningsAsErrors: '*' HeaderFilterRegex: 'src/.*\.(h|ipp)' AnalyzeTemporaryDtors: false Loading src/main/elastic_constants.cpp +35 −29 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ #include <boost/mpi.hpp> #include <string_view> using namespace std; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading Loading @@ -84,12 +83,14 @@ int main(int argc, char *argv[]) { lattice::load_lattice_cache<DIM>(solver_variables.input.lattice_file))); if (mpi_rank == 0) { cout << "--------------------------------------------------------" << endl; cout << " WARNING! Please double-check the crystal lattice structure." << endl; cout << " running :- " << "FCC" << endl; cout << "--------------------------------------------------------" << endl; std::cout << "--------------------------------------------------------" << std::endl; std::cout << " WARNING! Please double-check the crystal lattice structure." << std::endl; std::cout << " running :- " << "FCC" << std::endl; std::cout << "--------------------------------------------------------" << std::endl; } const auto &restart_file_name = solver_variables.input.restart_file_name; Loading Loading @@ -122,7 +123,7 @@ int main(int argc, char *argv[]) { solver_variables.local_mesh.periodic_lengths) << std::endl; cout << " periodic offsets : " << std::endl; std::cout << " periodic offsets : " << std::endl; for (const auto &offset : solver_variables.local_mesh.periodic_offsets) std::cout << array_ops::as_streamable(offset) << std::endl; } Loading @@ -133,20 +134,20 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "--------------------------------------------" << endl; cout << "domain is bound within " << endl; cout << "lower : " std::cout << "--------------------------------------------" << std::endl; std::cout << "domain is bound within " << std::endl; std::cout << "lower : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << endl; cout << "upper : " << std::endl; std::cout << "upper : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; cout << "Verlet list buffer " << std::endl; std::cout << "Verlet list buffer " << solver_variables.input.verlet_buffer_factor * solver_variables.input.neighbour_update_displacement << endl; << std::endl; } } Loading @@ -167,9 +168,12 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "-------------------------------------------------" << endl; cout << "--------------- Attempting initial repair--------" << endl; cout << "-------------------------------------------------" << endl; std::cout << "-------------------------------------------------" << std::endl; std::cout << "--------------- Attempting initial repair--------" << std::endl; std::cout << "-------------------------------------------------" << std::endl; } // initial repair after triangulation meshing::repair_mesh(solver_variables.local_mesh); Loading Loading @@ -221,17 +225,18 @@ int main(int argc, char *argv[]) { } if (min_distance < 1.0) { cout << mpi_rank << " , " << id << " , " std::cout << mpi_rank << " , " << id << " , " << array_ops::as_streamable( solver_variables.local_mesh.nodes .at(solver_variables.local_mesh.node_index_to_key.at(id)) .at(solver_variables.local_mesh.node_index_to_key.at( id)) .position) << endl; << std::endl; } } if (mpi_rank == 0) { cout << "Neighbourhood udpdate styles, " std::cout << "Neighbourhood udpdate styles, " << "Verlet : " << (solver_variables.input.neighbour_update_style == input::NeighbourUpdateStyle::VERLET) Loading @@ -241,7 +246,7 @@ int main(int argc, char *argv[]) { << " :: " << static_cast<std::size_t>( solver_variables.input.neighbour_update_style) << endl; << std::endl; } solver_variables.relaxation_fire_parameters.time_step = Loading Loading @@ -339,10 +344,10 @@ int main(int argc, char *argv[]) { mesh_volume = solver_variables.local_mesh.volume(); string filename = std::string filename = "energy_volume_" + solver_variables.materials[0].material_name; ofstream f_external; std::ofstream f_external; #ifdef FINITE_TEMPERATURE const auto output_t = std::to_string(solver_variables.input.T_ref); Loading @@ -364,7 +369,7 @@ int main(int argc, char *argv[]) { f_external.close(); } vector<geometry::Point<DIM>> initial_locations; std::vector<geometry::Point<DIM>> initial_locations; initial_locations = solver_variables.local_mesh.repatoms.locations; for (auto &val : solver_variables.input.periodicity) Loading Loading @@ -450,13 +455,14 @@ int main(int argc, char *argv[]) { const auto elapsed_time = clock.toc(); cout << "rank " << mpi_rank << " took " << elapsed_time << " with " std::cout << "rank " << mpi_rank << " took " << elapsed_time << " with " << solver_variables.local_mesh.sampling_atoms.nodal_locations.size() << " nodal sampling atoms " << solver_variables.local_mesh.sampling_atoms.central_locations.size() << " central sampling atoms " << solver_variables.local_mesh.nodes.size() << " nodes and " << solver_variables.local_mesh.cells.size() << " elements" << endl; << " elements" << std::endl; PetscFinalize(); // MPI_Finalize(); Loading src/main/energy_minima.cpp +18 −24 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ #include <chrono> #include <string_view> using namespace std; using namespace geometry; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading @@ -47,8 +45,7 @@ using Matrix = Eigen::Matrix<double, DIM, DIM>; using SolverKernel = solver::Solver; int main(int argc, char *argv[]) { using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); const auto t1 = std::chrono::high_resolution_clock::now(); solver::SolverVariables<DIM> solver_variables; Loading @@ -70,28 +67,28 @@ int main(int argc, char *argv[]) { geometry::Point<DIM> center = {{0.0, 0.0, 0.0}}; array<array<double, DIM>, DIM> basis = std::array<std::array<double, DIM>, DIM> basis = solver_variables.materials[0].basis_vectors; geometry::Point<DIM> px = {{basis[0][0], basis[1][0], basis[2][0]}}; geometry::Point<DIM> py = {{basis[0][1], basis[1][1], basis[2][1]}}; geometry::Point<DIM> pz = {{basis[0][2], basis[1][2], basis[2][2]}}; vector<geometry::Point<DIM>> lattice; std::vector<geometry::Point<DIM>> lattice; geometry::Point<DIM> lattice_point; vector<geometry::Point<DIM>> neighbours; std::vector<geometry::Point<DIM>> neighbours; const auto args = utils::DynamicSpan(argv, argc); const auto r_r0 = stod(args[1]); const auto dr = stod(args[2]); const std::size_t nr = static_cast<std::size_t>(stoi(args[3])); const auto r_r0 = std::stod(args[1]); const auto dr = std::stod(args[2]); const std::size_t nr = static_cast<std::size_t>(std::stoi(args[3])); double min_energy = 0.0; double r_min{}; string file_name; string thermal_expansion_file_name; string force_file_name; std::string file_name; std::string thermal_expansion_file_name; std::string force_file_name; std::ofstream f_energies; std::ofstream f_forces; std::ofstream f_thermal_expansion; Loading @@ -105,12 +102,12 @@ int main(int argc, char *argv[]) { std::vector<double> thermal_forces_atom; std::vector<double> thermal_forces_neigh; ThermalPoint atom_thermal_coordinates; vector<ThermalPoint> neighbours_thermal_coordinates; std::vector<ThermalPoint> neighbours_thermal_coordinates; double temp = solver_variables.input.T_ref; const auto sigma_start = stod(args[4]); const auto dsigma = stod(args[5]); const std::size_t nsigma = static_cast<std::size_t>(stoi(args[6])); const auto sigma_start = std::stod(args[4]); const auto dsigma = std::stod(args[5]); const std::size_t nsigma = static_cast<std::size_t>(std::stoi(args[6])); double sigma_min{}; double entropy = 0.0; Loading Loading @@ -175,8 +172,6 @@ int main(int argc, char *argv[]) { // Compute forces and energy double energy{}; double kenergy{}; // std::vector<point<DIM>> forces; // std::vector<double> thermal_forces_atom, thermal_forces_neigh; kenergy = 3.0 * exp(-atom_thermal_coordinates[0]) / 2; energy = 0.0; Loading Loading @@ -210,12 +205,10 @@ int main(int argc, char *argv[]) { std::cout << " Minimising parameters: Spacing coefficient " << r_min << " and Sigma " << sigma_min << std::endl; // f_energies.close(); f_thermal_expansion << temp << " " << r_min << " " << sigma_min << " " << min_energy << '\n'; } f_thermal_expansion.close(); // f_forces.close(); #else Loading Loading @@ -293,9 +286,10 @@ int main(int argc, char *argv[]) { PetscFinalize(); high_resolution_clock::time_point t2 = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << endl; const auto t2 = std::chrono::high_resolution_clock::now(); const auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << std::endl; return 0; } src/main/external_shear.cpp +37 −31 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ // // You should have received a copy of the GNU General Public License along with // aqcnes. If not, see <https://www.gnu.org/licenses/>. /** @file * @brief Example to perform a quasistatic displacement driven shear of a mesh with staggered relaxation steps * @author P. Gupta Loading @@ -39,7 +40,6 @@ #include <boost/mpi.hpp> #include <string_view> using namespace std; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading Loading @@ -88,12 +88,14 @@ int main(int argc, char *argv[]) { lattice::load_lattice_cache<DIM>(solver_variables.input.lattice_file))); if (mpi_rank == 0) { cout << "--------------------------------------------------------" << endl; cout << " WARNING! Please double-check the crystal lattice structure." << endl; cout << " running :- " << "FCC" << endl; cout << "--------------------------------------------------------" << endl; std::cout << "--------------------------------------------------------" << std::endl; std::cout << " WARNING! Please double-check the crystal lattice structure." << std::endl; std::cout << " running :- " << "FCC" << std::endl; std::cout << "--------------------------------------------------------" << std::endl; } const auto &restart_file_name = solver_variables.input.restart_file_name; Loading @@ -114,13 +116,13 @@ int main(int argc, char *argv[]) { //=-=-=-=-=-=-=-=-=<Initialize periodic lengths and flags>-=-=-=-=-=-// if (mpi_rank == 0) { cout << "periodic lengths : " std::cout << "periodic lengths : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << " , " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; << std::endl; } // redistribute the mesh again after this so periodic connectivities are Loading @@ -131,20 +133,20 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "--------------------------------------------" << endl; cout << "domain is bound within " << endl; cout << "lower : " std::cout << "--------------------------------------------" << std::endl; std::cout << "domain is bound within " << std::endl; std::cout << "lower : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << endl; cout << "upper : " << std::endl; std::cout << "upper : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; cout << "Verlet list buffer " << std::endl; std::cout << "Verlet list buffer " << solver_variables.input.verlet_buffer_factor * solver_variables.input.neighbour_update_displacement << endl; << std::endl; } } Loading @@ -165,9 +167,12 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "-------------------------------------------------" << endl; cout << "--------------- Attempting initial repair--------" << endl; cout << "-------------------------------------------------" << endl; std::cout << "-------------------------------------------------" << std::endl; std::cout << "--------------- Attempting initial repair--------" << std::endl; std::cout << "-------------------------------------------------" << std::endl; } // initial repair after triangulation meshing::repair_mesh(solver_variables.local_mesh); Loading Loading @@ -235,7 +240,7 @@ int main(int argc, char *argv[]) { } if (mpi_rank == 0) { cout << "Neighbourhood udpdate styles, " std::cout << "Neighbourhood udpdate styles, " << "Verlet : " << (solver_variables.input.neighbour_update_style == input::NeighbourUpdateStyle::VERLET) Loading @@ -245,7 +250,7 @@ int main(int argc, char *argv[]) { << " :: " << static_cast<std::size_t>( solver_variables.input.neighbour_update_style) << endl; << std::endl; } solver_variables.relaxation_fire_parameters.time_step = Loading Loading @@ -291,7 +296,7 @@ int main(int argc, char *argv[]) { SolverKernel::allocate_initial_neighbourhoods< meshing::NodalDataMultispecies<NOI>, DIM, NIDOF>(solver_variables); ofstream f_external; std::ofstream f_external; solver_variables.local_mesh.compute_nodal_centro_symmetry(); Loading Loading @@ -398,9 +403,9 @@ int main(int argc, char *argv[]) { w_all_global = qcmesh::mpi::all_reduce_sum(w_all_local); if (mpi_rank == 0) { cout << "beginning with external shear " << restart_data.external_strain << " and shear increment " << restart_data.external_strain_increment << endl; std::cout << "beginning with external shear " << restart_data.external_strain << " and shear increment " << restart_data.external_strain_increment << std::endl; } // get the left and right dislocations Loading Loading @@ -467,7 +472,7 @@ int main(int argc, char *argv[]) { array_ops::as_eigen(dislocation_r) /= mass_r; solver_variables.local_mesh.repatoms.get_fixed_region_force(external_force); string filename = "ExternalStrainForce"; std::string filename = "ExternalStrainForce"; #ifdef FINITE_TEMPERATURE filename += "_" + Loading @@ -484,7 +489,7 @@ int main(int argc, char *argv[]) { << array_ops::as_streamable(external_force) << " " << array_ops::distance(dislocation_l, dislocation_r) << " " << v_all_global << " " << k_all_global << " " << w_all_global << endl; << std::endl; f_external.close(); } Loading Loading @@ -646,7 +651,7 @@ int main(int argc, char *argv[]) { << array_ops::as_streamable(external_force) << " " << array_ops::distance(dislocation_l, dislocation_r) << " " << v_all_global << " " << k_all_global << " " << w_all_global << endl; << std::endl; f_external.close(); } Loading @@ -659,13 +664,14 @@ int main(int argc, char *argv[]) { const auto elapsed_time = clock.toc(); cout << "rank " << mpi_rank << " took " << elapsed_time << " with " std::cout << "rank " << mpi_rank << " took " << elapsed_time << " with " << solver_variables.local_mesh.sampling_atoms.nodal_locations.size() << " nodal sampling atoms " << solver_variables.local_mesh.sampling_atoms.central_locations.size() << " central sampling atoms " << solver_variables.local_mesh.nodes.size() << " nodes and " << solver_variables.local_mesh.cells.size() << " elements" << endl; << " elements" << std::endl; PetscFinalize(); // MPI_Finalize(); Loading src/main/infinite_model_deformation.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -23,16 +23,13 @@ #include "solver/infinite_model_relaxation.hpp" #include <string_view> using namespace geometry; static constexpr std::size_t DIM = 3; static constexpr std::size_t NIDOF = 2; static constexpr std::size_t NOI = 1; constexpr static std::string_view HELP = "using petsc.\n\n"; int main(int argc, char *argv[]) { using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); const auto t1 = std::chrono::high_resolution_clock::now(); solver::SolverVariables<DIM> solver_variables; Loading Loading @@ -92,8 +89,9 @@ int main(int argc, char *argv[]) { PetscFinalize(); high_resolution_clock::time_point t2 = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); const auto t2 = std::chrono::high_resolution_clock::now(); const auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << std::endl; return 0; Loading Loading
.clang-tidy +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License along with # aqcnes. If not, see <https://www.gnu.org/licenses/>. --- Checks: '*,-abseil-*,-altera-*,-android-*,-darwin-*,-fuchsia-*,-llvmlibc-*,linuxkernel-*,-zirkon-*,-objc-*,-google-objc-*,-google-readability-*,-llvm-include-order,-llvm-prefer-register-over-unsigned,-llvm-twine-local,-llvm-header-guard,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-non-private-member-variables-in-classes,-readability-magic-numbers,-readability-identifier-length,-readability-braces-around-statements,-readability-use-anyofallof,-readability-named-parameter,-readability-avoid-const-params-in-decls,-hicpp-named-parameter,-hicpp-braces-around-statements,-modernize-use-trailing-return-type,-misc-non-private-member-variables-in-classes,-misc-no-recursion,-bugprone-easily-swappable-parameters,-cert-msc32-c,-cert-msc51-cpp,-clang-analyzer-optin.mpi.MPI-Checker,-todo,-readability-function-cognitive-complexity,-cert-err34-c,-cert-msc30-c,-cert-msc50-cpp,-bugprone-exception-escape,-concurrency-mt-unsafe,-google-build-using-namespace,-google-runtime-int' Checks: '*,-abseil-*,-altera-*,-android-*,-darwin-*,-fuchsia-*,-llvmlibc-*,linuxkernel-*,-zirkon-*,-objc-*,-google-objc-*,-google-readability-*,-llvm-include-order,-llvm-prefer-register-over-unsigned,-llvm-twine-local,-llvm-header-guard,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-non-private-member-variables-in-classes,-readability-magic-numbers,-readability-identifier-length,-readability-braces-around-statements,-readability-use-anyofallof,-readability-named-parameter,-readability-avoid-const-params-in-decls,-hicpp-named-parameter,-hicpp-braces-around-statements,-modernize-use-trailing-return-type,-misc-non-private-member-variables-in-classes,-misc-no-recursion,-bugprone-easily-swappable-parameters,-cert-msc32-c,-cert-msc51-cpp,-clang-analyzer-optin.mpi.MPI-Checker,-todo,-readability-function-cognitive-complexity,-cert-err34-c,-cert-msc30-c,-cert-msc50-cpp,-bugprone-exception-escape,-concurrency-mt-unsafe,-google-runtime-int' WarningsAsErrors: '*' HeaderFilterRegex: 'src/.*\.(h|ipp)' AnalyzeTemporaryDtors: false Loading
src/main/elastic_constants.cpp +35 −29 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ #include <boost/mpi.hpp> #include <string_view> using namespace std; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading Loading @@ -84,12 +83,14 @@ int main(int argc, char *argv[]) { lattice::load_lattice_cache<DIM>(solver_variables.input.lattice_file))); if (mpi_rank == 0) { cout << "--------------------------------------------------------" << endl; cout << " WARNING! Please double-check the crystal lattice structure." << endl; cout << " running :- " << "FCC" << endl; cout << "--------------------------------------------------------" << endl; std::cout << "--------------------------------------------------------" << std::endl; std::cout << " WARNING! Please double-check the crystal lattice structure." << std::endl; std::cout << " running :- " << "FCC" << std::endl; std::cout << "--------------------------------------------------------" << std::endl; } const auto &restart_file_name = solver_variables.input.restart_file_name; Loading Loading @@ -122,7 +123,7 @@ int main(int argc, char *argv[]) { solver_variables.local_mesh.periodic_lengths) << std::endl; cout << " periodic offsets : " << std::endl; std::cout << " periodic offsets : " << std::endl; for (const auto &offset : solver_variables.local_mesh.periodic_offsets) std::cout << array_ops::as_streamable(offset) << std::endl; } Loading @@ -133,20 +134,20 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "--------------------------------------------" << endl; cout << "domain is bound within " << endl; cout << "lower : " std::cout << "--------------------------------------------" << std::endl; std::cout << "domain is bound within " << std::endl; std::cout << "lower : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << endl; cout << "upper : " << std::endl; std::cout << "upper : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; cout << "Verlet list buffer " << std::endl; std::cout << "Verlet list buffer " << solver_variables.input.verlet_buffer_factor * solver_variables.input.neighbour_update_displacement << endl; << std::endl; } } Loading @@ -167,9 +168,12 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "-------------------------------------------------" << endl; cout << "--------------- Attempting initial repair--------" << endl; cout << "-------------------------------------------------" << endl; std::cout << "-------------------------------------------------" << std::endl; std::cout << "--------------- Attempting initial repair--------" << std::endl; std::cout << "-------------------------------------------------" << std::endl; } // initial repair after triangulation meshing::repair_mesh(solver_variables.local_mesh); Loading Loading @@ -221,17 +225,18 @@ int main(int argc, char *argv[]) { } if (min_distance < 1.0) { cout << mpi_rank << " , " << id << " , " std::cout << mpi_rank << " , " << id << " , " << array_ops::as_streamable( solver_variables.local_mesh.nodes .at(solver_variables.local_mesh.node_index_to_key.at(id)) .at(solver_variables.local_mesh.node_index_to_key.at( id)) .position) << endl; << std::endl; } } if (mpi_rank == 0) { cout << "Neighbourhood udpdate styles, " std::cout << "Neighbourhood udpdate styles, " << "Verlet : " << (solver_variables.input.neighbour_update_style == input::NeighbourUpdateStyle::VERLET) Loading @@ -241,7 +246,7 @@ int main(int argc, char *argv[]) { << " :: " << static_cast<std::size_t>( solver_variables.input.neighbour_update_style) << endl; << std::endl; } solver_variables.relaxation_fire_parameters.time_step = Loading Loading @@ -339,10 +344,10 @@ int main(int argc, char *argv[]) { mesh_volume = solver_variables.local_mesh.volume(); string filename = std::string filename = "energy_volume_" + solver_variables.materials[0].material_name; ofstream f_external; std::ofstream f_external; #ifdef FINITE_TEMPERATURE const auto output_t = std::to_string(solver_variables.input.T_ref); Loading @@ -364,7 +369,7 @@ int main(int argc, char *argv[]) { f_external.close(); } vector<geometry::Point<DIM>> initial_locations; std::vector<geometry::Point<DIM>> initial_locations; initial_locations = solver_variables.local_mesh.repatoms.locations; for (auto &val : solver_variables.input.periodicity) Loading Loading @@ -450,13 +455,14 @@ int main(int argc, char *argv[]) { const auto elapsed_time = clock.toc(); cout << "rank " << mpi_rank << " took " << elapsed_time << " with " std::cout << "rank " << mpi_rank << " took " << elapsed_time << " with " << solver_variables.local_mesh.sampling_atoms.nodal_locations.size() << " nodal sampling atoms " << solver_variables.local_mesh.sampling_atoms.central_locations.size() << " central sampling atoms " << solver_variables.local_mesh.nodes.size() << " nodes and " << solver_variables.local_mesh.cells.size() << " elements" << endl; << " elements" << std::endl; PetscFinalize(); // MPI_Finalize(); Loading
src/main/energy_minima.cpp +18 −24 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ #include <chrono> #include <string_view> using namespace std; using namespace geometry; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading @@ -47,8 +45,7 @@ using Matrix = Eigen::Matrix<double, DIM, DIM>; using SolverKernel = solver::Solver; int main(int argc, char *argv[]) { using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); const auto t1 = std::chrono::high_resolution_clock::now(); solver::SolverVariables<DIM> solver_variables; Loading @@ -70,28 +67,28 @@ int main(int argc, char *argv[]) { geometry::Point<DIM> center = {{0.0, 0.0, 0.0}}; array<array<double, DIM>, DIM> basis = std::array<std::array<double, DIM>, DIM> basis = solver_variables.materials[0].basis_vectors; geometry::Point<DIM> px = {{basis[0][0], basis[1][0], basis[2][0]}}; geometry::Point<DIM> py = {{basis[0][1], basis[1][1], basis[2][1]}}; geometry::Point<DIM> pz = {{basis[0][2], basis[1][2], basis[2][2]}}; vector<geometry::Point<DIM>> lattice; std::vector<geometry::Point<DIM>> lattice; geometry::Point<DIM> lattice_point; vector<geometry::Point<DIM>> neighbours; std::vector<geometry::Point<DIM>> neighbours; const auto args = utils::DynamicSpan(argv, argc); const auto r_r0 = stod(args[1]); const auto dr = stod(args[2]); const std::size_t nr = static_cast<std::size_t>(stoi(args[3])); const auto r_r0 = std::stod(args[1]); const auto dr = std::stod(args[2]); const std::size_t nr = static_cast<std::size_t>(std::stoi(args[3])); double min_energy = 0.0; double r_min{}; string file_name; string thermal_expansion_file_name; string force_file_name; std::string file_name; std::string thermal_expansion_file_name; std::string force_file_name; std::ofstream f_energies; std::ofstream f_forces; std::ofstream f_thermal_expansion; Loading @@ -105,12 +102,12 @@ int main(int argc, char *argv[]) { std::vector<double> thermal_forces_atom; std::vector<double> thermal_forces_neigh; ThermalPoint atom_thermal_coordinates; vector<ThermalPoint> neighbours_thermal_coordinates; std::vector<ThermalPoint> neighbours_thermal_coordinates; double temp = solver_variables.input.T_ref; const auto sigma_start = stod(args[4]); const auto dsigma = stod(args[5]); const std::size_t nsigma = static_cast<std::size_t>(stoi(args[6])); const auto sigma_start = std::stod(args[4]); const auto dsigma = std::stod(args[5]); const std::size_t nsigma = static_cast<std::size_t>(std::stoi(args[6])); double sigma_min{}; double entropy = 0.0; Loading Loading @@ -175,8 +172,6 @@ int main(int argc, char *argv[]) { // Compute forces and energy double energy{}; double kenergy{}; // std::vector<point<DIM>> forces; // std::vector<double> thermal_forces_atom, thermal_forces_neigh; kenergy = 3.0 * exp(-atom_thermal_coordinates[0]) / 2; energy = 0.0; Loading Loading @@ -210,12 +205,10 @@ int main(int argc, char *argv[]) { std::cout << " Minimising parameters: Spacing coefficient " << r_min << " and Sigma " << sigma_min << std::endl; // f_energies.close(); f_thermal_expansion << temp << " " << r_min << " " << sigma_min << " " << min_energy << '\n'; } f_thermal_expansion.close(); // f_forces.close(); #else Loading Loading @@ -293,9 +286,10 @@ int main(int argc, char *argv[]) { PetscFinalize(); high_resolution_clock::time_point t2 = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << endl; const auto t2 = std::chrono::high_resolution_clock::now(); const auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << std::endl; return 0; }
src/main/external_shear.cpp +37 −31 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ // // You should have received a copy of the GNU General Public License along with // aqcnes. If not, see <https://www.gnu.org/licenses/>. /** @file * @brief Example to perform a quasistatic displacement driven shear of a mesh with staggered relaxation steps * @author P. Gupta Loading @@ -39,7 +40,6 @@ #include <boost/mpi.hpp> #include <string_view> using namespace std; namespace array_ops = qcmesh::array_ops; constexpr static std::string_view HELP = "using petsc.\n\n"; Loading Loading @@ -88,12 +88,14 @@ int main(int argc, char *argv[]) { lattice::load_lattice_cache<DIM>(solver_variables.input.lattice_file))); if (mpi_rank == 0) { cout << "--------------------------------------------------------" << endl; cout << " WARNING! Please double-check the crystal lattice structure." << endl; cout << " running :- " << "FCC" << endl; cout << "--------------------------------------------------------" << endl; std::cout << "--------------------------------------------------------" << std::endl; std::cout << " WARNING! Please double-check the crystal lattice structure." << std::endl; std::cout << " running :- " << "FCC" << std::endl; std::cout << "--------------------------------------------------------" << std::endl; } const auto &restart_file_name = solver_variables.input.restart_file_name; Loading @@ -114,13 +116,13 @@ int main(int argc, char *argv[]) { //=-=-=-=-=-=-=-=-=<Initialize periodic lengths and flags>-=-=-=-=-=-// if (mpi_rank == 0) { cout << "periodic lengths : " std::cout << "periodic lengths : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << " , " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; << std::endl; } // redistribute the mesh again after this so periodic connectivities are Loading @@ -131,20 +133,20 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "--------------------------------------------" << endl; cout << "domain is bound within " << endl; cout << "lower : " std::cout << "--------------------------------------------" << std::endl; std::cout << "domain is bound within " << std::endl; std::cout << "lower : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.lower) << endl; cout << "upper : " << std::endl; std::cout << "upper : " << array_ops::as_streamable( solver_variables.local_mesh.domain_bound.upper) << endl; cout << "Verlet list buffer " << std::endl; std::cout << "Verlet list buffer " << solver_variables.input.verlet_buffer_factor * solver_variables.input.neighbour_update_displacement << endl; << std::endl; } } Loading @@ -165,9 +167,12 @@ int main(int argc, char *argv[]) { if (!restart_file_name.has_value()) { if (mpi_rank == 0) { cout << "-------------------------------------------------" << endl; cout << "--------------- Attempting initial repair--------" << endl; cout << "-------------------------------------------------" << endl; std::cout << "-------------------------------------------------" << std::endl; std::cout << "--------------- Attempting initial repair--------" << std::endl; std::cout << "-------------------------------------------------" << std::endl; } // initial repair after triangulation meshing::repair_mesh(solver_variables.local_mesh); Loading Loading @@ -235,7 +240,7 @@ int main(int argc, char *argv[]) { } if (mpi_rank == 0) { cout << "Neighbourhood udpdate styles, " std::cout << "Neighbourhood udpdate styles, " << "Verlet : " << (solver_variables.input.neighbour_update_style == input::NeighbourUpdateStyle::VERLET) Loading @@ -245,7 +250,7 @@ int main(int argc, char *argv[]) { << " :: " << static_cast<std::size_t>( solver_variables.input.neighbour_update_style) << endl; << std::endl; } solver_variables.relaxation_fire_parameters.time_step = Loading Loading @@ -291,7 +296,7 @@ int main(int argc, char *argv[]) { SolverKernel::allocate_initial_neighbourhoods< meshing::NodalDataMultispecies<NOI>, DIM, NIDOF>(solver_variables); ofstream f_external; std::ofstream f_external; solver_variables.local_mesh.compute_nodal_centro_symmetry(); Loading Loading @@ -398,9 +403,9 @@ int main(int argc, char *argv[]) { w_all_global = qcmesh::mpi::all_reduce_sum(w_all_local); if (mpi_rank == 0) { cout << "beginning with external shear " << restart_data.external_strain << " and shear increment " << restart_data.external_strain_increment << endl; std::cout << "beginning with external shear " << restart_data.external_strain << " and shear increment " << restart_data.external_strain_increment << std::endl; } // get the left and right dislocations Loading Loading @@ -467,7 +472,7 @@ int main(int argc, char *argv[]) { array_ops::as_eigen(dislocation_r) /= mass_r; solver_variables.local_mesh.repatoms.get_fixed_region_force(external_force); string filename = "ExternalStrainForce"; std::string filename = "ExternalStrainForce"; #ifdef FINITE_TEMPERATURE filename += "_" + Loading @@ -484,7 +489,7 @@ int main(int argc, char *argv[]) { << array_ops::as_streamable(external_force) << " " << array_ops::distance(dislocation_l, dislocation_r) << " " << v_all_global << " " << k_all_global << " " << w_all_global << endl; << std::endl; f_external.close(); } Loading Loading @@ -646,7 +651,7 @@ int main(int argc, char *argv[]) { << array_ops::as_streamable(external_force) << " " << array_ops::distance(dislocation_l, dislocation_r) << " " << v_all_global << " " << k_all_global << " " << w_all_global << endl; << std::endl; f_external.close(); } Loading @@ -659,13 +664,14 @@ int main(int argc, char *argv[]) { const auto elapsed_time = clock.toc(); cout << "rank " << mpi_rank << " took " << elapsed_time << " with " std::cout << "rank " << mpi_rank << " took " << elapsed_time << " with " << solver_variables.local_mesh.sampling_atoms.nodal_locations.size() << " nodal sampling atoms " << solver_variables.local_mesh.sampling_atoms.central_locations.size() << " central sampling atoms " << solver_variables.local_mesh.nodes.size() << " nodes and " << solver_variables.local_mesh.cells.size() << " elements" << endl; << " elements" << std::endl; PetscFinalize(); // MPI_Finalize(); Loading
src/main/infinite_model_deformation.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -23,16 +23,13 @@ #include "solver/infinite_model_relaxation.hpp" #include <string_view> using namespace geometry; static constexpr std::size_t DIM = 3; static constexpr std::size_t NIDOF = 2; static constexpr std::size_t NOI = 1; constexpr static std::string_view HELP = "using petsc.\n\n"; int main(int argc, char *argv[]) { using namespace std::chrono; high_resolution_clock::time_point t1 = high_resolution_clock::now(); const auto t1 = std::chrono::high_resolution_clock::now(); solver::SolverVariables<DIM> solver_variables; Loading Loading @@ -92,8 +89,9 @@ int main(int argc, char *argv[]) { PetscFinalize(); high_resolution_clock::time_point t2 = high_resolution_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); const auto t2 = std::chrono::high_resolution_clock::now(); const auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1); std::cout << "duration: " << time_span.count() << std::endl; return 0; Loading