From 3df719be1abcfd72b63d4bb4103192815cffe5bc Mon Sep 17 00:00:00 2001 From: Tomov Date: Sat, 15 Sep 2018 21:56:21 -0700 Subject: [PATCH 01/16] Computation of total energy. Split the LagrangianHydroOperator::Mult() into separate functions for assembly, velocity solve, internal energy solve. --- laghos.cpp | 26 ++++++++++ laghos_solver.cpp | 123 +++++++++++++++++++++++++++++++++------------- laghos_solver.hpp | 16 ++++-- 3 files changed, 127 insertions(+), 38 deletions(-) diff --git a/laghos.cpp b/laghos.cpp index 53ea382f..18023aae 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -393,6 +393,9 @@ int main(int argc, char *argv[]) ParGridFunction rho_gf; if (visualization || visit) { oper.ComputeDensity(rho_gf); } + const double energy_init = oper.InternalEnergy(e_gf) + + oper.KineticEnergy(v_gf); + if (visualization) { // Make sure all MPI ranks have sent their 'v' solution before initiating @@ -564,6 +567,29 @@ int main(int argc, char *argv[]) } oper.PrintTimingData(mpi.Root(), steps); + const double energy_final = oper.InternalEnergy(e_gf) + + oper.KineticEnergy(v_gf); + if (mpi.Root()) + { + cout << endl; + cout << "Energy error: " << energy_init << " " << energy_final << " " + << energy_init - energy_final << endl; + } + + // Print the error. + if (problem == 0) + { + const double error_max = v_gf.ComputeMaxError(v_coeff), + error_l1 = v_gf.ComputeL1Error(v_coeff), + error_l2 = v_gf.ComputeL2Error(v_coeff); + if (mpi.Root()) + { + cout << "L_inf error: " << error_max << endl + << "L_1 error: " << error_l1 << endl + << "L_2 error: " << error_l2 << endl; + } + } + if (visualization) { vis_v.close(); diff --git a/laghos_solver.cpp b/laghos_solver.cpp index e0551ef5..d3029258 100644 --- a/laghos_solver.cpp +++ b/laghos_solver.cpp @@ -94,11 +94,12 @@ LagrangianHydroOperator::LagrangianHydroOperator(int size, source_type(source_type_), cfl(cfl_), use_viscosity(visc), p_assembly(pa), cg_rel_tol(cgt), cg_max_iter(cgiter), material_pcf(material_), - Mv(&h1_fes), Me_inv(l2dofs_cnt, l2dofs_cnt, nzones), + Mv(&h1_fes), Mv_spmat_copy(), + Me(l2dofs_cnt, l2dofs_cnt, nzones), Me_inv(l2dofs_cnt, l2dofs_cnt, nzones), integ_rule(IntRules.Get(h1_fes.GetMesh()->GetElementBaseGeometry(), 3*h1_fes.GetOrder(0) + l2_fes.GetOrder(0) - 1)), quad_data(dim, nzones, integ_rule.GetNPoints()), - quad_data_is_current(false), + quad_data_is_current(false), forcemat_is_assembled(false), Force(&l2_fes, &h1_fes), ForcePA(&quad_data, h1_fes, l2_fes), VMassPA(&quad_data, H1FESpace), VMassPA_prec(H1FESpace), locEMassPA(&quad_data, l2_fes), @@ -107,13 +108,12 @@ LagrangianHydroOperator::LagrangianHydroOperator(int size, GridFunctionCoefficient rho_coeff(&rho0); // Standard local assembly and inversion for energy mass matrices. - DenseMatrix Me(l2dofs_cnt); - DenseMatrixInverse inv(&Me); MassIntegrator mi(rho_coeff, &integ_rule); for (int i = 0; i < nzones; i++) { + DenseMatrixInverse inv(&Me(i)); mi.AssembleElementMatrix(*l2_fes.GetFE(i), - *l2_fes.GetElementTransformation(i), Me); + *l2_fes.GetElementTransformation(i), Me(i)); inv.Factor(); inv.GetInverseMatrix(Me_inv(i)); } @@ -122,6 +122,7 @@ LagrangianHydroOperator::LagrangianHydroOperator(int size, VectorMassIntegrator *vmi = new VectorMassIntegrator(rho_coeff, &integ_rule); Mv.AddDomainIntegrator(vmi); Mv.Assemble(); + Mv_spmat_copy = Mv.SpMat(); // Values of rho0DetJ0 and Jac0inv at all quadrature points. const int nqp = integ_rule.GetNPoints(); @@ -198,8 +199,6 @@ LagrangianHydroOperator::LagrangianHydroOperator(int size, void LagrangianHydroOperator::Mult(const Vector &S, Vector &dS_dt) const { - dS_dt = 0.0; - // Make sure that the mesh positions correspond to the ones in S. This is // needed only because some mfem time integrators don't update the solution // vector at every intermediate stage (hence they don't change the mesh). @@ -208,37 +207,37 @@ void LagrangianHydroOperator::Mult(const Vector &S, Vector &dS_dt) const x.MakeRef(&H1FESpace, *sptr, 0); H1FESpace.GetParMesh()->NewNodes(x, false); - UpdateQuadratureData(S); - // The monolithic BlockVector stores the unknown fields as follows: - // - Position - // - Velocity - // - Specific Internal Energy - - const int VsizeL2 = L2FESpace.GetVSize(); + // (Position, Velocity, Specific Internal Energy). + ParGridFunction v; const int VsizeH1 = H1FESpace.GetVSize(); - - ParGridFunction v, e; v.MakeRef(&H1FESpace, *sptr, VsizeH1); - e.MakeRef(&L2FESpace, *sptr, VsizeH1*2); - - ParGridFunction dx, dv, de; - dx.MakeRef(&H1FESpace, dS_dt, 0); - dv.MakeRef(&H1FESpace, dS_dt, VsizeH1); - de.MakeRef(&L2FESpace, dS_dt, VsizeH1*2); // Set dx_dt = v (explicit). + ParGridFunction dx; + dx.MakeRef(&H1FESpace, dS_dt, 0); dx = v; - if (!p_assembly) - { - Force = 0.0; - timer.sw_force.Start(); - Force.Assemble(); - timer.sw_force.Stop(); - } + SolveVelocity(S, dS_dt); + SolveEnergy(S, v, dS_dt); + + quad_data_is_current = false; +} + +void LagrangianHydroOperator::SolveVelocity(const Vector &S, + Vector &dS_dt) const +{ + UpdateQuadratureData(S); + AssembleForceMatrix(); + + const int VsizeL2 = L2FESpace.GetVSize(); + const int VsizeH1 = H1FESpace.GetVSize(); + + // The monolithic BlockVector stores the unknown fields as follows: + // (Position, Velocity, Specific Internal Energy). + ParGridFunction dv; + dv.MakeRef(&H1FESpace, dS_dt, VsizeH1); - // Solve for velocity. Vector one(VsizeL2), rhs(VsizeH1), B, X; one = 1.0; if (p_assembly) { @@ -285,6 +284,21 @@ void LagrangianHydroOperator::Mult(const Vector &S, Vector &dS_dt) const timer.H1cg_iter += cg.GetNumIterations(); Mv.RecoverFEMSolution(X, rhs, dv); } +} + +void LagrangianHydroOperator::SolveEnergy(const Vector &S, const Vector &v, + Vector &dS_dt) const +{ + UpdateQuadratureData(S); + AssembleForceMatrix(); + + const int VsizeL2 = L2FESpace.GetVSize(); + const int VsizeH1 = H1FESpace.GetVSize(); + + // The monolithic BlockVector stores the unknown fields as follows: + // (Position, Velocity, Specific Internal Energy). + ParGridFunction de; + de.MakeRef(&L2FESpace, dS_dt, VsizeH1*2); // Solve for energy, assemble the energy source if such exists. LinearForm *e_source = NULL; @@ -335,8 +349,6 @@ void LagrangianHydroOperator::Mult(const Vector &S, Vector &dS_dt) const } } delete e_source; - - quad_data_is_current = false; } double LagrangianHydroOperator::GetTimeStepEstimate(const Vector &S) const @@ -358,7 +370,7 @@ void LagrangianHydroOperator::ResetTimeStepEstimate() const quad_data.dt_est = numeric_limits::infinity(); } -void LagrangianHydroOperator::ComputeDensity(ParGridFunction &rho) +void LagrangianHydroOperator::ComputeDensity(ParGridFunction &rho) const { rho.SetSpace(&L2FESpace); @@ -382,7 +394,37 @@ void LagrangianHydroOperator::ComputeDensity(ParGridFunction &rho) } } -void LagrangianHydroOperator::PrintTimingData(bool IamRoot, int steps) +double LagrangianHydroOperator::InternalEnergy(const ParGridFunction &e) const +{ + Vector one(l2dofs_cnt), loc_e(l2dofs_cnt); + one = 1.0; + Array l2dofs; + + double loc_ie = 0.0; + for (int z = 0; z < nzones; z++) + { + L2FESpace.GetElementDofs(z, l2dofs); + e.GetSubVector(l2dofs, loc_e); + loc_ie += Me(z).InnerProduct(loc_e, one); + } + + double glob_ie; + MPI_Allreduce(&loc_ie, &glob_ie, 1, MPI_DOUBLE, MPI_SUM, + H1FESpace.GetParMesh()->GetComm()); + return glob_ie; +} + +double LagrangianHydroOperator::KineticEnergy(const ParGridFunction &v) const +{ + double loc_ke = 0.5 * Mv_spmat_copy.InnerProduct(v, v); + + double glob_ke; + MPI_Allreduce(&loc_ke, &glob_ke, 1, MPI_DOUBLE, MPI_SUM, + H1FESpace.GetParMesh()->GetComm()); + return glob_ke; +} + +void LagrangianHydroOperator::PrintTimingData(bool IamRoot, int steps) const { double my_rt[5], rt_max[5]; my_rt[0] = timer.sw_cgH1.RealTime(); @@ -619,11 +661,24 @@ void LagrangianHydroOperator::UpdateQuadratureData(const Vector &S) const delete [] cs_b; delete [] Jpr_b; quad_data_is_current = true; + forcemat_is_assembled = false; timer.sw_qdata.Stop(); timer.quad_tstep += nzones; } +void LagrangianHydroOperator::AssembleForceMatrix() const +{ + if (forcemat_is_assembled || p_assembly) { return; } + + Force = 0.0; + timer.sw_force.Start(); + Force.Assemble(); + timer.sw_force.Stop(); + + forcemat_is_assembled = true; +} + } // namespace hydrodynamics } // namespace mfem diff --git a/laghos_solver.hpp b/laghos_solver.hpp index a349c437..89ca7560 100644 --- a/laghos_solver.hpp +++ b/laghos_solver.hpp @@ -82,7 +82,8 @@ class LagrangianHydroOperator : public TimeDependentOperator // Velocity mass matrix and local inverses of the energy mass matrices. These // are constant in time, due to the pointwise mass conservation property. mutable ParBilinearForm Mv; - DenseTensor Me_inv; + SparseMatrix Mv_spmat_copy; + DenseTensor Me, Me_inv; // Integration rule for all assemblies. const IntegrationRule &integ_rule; @@ -90,7 +91,7 @@ class LagrangianHydroOperator : public TimeDependentOperator // Data associated with each quadrature point in the mesh. These values are // recomputed at each time step. mutable QuadratureData quad_data; - mutable bool quad_data_is_current; + mutable bool quad_data_is_current, forcemat_is_assembled; // Force matrix that combines the kinematic and thermodynamic spaces. It is // assembled in each time step and then it is used to compute the final @@ -123,6 +124,7 @@ class LagrangianHydroOperator : public TimeDependentOperator } void UpdateQuadratureData(const Vector &S) const; + void AssembleForceMatrix() const; public: LagrangianHydroOperator(int size, ParFiniteElementSpace &h1_fes, @@ -135,6 +137,9 @@ class LagrangianHydroOperator : public TimeDependentOperator // Solve for dx_dt, dv_dt and de_dt. virtual void Mult(const Vector &S, Vector &dS_dt) const; + void SolveVelocity(const Vector &S, Vector &dS_dt) const; + void SolveEnergy(const Vector &S, const Vector &v, Vector &dS_dt) const; + // Calls UpdateQuadratureData to compute the new quad_data.dt_estimate. double GetTimeStepEstimate(const Vector &S) const; void ResetTimeStepEstimate() const; @@ -142,9 +147,12 @@ class LagrangianHydroOperator : public TimeDependentOperator // The density values, which are stored only at some quadrature points, are // projected as a ParGridFunction. - void ComputeDensity(ParGridFunction &rho); + void ComputeDensity(ParGridFunction &rho) const; + + double InternalEnergy(const ParGridFunction &e) const; + double KineticEnergy(const ParGridFunction &v) const; - void PrintTimingData(bool IamRoot, int steps); + void PrintTimingData(bool IamRoot, int steps) const; ~LagrangianHydroOperator(); }; From 03762f5634b3438d53ec728698528a54e21f3de4 Mon Sep 17 00:00:00 2001 From: Tomov Date: Sat, 15 Sep 2018 22:17:04 -0700 Subject: [PATCH 02/16] Cleaned some #includes. --- laghos.cpp | 3 --- laghos_assembly.hpp | 3 --- laghos_solver.hpp | 4 ---- 3 files changed, 10 deletions(-) diff --git a/laghos.cpp b/laghos.cpp index 18023aae..bfe36cd1 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -50,10 +50,7 @@ // p = 2 --> 1D Sod shock tube. // p = 3 --> Triple point. - #include "laghos_solver.hpp" -#include -#include #include using namespace std; diff --git a/laghos_assembly.hpp b/laghos_assembly.hpp index f9eee0d0..bfb68953 100644 --- a/laghos_assembly.hpp +++ b/laghos_assembly.hpp @@ -22,9 +22,6 @@ #ifdef MFEM_USE_MPI -#include -#include - namespace mfem { diff --git a/laghos_solver.hpp b/laghos_solver.hpp index 89ca7560..88e1f431 100644 --- a/laghos_solver.hpp +++ b/laghos_solver.hpp @@ -22,10 +22,6 @@ #ifdef MFEM_USE_MPI -#include -#include -#include - namespace mfem { From 10c89db2e1d03e08d01e606997ff8a26fd81e8ae Mon Sep 17 00:00:00 2001 From: Tomov Date: Tue, 18 Sep 2018 17:45:51 -0700 Subject: [PATCH 03/16] Initial version of RK2Avg time integrator. --- laghos.cpp | 2 ++ laghos_assembly.hpp | 1 - laghos_solver.cpp | 5 +++ laghos_solver.hpp | 2 ++ laghos_timeinteg.cpp | 78 ++++++++++++++++++++++++++++++++++++++++++++ laghos_timeinteg.hpp | 47 ++++++++++++++++++++++++++ makefile | 4 +-- 7 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 laghos_timeinteg.cpp create mode 100644 laghos_timeinteg.hpp diff --git a/laghos.cpp b/laghos.cpp index bfe36cd1..ce64af03 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -51,6 +51,7 @@ // p = 3 --> Triple point. #include "laghos_solver.hpp" +#include "laghos_timeinteg.hpp" #include using namespace std; @@ -278,6 +279,7 @@ int main(int argc, char *argv[]) case 3: ode_solver = new RK3SSPSolver; break; case 4: ode_solver = new RK4Solver; break; case 6: ode_solver = new RK6Solver; break; + case 7: ode_solver = new RK2AvgSolver; break; default: if (myid == 0) { diff --git a/laghos_assembly.hpp b/laghos_assembly.hpp index bfb68953..78c40805 100644 --- a/laghos_assembly.hpp +++ b/laghos_assembly.hpp @@ -19,7 +19,6 @@ #include "mfem.hpp" - #ifdef MFEM_USE_MPI namespace mfem diff --git a/laghos_solver.cpp b/laghos_solver.cpp index d3029258..db21c834 100644 --- a/laghos_solver.cpp +++ b/laghos_solver.cpp @@ -289,6 +289,11 @@ void LagrangianHydroOperator::SolveVelocity(const Vector &S, void LagrangianHydroOperator::SolveEnergy(const Vector &S, const Vector &v, Vector &dS_dt) const { + Vector* sptr = (Vector*) &S; + ParGridFunction x; + x.MakeRef(&H1FESpace, *sptr, 0); + H1FESpace.GetParMesh()->NewNodes(x, false); + UpdateQuadratureData(S); AssembleForceMatrix(); diff --git a/laghos_solver.hpp b/laghos_solver.hpp index 88e1f431..e5724590 100644 --- a/laghos_solver.hpp +++ b/laghos_solver.hpp @@ -150,6 +150,8 @@ class LagrangianHydroOperator : public TimeDependentOperator void PrintTimingData(bool IamRoot, int steps) const; + int GetH1VSize() const { return H1FESpace.GetVSize(); } + ~LagrangianHydroOperator(); }; diff --git a/laghos_timeinteg.cpp b/laghos_timeinteg.cpp new file mode 100644 index 00000000..14249ae4 --- /dev/null +++ b/laghos_timeinteg.cpp @@ -0,0 +1,78 @@ +// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at +// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights +// reserved. See files LICENSE and NOTICE for details. +// +// This file is part of CEED, a collection of benchmarks, miniapps, software +// libraries and APIs for efficient high-order finite element and spectral +// element discretizations for exascale applications. For more information and +// source code availability see http://github.com/ceed. +// +// The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, +// a collaborative effort of two U.S. Department of Energy organizations (Office +// of Science and the National Nuclear Security Administration) responsible for +// the planning and preparation of a capable exascale ecosystem, including +// software, applications, hardware, advanced system engineering and early +// testbed platforms, in support of the nation's exascale computing imperative. + +#include "laghos_timeinteg.hpp" +#include "laghos_solver.hpp" + +using namespace std; + +namespace mfem +{ + +namespace hydrodynamics +{ + +void RK2AvgSolver::Init(TimeDependentOperator &_f) +{ + ODESolver::Init(_f); + + hydro_oper = dynamic_cast(f); + MFEM_VERIFY(hydro_oper, "RK2AvgSolver expects LagrangianHydroOperator."); +} + + +void RK2AvgSolver::Step(Vector &S, double &t, double &dt) +{ + const int Vsize = hydro_oper->GetH1VSize(); + Vector V(Vsize), Y(S.Size()), dS_dt(S.Size()); + + // The monolithic BlockVector stores the unknown fields as follows: + // (Position, Velocity, Specific Internal Energy). + Vector v_dS, v_S, x_dS; + v_S.SetDataAndSize(S.GetData() + Vsize, Vsize); + v_dS.SetDataAndSize(dS_dt.GetData() + Vsize, Vsize); + x_dS.SetDataAndSize(dS_dt.GetData(), Vsize); + + // 1. + Y = S; + hydro_oper->SolveVelocity(Y, dS_dt); + add(0.5 * dt, v_dS, v_S, V); + + std::cout << "Solved velocity" << std::endl; + + // 2. + hydro_oper->SolveEnergy(Y, V, dS_dt); + x_dS = V; + // Y = S + 0.5 * dt * dS_dt; + add(0.5 * dt, dS_dt, S, Y); + S = Y; // TODO better way. + hydro_oper->ResetQuadratureData(); + hydro_oper->SolveVelocity(Y, dS_dt); + // V = v_S + 0.5 * dt * v_dS; + add(0.5 * dt, v_dS, v_S, V); + + // 3. + hydro_oper->SolveEnergy(Y, V, dS_dt); + x_dS = V; + // Y = S + dt * dS_dt. + add(dt, dS_dt, S, Y); + S = Y; // TODO better way. + hydro_oper->ResetQuadratureData(); +} + +} // namespace hydrodynamics + +} // namespace mfem diff --git a/laghos_timeinteg.hpp b/laghos_timeinteg.hpp new file mode 100644 index 00000000..4cf13329 --- /dev/null +++ b/laghos_timeinteg.hpp @@ -0,0 +1,47 @@ +// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at +// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights +// reserved. See files LICENSE and NOTICE for details. +// +// This file is part of CEED, a collection of benchmarks, miniapps, software +// libraries and APIs for efficient high-order finite element and spectral +// element discretizations for exascale applications. For more information and +// source code availability see http://github.com/ceed. +// +// The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, +// a collaborative effort of two U.S. Department of Energy organizations (Office +// of Science and the National Nuclear Security Administration) responsible for +// the planning and preparation of a capable exascale ecosystem, including +// software, applications, hardware, advanced system engineering and early +// testbed platforms, in support of the nation's exascale computing imperative. + +#ifndef MFEM_LAGHOS_TIMEINTEG +#define MFEM_LAGHOS_TIMEINTEG + +#include "mfem.hpp" + +namespace mfem +{ + +namespace hydrodynamics +{ + +class LagrangianHydroOperator; + +class RK2AvgSolver : public ODESolver +{ +private: + LagrangianHydroOperator *hydro_oper; + +public: + RK2AvgSolver() : hydro_oper(NULL) { } + + virtual void Init(TimeDependentOperator &_f); + + virtual void Step(Vector &S, double &t, double &dt); +}; + +} // namespace hydrodynamics + +} // namespace mfem + +#endif // MFEM_LAGHOS_TIMEINTEG diff --git a/makefile b/makefile index 6595e964..fe40b03e 100644 --- a/makefile +++ b/makefile @@ -105,10 +105,10 @@ LIBS = $(strip $(LAGHOS_LIBS) $(LDFLAGS)) CCC = $(strip $(CXX) $(LAGHOS_FLAGS)) Ccc = $(strip $(CC) $(CFLAGS) $(GL_OPTS)) -SOURCE_FILES = laghos.cpp laghos_solver.cpp laghos_assembly.cpp +SOURCE_FILES = laghos.cpp laghos_solver.cpp laghos_assembly.cpp laghos_timeinteg.cpp OBJECT_FILES1 = $(SOURCE_FILES:.cpp=.o) OBJECT_FILES = $(OBJECT_FILES1:.c=.o) -HEADER_FILES = laghos_solver.hpp laghos_assembly.hpp +HEADER_FILES = laghos_solver.hpp laghos_assembly.hpp laghos_timeinteg.hpp # Targets From 1a3eedb3b2a8e4c8184ffa265b454f9213dc3aa1 Mon Sep 17 00:00:00 2001 From: Tomov Date: Wed, 19 Sep 2018 23:20:27 -0700 Subject: [PATCH 04/16] Made the mesh updates and related comments more explicit. --- laghos.cpp | 11 ++++++----- laghos_solver.cpp | 25 ++++++++++++------------- laghos_solver.hpp | 4 ++++ 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/laghos.cpp b/laghos.cpp index ce64af03..81578e6c 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -325,8 +325,7 @@ int main(int argc, char *argv[]) v_gf.MakeRef(&H1FESpace, S, true_offset[1]); e_gf.MakeRef(&L2FESpace, S, true_offset[2]); - // Initialize x_gf using the starting mesh coordinates. This also links the - // mesh positions to the values in x_gf. + // Initialize x_gf using the starting mesh coordinates. pmesh->SetNodalGridFunction(&x_gf); // Initialize the velocity. @@ -370,11 +369,11 @@ int main(int argc, char *argv[]) GridFunctionCoefficient *mat_gf_coeff = new GridFunctionCoefficient(&mat_gf); // Additional details, depending on the problem. - int source = 0; bool visc; + int source = 0; bool visc = true; switch (problem) { case 0: if (pmesh->Dimension() == 2) { source = 1; } - visc = false; break; + visc = false; break; case 1: visc = true; break; case 2: visc = true; break; case 3: visc = true; break; @@ -475,7 +474,9 @@ int main(int argc, char *argv[]) } else if (dt_est > 1.25 * dt) { dt *= 1.02; } - // Make sure that the mesh corresponds to the new solution state. + // Make sure that the mesh corresponds to the new solution state. This is + // needed, because some time integrators use different S-type vectors + // and the oper might have redirected the mesh positions to those. pmesh->NewNodes(x_gf, false); if (last_step || (ti % vis_steps) == 0) diff --git a/laghos_solver.cpp b/laghos_solver.cpp index db21c834..870c2c25 100644 --- a/laghos_solver.cpp +++ b/laghos_solver.cpp @@ -202,13 +202,11 @@ void LagrangianHydroOperator::Mult(const Vector &S, Vector &dS_dt) const // Make sure that the mesh positions correspond to the ones in S. This is // needed only because some mfem time integrators don't update the solution // vector at every intermediate stage (hence they don't change the mesh). - Vector* sptr = (Vector*) &S; - ParGridFunction x; - x.MakeRef(&H1FESpace, *sptr, 0); - H1FESpace.GetParMesh()->NewNodes(x, false); + UpdateMesh(S); // The monolithic BlockVector stores the unknown fields as follows: // (Position, Velocity, Specific Internal Energy). + Vector* sptr = (Vector*) &S; ParGridFunction v; const int VsizeH1 = H1FESpace.GetVSize(); v.MakeRef(&H1FESpace, *sptr, VsizeH1); @@ -237,6 +235,7 @@ void LagrangianHydroOperator::SolveVelocity(const Vector &S, // (Position, Velocity, Specific Internal Energy). ParGridFunction dv; dv.MakeRef(&H1FESpace, dS_dt, VsizeH1); + dv = 0.0; Vector one(VsizeL2), rhs(VsizeH1), B, X; one = 1.0; if (p_assembly) @@ -289,11 +288,6 @@ void LagrangianHydroOperator::SolveVelocity(const Vector &S, void LagrangianHydroOperator::SolveEnergy(const Vector &S, const Vector &v, Vector &dS_dt) const { - Vector* sptr = (Vector*) &S; - ParGridFunction x; - x.MakeRef(&H1FESpace, *sptr, 0); - H1FESpace.GetParMesh()->NewNodes(x, false); - UpdateQuadratureData(S); AssembleForceMatrix(); @@ -304,6 +298,7 @@ void LagrangianHydroOperator::SolveEnergy(const Vector &S, const Vector &v, // (Position, Velocity, Specific Internal Energy). ParGridFunction de; de.MakeRef(&L2FESpace, dS_dt, VsizeH1*2); + de = 0.0; // Solve for energy, assemble the energy source if such exists. LinearForm *e_source = NULL; @@ -356,12 +351,16 @@ void LagrangianHydroOperator::SolveEnergy(const Vector &S, const Vector &v, delete e_source; } -double LagrangianHydroOperator::GetTimeStepEstimate(const Vector &S) const +void LagrangianHydroOperator::UpdateMesh(const Vector &S) const { Vector* sptr = (Vector*) &S; - ParGridFunction x; - x.MakeRef(&H1FESpace, *sptr, 0); - H1FESpace.GetParMesh()->NewNodes(x, false); + x_gf.MakeRef(&H1FESpace, *sptr, 0); + H1FESpace.GetParMesh()->NewNodes(x_gf, false); +} + +double LagrangianHydroOperator::GetTimeStepEstimate(const Vector &S) const +{ + UpdateMesh(S); UpdateQuadratureData(S); double glob_dt_est; diff --git a/laghos_solver.hpp b/laghos_solver.hpp index e5724590..8b0f9019 100644 --- a/laghos_solver.hpp +++ b/laghos_solver.hpp @@ -66,6 +66,9 @@ class LagrangianHydroOperator : public TimeDependentOperator ParFiniteElementSpace &H1FESpace; ParFiniteElementSpace &L2FESpace; + // Reference to the current mesh configuration. + mutable ParGridFunction x_gf; + Array &ess_tdofs; const int dim, nzones, l2dofs_cnt, h1dofs_cnt, source_type; @@ -135,6 +138,7 @@ class LagrangianHydroOperator : public TimeDependentOperator void SolveVelocity(const Vector &S, Vector &dS_dt) const; void SolveEnergy(const Vector &S, const Vector &v, Vector &dS_dt) const; + void UpdateMesh(const Vector &S) const; // Calls UpdateQuadratureData to compute the new quad_data.dt_estimate. double GetTimeStepEstimate(const Vector &S) const; From d35978fe852ba5b8ac49050a589c0a79beaf21c8 Mon Sep 17 00:00:00 2001 From: Tomov Date: Thu, 20 Sep 2018 15:08:30 -0700 Subject: [PATCH 05/16] Working RK2Avg. --- laghos.cpp | 4 ++-- laghos_timeinteg.cpp | 49 +++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/laghos.cpp b/laghos.cpp index 81578e6c..11b14471 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -572,8 +572,8 @@ int main(int argc, char *argv[]) if (mpi.Root()) { cout << endl; - cout << "Energy error: " << energy_init << " " << energy_final << " " - << energy_init - energy_final << endl; + cout << "Energy diff: " << scientific << setprecision(2) + << fabs(energy_init - energy_final) << endl; } // Print the error. diff --git a/laghos_timeinteg.cpp b/laghos_timeinteg.cpp index 14249ae4..ec1b1466 100644 --- a/laghos_timeinteg.cpp +++ b/laghos_timeinteg.cpp @@ -37,39 +37,42 @@ void RK2AvgSolver::Init(TimeDependentOperator &_f) void RK2AvgSolver::Step(Vector &S, double &t, double &dt) { const int Vsize = hydro_oper->GetH1VSize(); - Vector V(Vsize), Y(S.Size()), dS_dt(S.Size()); + Vector V(Vsize), dS_dt(S.Size()), S0(S); // The monolithic BlockVector stores the unknown fields as follows: // (Position, Velocity, Specific Internal Energy). - Vector v_dS, v_S, x_dS; - v_S.SetDataAndSize(S.GetData() + Vsize, Vsize); - v_dS.SetDataAndSize(dS_dt.GetData() + Vsize, Vsize); - x_dS.SetDataAndSize(dS_dt.GetData(), Vsize); + Vector dv_dt, v0, dx_dt; + v0.SetDataAndSize(S0.GetData() + Vsize, Vsize); + dv_dt.SetDataAndSize(dS_dt.GetData() + Vsize, Vsize); + dx_dt.SetDataAndSize(dS_dt.GetData(), Vsize); - // 1. - Y = S; - hydro_oper->SolveVelocity(Y, dS_dt); - add(0.5 * dt, v_dS, v_S, V); + // Each step updates S (explicit) and then V (using S). + // The last step doesn't need to update V. - std::cout << "Solved velocity" << std::endl; + // 1. + // S is S0. + hydro_oper->UpdateMesh(S); + hydro_oper->SolveVelocity(S, dS_dt); + // V = v0 + 0.5 * dt * dv_dt; + add(v0, 0.5 * dt, dv_dt, V); // 2. - hydro_oper->SolveEnergy(Y, V, dS_dt); - x_dS = V; - // Y = S + 0.5 * dt * dS_dt; - add(0.5 * dt, dS_dt, S, Y); - S = Y; // TODO better way. + hydro_oper->SolveEnergy(S, V, dS_dt); + dx_dt = V; + // S = S0 + 0.5 * dt * dS_dt; + add(S0, 0.5 * dt, dS_dt, S); hydro_oper->ResetQuadratureData(); - hydro_oper->SolveVelocity(Y, dS_dt); - // V = v_S + 0.5 * dt * v_dS; - add(0.5 * dt, v_dS, v_S, V); + hydro_oper->UpdateMesh(S); + hydro_oper->SolveVelocity(S, dS_dt); + // V = v0 + 0.5 * dt * dv_dt; + add(v0, 0.5 * dt, dv_dt, V); // 3. - hydro_oper->SolveEnergy(Y, V, dS_dt); - x_dS = V; - // Y = S + dt * dS_dt. - add(dt, dS_dt, S, Y); - S = Y; // TODO better way. + hydro_oper->SolveEnergy(S, V, dS_dt); + dx_dt = V; + // S = S0 + dt * dS_dt. + add(S0, dt, dS_dt, S); + t += dt; hydro_oper->ResetQuadratureData(); } From 0ce24de036d16fba181277b394bc0569da72b8d1 Mon Sep 17 00:00:00 2001 From: Tomov Date: Thu, 20 Sep 2018 15:27:22 -0700 Subject: [PATCH 06/16] Improved a comment. --- laghos_timeinteg.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/laghos_timeinteg.cpp b/laghos_timeinteg.cpp index ec1b1466..6b2e2e17 100644 --- a/laghos_timeinteg.cpp +++ b/laghos_timeinteg.cpp @@ -46,19 +46,22 @@ void RK2AvgSolver::Step(Vector &S, double &t, double &dt) dv_dt.SetDataAndSize(dS_dt.GetData() + Vsize, Vsize); dx_dt.SetDataAndSize(dS_dt.GetData(), Vsize); - // Each step updates S (explicit) and then V (using S). - // The last step doesn't need to update V. + // In each sub-step: + // - Update S. + // - Compute dv_dt using S. + // - Update V using dv_dt. + // - Compute de_dt and dx_dt using S and V. - // 1. + // -- 1. // S is S0. hydro_oper->UpdateMesh(S); hydro_oper->SolveVelocity(S, dS_dt); // V = v0 + 0.5 * dt * dv_dt; add(v0, 0.5 * dt, dv_dt, V); - - // 2. hydro_oper->SolveEnergy(S, V, dS_dt); dx_dt = V; + + // -- 2. // S = S0 + 0.5 * dt * dS_dt; add(S0, 0.5 * dt, dS_dt, S); hydro_oper->ResetQuadratureData(); @@ -66,14 +69,15 @@ void RK2AvgSolver::Step(Vector &S, double &t, double &dt) hydro_oper->SolveVelocity(S, dS_dt); // V = v0 + 0.5 * dt * dv_dt; add(v0, 0.5 * dt, dv_dt, V); - - // 3. hydro_oper->SolveEnergy(S, V, dS_dt); dx_dt = V; + + // -- 3. // S = S0 + dt * dS_dt. add(S0, dt, dS_dt, S); - t += dt; hydro_oper->ResetQuadratureData(); + + t += dt; } } // namespace hydrodynamics From 08db6f873524fc73fdf93d54341180b09410646f Mon Sep 17 00:00:00 2001 From: Tzanio Date: Tue, 25 Sep 2018 19:10:46 -0700 Subject: [PATCH 07/16] Minor edits --- laghos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laghos.cpp b/laghos.cpp index 11b14471..e813f225 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -373,7 +373,7 @@ int main(int argc, char *argv[]) switch (problem) { case 0: if (pmesh->Dimension() == 2) { source = 1; } - visc = false; break; + visc = false; break; case 1: visc = true; break; case 2: visc = true; break; case 3: visc = true; break; @@ -476,7 +476,7 @@ int main(int argc, char *argv[]) // Make sure that the mesh corresponds to the new solution state. This is // needed, because some time integrators use different S-type vectors - // and the oper might have redirected the mesh positions to those. + // and the oper object might have redirected the mesh positions to those. pmesh->NewNodes(x_gf, false); if (last_step || (ti % vis_steps) == 0) From dfd9641398c265b50ce8a711a46e7df3ddc16fca Mon Sep 17 00:00:00 2001 From: Tomov Date: Wed, 26 Sep 2018 09:25:00 -0700 Subject: [PATCH 08/16] Created base class HydroODESolver. --- laghos_timeinteg.cpp | 7 +++---- laghos_timeinteg.hpp | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/laghos_timeinteg.cpp b/laghos_timeinteg.cpp index 6b2e2e17..04706e29 100644 --- a/laghos_timeinteg.cpp +++ b/laghos_timeinteg.cpp @@ -25,15 +25,14 @@ namespace mfem namespace hydrodynamics { -void RK2AvgSolver::Init(TimeDependentOperator &_f) +void HydroODESolver::Init(TimeDependentOperator &_f) { ODESolver::Init(_f); hydro_oper = dynamic_cast(f); - MFEM_VERIFY(hydro_oper, "RK2AvgSolver expects LagrangianHydroOperator."); + MFEM_VERIFY(hydro_oper, "HydroSolvers expect LagrangianHydroOperator."); } - void RK2AvgSolver::Step(Vector &S, double &t, double &dt) { const int Vsize = hydro_oper->GetH1VSize(); @@ -47,7 +46,7 @@ void RK2AvgSolver::Step(Vector &S, double &t, double &dt) dx_dt.SetDataAndSize(dS_dt.GetData(), Vsize); // In each sub-step: - // - Update S. + // - Update the global state Vector S. // - Compute dv_dt using S. // - Update V using dv_dt. // - Compute de_dt and dx_dt using S and V. diff --git a/laghos_timeinteg.hpp b/laghos_timeinteg.hpp index 4cf13329..bb9cbc7e 100644 --- a/laghos_timeinteg.hpp +++ b/laghos_timeinteg.hpp @@ -27,16 +27,25 @@ namespace hydrodynamics class LagrangianHydroOperator; -class RK2AvgSolver : public ODESolver +class HydroODESolver : public ODESolver { -private: +protected: LagrangianHydroOperator *hydro_oper; public: - RK2AvgSolver() : hydro_oper(NULL) { } + HydroODESolver() : hydro_oper(NULL) { } virtual void Init(TimeDependentOperator &_f); + virtual void Step(Vector &S, double &t, double &dt) + { MFEM_ABORT("Time stepping is undefined."); } +}; + +class RK2AvgSolver : public HydroODESolver +{ +public: + RK2AvgSolver() { } + virtual void Step(Vector &S, double &t, double &dt); }; From 38ef68f59761d504a4428737d5739ae34ca00eb8 Mon Sep 17 00:00:00 2001 From: Tomov Date: Fri, 28 Sep 2018 01:41:12 -0700 Subject: [PATCH 09/16] Added a test case and a sample run with the new time integrator. --- README.md | 2 ++ data/square_gresho.mesh | 61 ++++++++++++++++++++++++++++++++ laghos.cpp | 77 +++++++++++++++++++++++++++++++---------- 3 files changed, 122 insertions(+), 18 deletions(-) create mode 100644 data/square_gresho.mesh diff --git a/README.md b/README.md index bf994bc9..54b7d593 100644 --- a/README.md +++ b/README.md @@ -309,6 +309,7 @@ To make sure the results are correct, we tabulate reference final iterations 5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -no-vis -fa` 6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -no-vis -pa` 7. `mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 3.0 -no-vis -pa` +8. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -no-vis -pa` | `run` | `step` | `dt` | `e` | | ----- | ------ | ---- | --- | @@ -319,6 +320,7 @@ To make sure the results are correct, we tabulate reference final iterations | 5. | 414 | 0.000339 | 32.0120759615 | | 6. | 5310 | 0.000264 | 141.8348694390 | | 7. | 937 | 0.002285 | 144.0012514765 | +| 8. | 776 | 0.000045 | 409.8243172608 | An implementation is considered valid if the final energy values are all within diff --git a/data/square_gresho.mesh b/data/square_gresho.mesh new file mode 100644 index 00000000..f47f2723 --- /dev/null +++ b/data/square_gresho.mesh @@ -0,0 +1,61 @@ +MFEM mesh v1.0 + +# +# MFEM Geometry Types (see mesh/geom.hpp): +# +# POINT = 0 +# SEGMENT = 1 +# TRIANGLE = 2 +# SQUARE = 3 +# TETRAHEDRON = 4 +# CUBE = 5 +# + +dimension +2 + +elements +4 +1 3 0 1 4 3 +1 3 1 2 5 4 +1 3 3 4 7 6 +1 3 4 5 8 7 + +boundary +8 +2 1 0 1 +2 1 1 2 +2 1 7 6 +2 1 8 7 +1 1 3 0 +1 1 6 3 +1 1 2 5 +1 1 5 8 + +vertices +9 + +nodes +FiniteElementSpace +FiniteElementCollection: Linear +VDim: 2 +Ordering: 0 + +-0.5 +0 +0.5 +-0.5 +0 +0.5 +-0.5 +0 +0.5 +-0.5 +-0.5 +-0.5 +0 +0 +0 +0.5 +0.5 +0.5 diff --git a/laghos.cpp b/laghos.cpp index e813f225..062d1725 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -33,22 +33,15 @@ // methods for Lagrangian hydrodynamics", SIAM Journal on Scientific // Computing, (34) 2012, pp. B606–B641, https://doi.org/10.1137/120864672. // -// Sample runs: -// mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -// mpirun -np 8 laghos -p 0 -m data/square01_tri.mesh -rs 1 -tf 0.75 -// mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 2.0 -// mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -// mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 0 -tf 0.8 -ok 7 -ot 6 -// mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -// mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -// mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -// mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 3.0 -// // Test problems: // p = 0 --> Taylor-Green vortex (smooth problem). // p = 1 --> Sedov blast. // p = 2 --> 1D Sod shock tube. // p = 3 --> Triple point. +// p = 4 --> Gresho vortex (smooth problem). +// +// Sample runs: see README.md, section 'Verification of Results'. +// #include "laghos_solver.hpp" #include "laghos_timeinteg.hpp" @@ -377,6 +370,7 @@ int main(int argc, char *argv[]) case 1: visc = true; break; case 2: visc = true; break; case 3: visc = true; break; + case 4: visc = false; break; default: MFEM_ABORT("Wrong problem specification!"); } @@ -408,8 +402,12 @@ int main(int argc, char *argv[]) const int Ww = 350, Wh = 350; // window size int offx = Ww+10; // window offsets - VisualizeField(vis_rho, vishost, visport, rho_gf, - "Density", Wx, Wy, Ww, Wh); + if (problem != 0 && problem != 4) + { + VisualizeField(vis_rho, vishost, visport, rho_gf, + "Density", Wx, Wy, Ww, Wh); + } + Wx += offx; VisualizeField(vis_v, vishost, visport, v_gf, "Velocity", Wx, Wy, Ww, Wh); @@ -505,8 +503,12 @@ int main(int argc, char *argv[]) int Ww = 350, Wh = 350; // window size int offx = Ww+10; // window offsets - VisualizeField(vis_rho, vishost, visport, rho_gf, - "Density", Wx, Wy, Ww, Wh); + if (problem != 0 && problem != 4) + { + VisualizeField(vis_rho, vishost, visport, rho_gf, + "Density", Wx, Wy, Ww, Wh); + } + Wx += offx; VisualizeField(vis_v, vishost, visport, v_gf, "Velocity", Wx, Wy, Ww, Wh); @@ -577,7 +579,8 @@ int main(int argc, char *argv[]) } // Print the error. - if (problem == 0) + // For problems 0 and 4 the exact velocity is constant in time. + if (problem == 0 || problem == 4) { const double error_max = v_gf.ComputeMaxError(v_coeff), error_l1 = v_gf.ComputeL1Error(v_coeff), @@ -620,6 +623,7 @@ double rho0(const Vector &x) else { return 0.1; } case 3: if (x(0) > 1.0 && x(1) <= 1.5) { return 1.0; } else { return 0.125; } + case 4: return 1.0; default: MFEM_ABORT("Bad number given for problem id!"); return 0.0; } } @@ -631,12 +635,17 @@ double gamma(const Vector &x) case 0: return 5./3.; case 1: return 1.4; case 2: return 1.4; - case 3: if (x(0) > 1.0 && x(1) <= 1.5) { return 1.4; } - else { return 1.5; } + case 3: return (x(0) > 1.0 && x(1) <= 1.5) ? 1.4 : 1.5; + case 4: return 5.0 / 3.0; default: MFEM_ABORT("Bad number given for problem id!"); return 0.0; } } +double rad(double x, double y) +{ + return sqrt(x*x + y*y); +} + void v0(const Vector &x, Vector &v) { switch (problem) @@ -654,6 +663,22 @@ void v0(const Vector &x, Vector &v) case 1: v = 0.0; break; case 2: v = 0.0; break; case 3: v = 0.0; break; + case 4: + { + const double r = rad(x(0), x(1)); + if (r < 0.2) + { + v(0) = 5.0 * x(1); + v(1) = -5.0 * x(0); + } + else if (r < 0.4) + { + v(0) = 2.0 * x(1) / r - 5.0 * x(1); + v(1) = -2.0 * x(0) / r + 5.0 * x(0); + } + else { v = 0.0; } + break; + } default: MFEM_ABORT("Bad number given for problem id!"); } } @@ -682,6 +707,22 @@ double e0(const Vector &x) else { return 0.1 / rho0(x) / (gamma(x) - 1.0); } case 3: if (x(0) > 1.0) { return 0.1 / rho0(x) / (gamma(x) - 1.0); } else { return 1.0 / rho0(x) / (gamma(x) - 1.0); } + case 4: + { + const double r = rad(x(0), x(1)), rsq = x(0) * x(0) + x(1) * x(1); + const double gamma = 5.0 / 3.0; + if (r < 0.2) + { + return (5.0 + 25.0 / 2.0 * rsq) / (gamma - 1.0); + } + else if (r < 0.4) + { + const double t1 = 9.0 - 4.0 * log(0.2) + 25.0 / 2.0 * rsq; + const double t2 = 20.0 * r - 4.0 * log(r); + return (t1 - t2) / (gamma - 1.0); + } + else { return (3.0 + 4.0 * log(2.0)) / (gamma - 1.0); } + } default: MFEM_ABORT("Bad number given for problem id!"); return 0.0; } } From 1d2bfae1476f948970d5b587ae8518b35c67339a Mon Sep 17 00:00:00 2001 From: Tzanio Date: Fri, 28 Sep 2018 13:29:15 -0700 Subject: [PATCH 10/16] Visualization is off by default --- README.md | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 54b7d593..fa5e4126 100644 --- a/README.md +++ b/README.md @@ -255,12 +255,11 @@ partial assembly option (`-pa`). Some sample runs in 2D and 3D respectively are: ```sh -mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -no-vis -pa -mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -no-vis -pa +mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -pa +mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -vis -pa ``` -The latter produces the following density plot (when run with the `-vis` instead -of the `-no-vis` option) +The latter produces the following density plot (notice the `-vis` option) ![Sedov blast image](data/sedov.png) @@ -272,12 +271,11 @@ evaluation. Some sample runs in 2D and 3D respectively are: ```sh -mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.5 -no-vis -pa -mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -cfl 0.1 -tf 0.25 -no-vis -pa +mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.5 -pa +mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -cfl 0.1 -tf 0.25 -vis -pa ``` -The latter produces the following velocity magnitude plot (when run with the -`-vis` instead of the `-no-vis` option) +The latter produces the following velocity magnitude plot (notice the `-vis` option) ![Taylor-Green image](data/tg.png) @@ -288,12 +286,11 @@ thus examining the complex computational abilities of Laghos. Some sample runs in 2D and 3D respectively are: ```sh -mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 2.5 -cfl 0.025 -no-vis -pa -mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 2.5 -cfl 0.05 -no-vis -pa +mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 2.5 -cfl 0.025 -pa +mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 2.5 -cfl 0.05 -vis -pa ``` -The latter produces the following specific internal energy plot (when run with -the `-vis` instead of the `-no-vis` option) +The latter produces the following specific internal energy plot (notice the `-vis` option) ![Triple-point image](data/tp.png) @@ -302,14 +299,14 @@ the `-vis` instead of the `-no-vis` option) To make sure the results are correct, we tabulate reference final iterations (`step`), time steps (`dt`) and energies (`|e|`) for the nine runs listed above: -1. `mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -no-vis -pa` -2. `mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 0.75 -no-vis -pa` -3. `mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -no-vis -pa` -4. `mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -no-vis -pa` -5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -no-vis -fa` -6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -no-vis -pa` -7. `mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 3.0 -no-vis -pa` -8. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -no-vis -pa` +1. `mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -pa` +2. `mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 0.75 -pa` +3. `mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -pa` +4. `mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -pa` +5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -fa` +6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -pa` +7. `mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 3.0 -pa` +8. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -pa` | `run` | `step` | `dt` | `e` | | ----- | ------ | ---- | --- | @@ -350,7 +347,7 @@ A sample run on the [Vulcan](https://computation.llnl.gov/computers/vulcan) BG/Q machine at LLNL is: ``` -srun -n 393216 laghos -pa -p 1 -tf 0.6 -no-vis +srun -n 393216 laghos -pa -p 1 -tf 0.6 -pt 322 -m data/cube_12_hex.mesh --cg-tol 0 --cg-max-iter 50 --max-steps 2 -ok 3 -ot 2 -rs 5 -rp 3 From 46e202aa78aa5f10289da90c4117bb6b2172e558 Mon Sep 17 00:00:00 2001 From: Tzanio Date: Fri, 28 Sep 2018 13:53:09 -0700 Subject: [PATCH 11/16] Small edits in README. Mentioned amr and engines-kernels versions. --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fa5e4126..e3644b77 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ Clone and build the parallel version of MFEM: ``` The above uses the `laghos-v1.0` tag of MFEM, which is guaranteed to work with Laghos v1.0. Alternatively, one can use the latest versions of the MFEM and -Laghos `master` branches (provided there are no conflicts. See the [MFEM +Laghos `master` branches (provided there are no conflicts). See the [MFEM building page](http://mfem.org/building/) for additional details. (Optional) Clone and build GLVis: @@ -297,7 +297,7 @@ The latter produces the following specific internal energy plot (notice the `-vi ## Verification of Results To make sure the results are correct, we tabulate reference final iterations -(`step`), time steps (`dt`) and energies (`|e|`) for the nine runs listed above: +(`step`), time steps (`dt`) and energies (`|e|`) for the runs listed below: 1. `mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -pa` 2. `mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 0.75 -pa` @@ -347,10 +347,8 @@ A sample run on the [Vulcan](https://computation.llnl.gov/computers/vulcan) BG/Q machine at LLNL is: ``` -srun -n 393216 laghos -pa -p 1 -tf 0.6 - -pt 322 -m data/cube_12_hex.mesh - --cg-tol 0 --cg-max-iter 50 --max-steps 2 - -ok 3 -ot 2 -rs 5 -rp 3 +srun -n 393216 laghos -pa -p 1 -tf 0.6 -pt 322 -m data/cube_12_hex.mesh \ + --cg-tol 0 --cg-max-iter 50 --max-steps 2 -ok 3 -ot 2 -rs 5 -rp 3 ``` This is Q3-Q2 3D computation on 393,216 MPI ranks (24,576 nodes) that produces rates of approximately 168497, 74221, and 16696 megadofs, and a total FOM of @@ -372,6 +370,10 @@ the following versions of Laghos have been developed [OCCA](http://libocca.org/). - A [RAJA](https://software.llnl.gov/RAJA/)-based version in the [raja-dev](https://github.com/CEED/Laghos/tree/raja-dev) branch. +- An MFEM/engines-based version in the + [engines-kernels](https://github.com/CEED/Laghos/tree/engines-kernels) branches. +- Version with adaptive mesh refinement in the + [amr-dev](https://github.com/CEED/Laghos/tree/amr-dev) branch. ## Contact From e3b23986caa2b245111ebca357a521384e0c2227 Mon Sep 17 00:00:00 2001 From: Vladimir Tomov Date: Fri, 28 Sep 2018 17:43:32 -0700 Subject: [PATCH 12/16] Removed a test from the README, other minor changes. --- README.md | 6 ++---- laghos.cpp | 14 ++++++-------- laghos_solver.cpp | 6 ++++++ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 54b7d593..54aa681f 100644 --- a/README.md +++ b/README.md @@ -308,8 +308,7 @@ To make sure the results are correct, we tabulate reference final iterations 4. `mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -no-vis -pa` 5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -no-vis -fa` 6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -no-vis -pa` -7. `mpirun -np 8 laghos -p 3 -m data/box01_hex.mesh -rs 1 -tf 3.0 -no-vis -pa` -8. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -no-vis -pa` +7. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -no-vis -pa` | `run` | `step` | `dt` | `e` | | ----- | ------ | ---- | --- | @@ -319,8 +318,7 @@ To make sure the results are correct, we tabulate reference final iterations | 4. | 561 | 0.000360 | 134.0937837919 | | 5. | 414 | 0.000339 | 32.0120759615 | | 6. | 5310 | 0.000264 | 141.8348694390 | -| 7. | 937 | 0.002285 | 144.0012514765 | -| 8. | 776 | 0.000045 | 409.8243172608 | +| 7. | 776 | 0.000045 | 409.8243172608 | An implementation is considered valid if the final energy values are all within diff --git a/laghos.cpp b/laghos.cpp index 062d1725..146a1c25 100644 --- a/laghos.cpp +++ b/laghos.cpp @@ -619,10 +619,8 @@ double rho0(const Vector &x) { case 0: return 1.0; case 1: return 1.0; - case 2: if (x(0) < 0.5) { return 1.0; } - else { return 0.1; } - case 3: if (x(0) > 1.0 && x(1) <= 1.5) { return 1.0; } - else { return 0.125; } + case 2: return (x(0) < 0.5) ? 1.0 : 0.1; + case 3: return (x(0) > 1.0 && x(1) <= 1.5) ? 1.0 : 0.125; case 4: return 1.0; default: MFEM_ABORT("Bad number given for problem id!"); return 0.0; } @@ -703,10 +701,10 @@ double e0(const Vector &x) return val/denom; } case 1: return 0.0; // This case in initialized in main(). - case 2: if (x(0) < 0.5) { return 1.0 / rho0(x) / (gamma(x) - 1.0); } - else { return 0.1 / rho0(x) / (gamma(x) - 1.0); } - case 3: if (x(0) > 1.0) { return 0.1 / rho0(x) / (gamma(x) - 1.0); } - else { return 1.0 / rho0(x) / (gamma(x) - 1.0); } + case 2: return (x(0) < 0.5) ? 1.0 / rho0(x) / (gamma(x) - 1.0) + : 0.1 / rho0(x) / (gamma(x) - 1.0); + case 3: return (x(0) > 1.0) ? 0.1 / rho0(x) / (gamma(x) - 1.0) + : 1.0 / rho0(x) / (gamma(x) - 1.0); case 4: { const double r = rad(x(0), x(1)), rsq = x(0) * x(0) + x(1) * x(1); diff --git a/laghos_solver.cpp b/laghos_solver.cpp index 870c2c25..0b638582 100644 --- a/laghos_solver.cpp +++ b/laghos_solver.cpp @@ -623,6 +623,12 @@ void LagrangianHydroOperator::UpdateQuadratureData(const Vector &S) const visc_coeff = 2.0 * rho * h * h * fabs(mu); if (mu < 0.0) { visc_coeff += 0.5 * rho * h * sound_speed; } stress.Add(visc_coeff, sgrad_v); + + // Note that the (mu < 0.0) check introduces discontinuous + // behavior. This can lead to bigger differences in results when + // there are round-offs around the zero for the min eigenvalue. + // We've observed differences between Linux and Mac for some 3D + // calculations. } // Time step estimate at the point. Here the more relevant length From a21ba7773e61f0cf0e3d7db40838f960c1f9deed Mon Sep 17 00:00:00 2001 From: Vladimir Tomov Date: Fri, 28 Sep 2018 17:46:29 -0700 Subject: [PATCH 13/16] Fixed -no-vis. --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7718a720..f2e530af 100644 --- a/README.md +++ b/README.md @@ -299,13 +299,13 @@ The latter produces the following specific internal energy plot (notice the `-vi To make sure the results are correct, we tabulate reference final iterations (`step`), time steps (`dt`) and energies (`|e|`) for the runs listed below: -1. `mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -no-vis -pa` -2. `mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 0.75 -no-vis -pa` -3. `mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -no-vis -pa` -4. `mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -no-vis -pa` -5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -no-vis -fa` -6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -no-vis -pa` -7. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -no-vis -pa` +1. `mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.75 -pa` +2. `mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -tf 0.75 -pa` +3. `mpirun -np 8 laghos -p 1 -m data/square01_quad.mesh -rs 3 -tf 0.8 -pa` +4. `mpirun -np 8 laghos -p 1 -m data/cube01_hex.mesh -rs 2 -tf 0.6 -pa` +5. `mpirun -np 8 laghos -p 2 -m data/segment01.mesh -rs 5 -tf 0.2 -fa` +6. `mpirun -np 8 laghos -p 3 -m data/rectangle01_quad.mesh -rs 2 -tf 3.0 -pa` +7. `mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62831853 -s 7 -pa` | `run` | `step` | `dt` | `e` | | ----- | ------ | ---- | --- | From a2fa4371e0842c3da6e64ba976e104ef48484dfa Mon Sep 17 00:00:00 2001 From: Vladimir Tomov Date: Fri, 28 Sep 2018 18:00:55 -0700 Subject: [PATCH 14/16] Added Gresho image in the README. --- README.md | 9 ++++++--- data/gresho.png | Bin 0 -> 150989 bytes 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 data/gresho.png diff --git a/README.md b/README.md index f2e530af..8b0032c6 100644 --- a/README.md +++ b/README.md @@ -263,9 +263,9 @@ The latter produces the following density plot (notice the `-vis` option) ![Sedov blast image](data/sedov.png) -#### Taylor-Green vortex +#### Taylor-Green and Gresho vortices -Laghos includes also a smooth test problem, that exposes all the principal +Laghos includes also smooth test problems that expose all the principal computational kernels of the problem except for the artificial viscosity evaluation. @@ -273,12 +273,15 @@ Some sample runs in 2D and 3D respectively are: ```sh mpirun -np 8 laghos -p 0 -m data/square01_quad.mesh -rs 3 -tf 0.5 -pa mpirun -np 8 laghos -p 0 -m data/cube01_hex.mesh -rs 1 -cfl 0.1 -tf 0.25 -vis -pa +mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62 -s 7 -vis -pa ``` -The latter produces the following velocity magnitude plot (notice the `-vis` option) +The latter produce the following velocity magnitude plots (notice the `-vis` option) ![Taylor-Green image](data/tg.png) +![Gresho image](data/gresho.png) + #### Triple-point problem Well known three-material problem combines shock waves and vorticity, diff --git a/data/gresho.png b/data/gresho.png new file mode 100644 index 0000000000000000000000000000000000000000..ba72748b0988871fe76aa703f803a980253cb5ef GIT binary patch literal 150989 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≈Mx!ZDdXBEcV1uRY*@KBu_U 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 AegFUf literal 0 HcmV?d00001 From 1bd53e7d0d8ff6529050df19982802ce3e99532c Mon Sep 17 00:00:00 2001 From: Vladimir Tomov Date: Fri, 28 Sep 2018 18:02:44 -0700 Subject: [PATCH 15/16] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 8b0032c6..157eb1d2 100644 --- a/README.md +++ b/README.md @@ -279,7 +279,6 @@ mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62 - The latter produce the following velocity magnitude plots (notice the `-vis` option) ![Taylor-Green image](data/tg.png) - ![Gresho image](data/gresho.png) #### Triple-point problem From c35e01bdd8be16e082c5a1d31ec934b5e1ff5cc7 Mon Sep 17 00:00:00 2001 From: Tzanio Kolev Date: Fri, 28 Sep 2018 18:29:20 -0700 Subject: [PATCH 16/16] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 157eb1d2..094758ae 100644 --- a/README.md +++ b/README.md @@ -278,8 +278,10 @@ mpirun -np 8 laghos -p 4 -m data/square_gresho.mesh -rs 3 -ok 3 -ot 2 -tf 0.62 - The latter produce the following velocity magnitude plots (notice the `-vis` option) -![Taylor-Green image](data/tg.png) -![Gresho image](data/gresho.png) + +
+ +
#### Triple-point problem