From f0ef4f2d3c4ebdc1fd4d260bcc4beccba4355b12 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 14 Oct 2024 20:39:13 +0000 Subject: [PATCH 01/32] Add SUNDIALS dependency and build MFEM with SUNDIALS --- CMakeLists.txt | 2 + cmake/ExternalGitTags.cmake | 14 +++++++ cmake/ExternalMFEM.cmake | 31 +++++++++++++++ cmake/ExternalSUNDIALS.cmake | 73 ++++++++++++++++++++++++++++++++++++ extern/CMakeLists.txt | 6 +++ 5 files changed, 126 insertions(+) create mode 100644 cmake/ExternalSUNDIALS.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index cf0e6802c..1bef4b1c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,8 @@ set(PALACE_WITH_GSLIB ON CACHE BOOL "Build with GSLIB library for high-order fie set(PALACE_WITH_STRUMPACK_BUTTERFLYPACK OFF CACHE BOOL "Build with ButterflyPACK support for STRUMPACK solver") set(PALACE_WITH_STRUMPACK_ZFP OFF CACHE BOOL "Build with ZFP support for STRUMPACK solver") +set(PALACE_WITH_SUNDIALS ON CACHE BOOL "Build with SUNDIALS differential/algebraic equations solver") + set(ANALYZE_SOURCES_CLANG_TIDY OFF CACHE BOOL "Run static analysis checks using clang-tidy") set(ANALYZE_SOURCES_CPPCHECK OFF CACHE BOOL "Run static analysis checks using cppcheck") diff --git a/cmake/ExternalGitTags.cmake b/cmake/ExternalGitTags.cmake index f536c0de7..32d4a5b72 100644 --- a/cmake/ExternalGitTags.cmake +++ b/cmake/ExternalGitTags.cmake @@ -265,3 +265,17 @@ set(EXTERN_EIGEN_URL "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz" CACHE STRING "URL for external Eigen build" ) + +# SUNDIALS +set(EXTERN_SUNDIALS_URL + "https://github.com/LLNL/sundials.git" CACHE STRING + "URL for external SUNDIALS build" +) +set(EXTERN_SUNDIALS_GIT_BRANCH + "main" CACHE STRING + "Git branch for external SUNDIALS build" +) +set(EXTERN_SUNDIALS_GIT_TAG + "aaeab8d907c6b7dfca86041401fdc1448f35f826" CACHE STRING + "Git tag for external SUNDIALS build" +) \ No newline at end of file diff --git a/cmake/ExternalMFEM.cmake b/cmake/ExternalMFEM.cmake index 296d8770f..2593e5345 100644 --- a/cmake/ExternalMFEM.cmake +++ b/cmake/ExternalMFEM.cmake @@ -17,6 +17,9 @@ if(PALACE_BUILD_EXTERNAL_DEPS) if(PALACE_WITH_SUPERLU) list(APPEND MFEM_DEPENDENCIES superlu_dist) endif() + if(PALACE_WITH_SUNDIALS) + list(APPEND MFEM_DEPENDENCIES sundials) + endif() else() set(MFEM_DEPENDENCIES) endif() @@ -87,6 +90,7 @@ list(APPEND MFEM_OPTIONS "-DMFEM_USE_LIBUNWIND=${PALACE_MFEM_WITH_LIBUNWIND}" "-DMFEM_USE_METIS_5=YES" "-DMFEM_USE_CEED=NO" + "-DMFEM_USE_SUNDIALS=${PALACE_WITH_SUNDIALS}" ) if(PALACE_WITH_STRUMPACK OR PALACE_WITH_MUMPS) list(APPEND MFEM_OPTIONS @@ -297,6 +301,32 @@ Intel C++ compiler for MUMPS and STRUMPACK dependencies") "-DMUMPS_REQUIRED_LIBRARIES=${SCALAPACK_LIBRARIES}$${STRUMPACK_MUMPS_GFORTRAN_LIBRARY}" ) endif() + + # Configure SUNDIALS + if(PALACE_WITH_SUNDIALS) + set(SUNDIALS_REQUIRED_PACKAGES "LAPACK" "BLAS" "MPI") + if(PALACE_WITH_OPENMP) + list(APPEND SUNDIALS_REQUIRED_PACKAGES "OpenMP") + endif() + if(PALACE_WITH_CUDA) + list(APPEND SUNDIALS_REQUIRED_PACKAGES "CUDAToolkit") + list(APPEND SUNDIALS_REQUIRED_LIBRARIES ${SUPERLU_STRUMPACK_CUDA_LIBRARIES}) + endif() + string(REPLACE ";" "$" SUNDIALS_REQUIRED_PACKAGES "${SUNDIALS_REQUIRED_PACKAGES}") + string(REPLACE ";" "$" SUNDIALS_REQUIRED_LIBRARIES "${SUNDIALS_REQUIRED_LIBRARIES}") + list(APPEND MFEM_OPTIONS + "-DSUNDIALS_DIR=${CMAKE_INSTALL_PREFIX}" + "-DSUNDIALS_OPT=-I${CMAKE_INSTALL_PREFIX}/include" + "-DSUNDIALS_LIB=-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib64 -L${CMAKE_INSTALL_PREFIX}/lib64 -lsundials_arkode, -lsundials_cvode -lsundials_nvecserial -lsundials_kinsol -lsundials_nvecparhyp -lsundials_nvecparallel" + "-DSUNDIALS_REQUIRED_PACKAGES=${SUNDIALS_REQUIRED_PACKAGES}" + ) + if(NOT "${SUNDIALS_REQUIRED_LIBRARIES}" STREQUAL "") + list(APPEND MFEM_OPTIONS + "-DSUNDIALS_REQUIRED_LIBRARIES=${SUNDIALS_REQUIRED_LIBRARIES}" + ) + endif() + endif() + else() # Help find dependencies for the internal MFEM build # If we trust MFEM's Find.cmake module, we can just set _DIR and, if @@ -309,6 +339,7 @@ else() "SuperLUDist" "STRUMPACK" "MUMPS" + "SUNDIALS" ) foreach(DEP IN LISTS PALACE_MFEM_DEPS) set(${DEP}_DIR "" CACHE STRING "Path to ${DEP} build or installation directory") diff --git a/cmake/ExternalSUNDIALS.cmake b/cmake/ExternalSUNDIALS.cmake new file mode 100644 index 000000000..5ddcb224c --- /dev/null +++ b/cmake/ExternalSUNDIALS.cmake @@ -0,0 +1,73 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# +# Build SUNDIALS +# + +# Force build order +set(SUNDIALS_DEPENDENCIES ) + +set(SUNDIALS_OPTIONS ${PALACE_SUPERBUILD_DEFAULT_ARGS}) +list(APPEND SUNDIALS_OPTIONS + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}" + "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" + "-DEXAMPLES_ENABLE_C=OFF" + "-DEXAMPLES_ENABLE_CXX=OFF" + "-DEXAMPLES_ENABLE_CUDA=OFF" + "-DEXAMPLES_INSTALL=OFF" + "-DENABLE_MPI=ON" +) + +if(PALACE_WITH_OPENMP) + list(APPEND SUNDIALS_OPTIONS + "-DENABLE_OPENMP=ON" + ) +else() + list(APPEND SUNDIALS_OPTIONS + "-DENABLE_OPENMP=OFF" + ) +endif() + +# Configure LAPACK dependency +if(NOT "${BLAS_LAPACK_LIBRARIES}" STREQUAL "") + list(APPEND SUNDIALS_OPTIONS + "-DENABLE_LAPACK=ON" + "-DLAPACK_LIBRARIES=${BLAS_LAPACK_LIBRARIES}" + "-DLAPACK_WORKS:BOOL=TRUE" + ) +endif() + +if(PALACE_WITH_CUDA) + list(APPEND SUNDIALS_OPTIONS + "-DENABLE_CUDA=ON" + ) +endif() + +if(PALACE_WITH_MAGMA) + list(APPEND SUNDIALS_OPTIONS + "-DENABLE_MAGMA=ON" + "-DMAGMA_DIR=${MAGMA_DIR}" + ) +endif() + + +string(REPLACE ";" "; " SUNDIALS_OPTIONS_PRINT "${SUNDIALS_OPTIONS}") +message(STATUS "SUNDIALS_OPTIONS: ${SUNDIALS_OPTIONS_PRINT}") + + +include(ExternalProject) +ExternalProject_Add(sundials + DEPENDS ${SUNDIALS_DEPENDENCIES} + GIT_REPOSITORY ${EXTERN_SUNDIALS_URL} + GIT_TAG ${EXTERN_SUNDIALS_GIT_TAG} + SOURCE_DIR ${CMAKE_BINARY_DIR}/extern/sundials + BINARY_DIR ${CMAKE_BINARY_DIR}/extern/sundials-build + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + PREFIX ${CMAKE_BINARY_DIR}/extern/sundials-Cmake + UPDATE_COMMAND "" + CONFIGURE_COMMAND ${CMAKE_COMMAND} "${SUNDIALS_OPTIONS}" + TEST_COMMAND "" +) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index a791a62a0..451b3c459 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -72,3 +72,9 @@ include(ExternalFmt) # Add Eigen message(STATUS "===================== Configuring Eigen dependency =====================") include(ExternalEigen) + +# Add SUNDIALS +if(PALACE_WITH_SUNDIALS) + message(STATUS "===================== Configuring SUNDIALS dependency =====================") + include(ExternalSUNDIALS) +endif() From e2edda84a42c78aba4d1b21797921dcd3344c59e Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 14 Oct 2024 20:46:02 +0000 Subject: [PATCH 02/32] Add weak curl operator for first-order transient formulation --- palace/models/spaceoperator.cpp | 37 +++++++++++++++++++++++++++++++++ palace/models/spaceoperator.hpp | 4 ++++ 2 files changed, 41 insertions(+) diff --git a/palace/models/spaceoperator.cpp b/palace/models/spaceoperator.cpp index b15c5c70d..a5d7d9a0c 100644 --- a/palace/models/spaceoperator.cpp +++ b/palace/models/spaceoperator.cpp @@ -442,6 +442,39 @@ SpaceOperator::GetExtraSystemMatrix(double omega, Operator::DiagonalPolicy diag_ } } +template +std::unique_ptr +SpaceOperator::GetWeakCurlMatrix() +{ + PrintHeader(GetH1Space(), GetNDSpace(), GetRTSpace(), print_hdr); + MaterialPropertyCoefficient df(mat_op.MaxCeedAttribute()), f(mat_op.MaxCeedAttribute()); + AddStiffnessCoefficients(1.0, df, f); + int empty = (df.empty() && f.empty()); + Mpi::GlobalMin(1, &empty, GetComm()); + if (empty) + { + return {}; + } + constexpr bool skip_zeros = false, assemble_q_data = false; + BilinearForm a(GetRTSpace(), GetNDSpace()); + a.AddDomainIntegrator(df); + if (assemble_q_data) + { + a.AssembleQuadratureData(); + } + auto weakCurl = a.Assemble(skip_zeros); + if constexpr (std::is_same::value) + { + auto WeakCurl = std::make_unique(std::move(weakCurl),nullptr, GetRTSpace(), GetNDSpace(),false); + return WeakCurl; + } + else + { + auto WeakCurl = std::make_unique(std::move(weakCurl),GetRTSpace(), GetNDSpace(), false); + return WeakCurl; + } +} + namespace { @@ -1049,4 +1082,8 @@ SpaceOperator::GetPreconditionerMatrix(double, double, double, double) template std::unique_ptr SpaceOperator::GetPreconditionerMatrix(double, double, double, double); +template std::unique_ptr + SpaceOperator::GetWeakCurlMatrix(); +template std::unique_ptr + SpaceOperator::GetWeakCurlMatrix(); } // namespace palace diff --git a/palace/models/spaceoperator.hpp b/palace/models/spaceoperator.hpp index 0c9873ec6..f1cd7936f 100644 --- a/palace/models/spaceoperator.hpp +++ b/palace/models/spaceoperator.hpp @@ -177,6 +177,10 @@ class SpaceOperator std::unique_ptr GetPreconditionerMatrix(double a0, double a1, double a2, double a3); + // Construct the weak curl operator: curl 1/mu + template + std::unique_ptr GetWeakCurlMatrix(); + // Construct and return the discrete curl or gradient matrices. const Operator &GetGradMatrix() const { From 0c4d8e11e7620070e54a29361eb680ecbaa17d20 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 14 Oct 2024 20:47:21 +0000 Subject: [PATCH 03/32] Add new transient solver config options for adaptive time-stepping --- docs/src/config/solver.md | 26 ++++++++++++++++++++++++-- palace/utils/configfile.cpp | 16 +++++++++++++++- palace/utils/configfile.hpp | 14 +++++++++++++- scripts/schema/config/solver.json | 6 +++++- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/docs/src/config/solver.md b/docs/src/config/solver.md index 1d4889eab..bf670a59c 100644 --- a/docs/src/config/solver.md +++ b/docs/src/config/solver.md @@ -208,7 +208,11 @@ error tolerance. "ExcitationWidth": , "MaxTime": , "TimeStep": , - "SaveStep": + "SaveStep": , + "AdaptiveTimeStep": , + "Order": , + "RelTol": , + "AbsTol": } ``` @@ -218,7 +222,7 @@ with the second-order system of differential equations. The available options are: - `"GeneralizedAlpha"` : The second-order implicit generalized-``\alpha`` method with - ``\rho_\inf = 1.0``. This scheme is unconditionally stable. + ``\rho_{\inf} = 1.0``. This scheme is unconditionally stable. - `"NewmarkBeta"` : The second-order implicit Newmark-``\beta`` method with ``\beta = 1/4`` and ``\gamma = 1/2``. This scheme is unconditionally stable. - `"CentralDifference"` : The second-order explicit central difference method, obtained @@ -226,6 +230,12 @@ the second-order system of differential equations. The available options are: case, the maximum eigenvalue of the system operator is estimated at the start of the simulation and used to restrict the simulation time step to below the maximum stability time step. + - `"ImplicitRK"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order + ODE system for the electric and magnetic flux fields. + - `"ExplicitRK"` : SUNDIALS ARKode explicit Runge-Kutta scheme applied to the first-order + ODE system for the electric and magnetic flux fields. In this case, the maximum + eigenvalue of the system operator is estimated at the start of the simulation and used to + restrict the simulation time step to below the maximum stability time step. - `"Default"` : Use the default `"GeneralizedAlpha"` time integration scheme. `"Excitation" [None]` : Controls the time dependence of the source excitation. The @@ -260,6 +270,18 @@ disk for [visualization with ParaView](../guide/postprocessing.md#Visualization) saved in the `paraview/` directory under the directory specified by [`config["Problem"]["Output"]`](problem.md#config%5B%22Problem%22%5D). +`"AdaptiveTimeStep" [true]` : Enable adaptive time-stepping in the Runge-Kutta integrators. +Only relevant when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"`. + +`"Order" [3]` : Order of the Runge-Kutta integrators. Only relevant when `"Type"` is +`"ExplicitRK"` or `"ImplicitRK"`. + +`"RelTol" [1e-3]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant + when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"` and `"AdaptiveTimeStep"` is enabled. + +`"AbsTol" [1e-6]` : Absolute tolerance used in adaptive time-stepping schemes. Only relevant + when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"` and `"AdaptiveTimeStep"` is enabled. + ## `solver["Electrostatic"]` ```json diff --git a/palace/utils/configfile.cpp b/palace/utils/configfile.cpp index 05a634efb..e0a6c901e 100644 --- a/palace/utils/configfile.cpp +++ b/palace/utils/configfile.cpp @@ -1596,7 +1596,9 @@ PALACE_JSON_SERIALIZE_ENUM(TransientSolverData::Type, {{TransientSolverData::Type::DEFAULT, "Default"}, {TransientSolverData::Type::GEN_ALPHA, "GeneralizedAlpha"}, {TransientSolverData::Type::NEWMARK, "NewmarkBeta"}, - {TransientSolverData::Type::CENTRAL_DIFF, "CentralDifference"}}) + {TransientSolverData::Type::CENTRAL_DIFF, "CentralDifference"}, + {TransientSolverData::Type::EXPLICIT_RK, "ExplicitRK"}, + {TransientSolverData::Type::IMPLICIT_RK, "ImplicitRK"}}) PALACE_JSON_SERIALIZE_ENUM( TransientSolverData::ExcitationType, {{TransientSolverData::ExcitationType::SINUSOIDAL, "Sinusoidal"}, @@ -1627,6 +1629,10 @@ void TransientSolverData::SetUp(json &solver) max_t = transient->at("MaxTime"); // Required delta_t = transient->at("TimeStep"); // Required delta_post = transient->value("SaveStep", delta_post); + rk_order = transient->value("Order", rk_order); + adaptive_dt = transient->value("AdaptiveTimeStep", adaptive_dt); + rel_tol = transient->value("RelTol", rel_tol); + abs_tol = transient->value("AbsTol", abs_tol); // Cleanup transient->erase("Type"); @@ -1636,6 +1642,10 @@ void TransientSolverData::SetUp(json &solver) transient->erase("MaxTime"); transient->erase("TimeStep"); transient->erase("SaveStep"); + transient->erase("Order"); + transient->erase("AdaptiveTimeStep"); + transient->erase("RelTol"); + transient->erase("AbsTol"); MFEM_VERIFY(transient->empty(), "Found an unsupported configuration file keyword under \"Transient\"!\n" << transient->dump(2)); @@ -1650,6 +1660,10 @@ void TransientSolverData::SetUp(json &solver) std::cout << "MaxTime: " << max_t << '\n'; std::cout << "TimeStep: " << delta_t << '\n'; std::cout << "SaveStep: " << delta_post << '\n'; + std::cout << "Order: " << rk_order << '\n'; + std::cout << "AdaptiveTimeStep: " << adaptive_dt << '\n'; + std::cout << "RelTol: " << rel_tol << '\n'; + std::cout << "AbsTol: " << abs_tol << '\n'; } } diff --git a/palace/utils/configfile.hpp b/palace/utils/configfile.hpp index b1e26eeb4..63928458e 100644 --- a/palace/utils/configfile.hpp +++ b/palace/utils/configfile.hpp @@ -732,7 +732,9 @@ struct TransientSolverData DEFAULT, GEN_ALPHA, NEWMARK, - CENTRAL_DIFF + CENTRAL_DIFF, + EXPLICIT_RK, + IMPLICIT_RK }; Type type = Type::DEFAULT; @@ -761,6 +763,16 @@ struct TransientSolverData // Step increment for saving fields to disk. int delta_post = 0; + // RK scheme order for SUNDIALS ARKode integrators; + int rk_order = 3; + + // Adaptive time-stepping for SUNDIALS integrators + bool adaptive_dt = true; + + // Adaptive time-stepping tolerances + double rel_tol = 1e-3; + double abs_tol = 1e-6; + void SetUp(json &solver); }; diff --git a/scripts/schema/config/solver.json b/scripts/schema/config/solver.json index 379d420cd..55dba0753 100644 --- a/scripts/schema/config/solver.json +++ b/scripts/schema/config/solver.json @@ -67,7 +67,11 @@ "ExcitationWidth": { "type": "number" }, "MaxTime": { "type": "number" }, "TimeStep": { "type": "number" }, - "SaveStep": { "type": "integer" } + "SaveStep": { "type": "integer" }, + "AdaptiveTimeStep": {"type": "boolean"}, + "Order": {"type": "integer"}, + "RelTol": {"type": "number"}, + "AbsTol": {"type": "number"} } }, "Electrostatic": From d43715675c5e123984d26b9e66f6bf738841aece Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 14 Oct 2024 21:28:30 +0000 Subject: [PATCH 04/32] Add first-order transient formulation with SUNDIALS ARKode schemes --- palace/drivers/transientsolver.cpp | 40 ++- palace/models/timeoperator.cpp | 454 ++++++++++++++++++++++++++++- palace/models/timeoperator.hpp | 101 ++++++- 3 files changed, 571 insertions(+), 24 deletions(-) diff --git a/palace/drivers/transientsolver.cpp b/palace/drivers/transientsolver.cpp index 77093c467..b27cbd121 100644 --- a/palace/drivers/transientsolver.cpp +++ b/palace/drivers/transientsolver.cpp @@ -29,12 +29,35 @@ TransientSolver::Solve(const std::vector> &mesh) const std::function J_coef = GetTimeExcitation(false); std::function dJdt_coef = GetTimeExcitation(true); SpaceOperator space_op(iodata, mesh); - TimeOperator time_op(iodata, space_op, dJdt_coef); + + std::unique_ptr time_op; + switch (iodata.solver.transient.type) + { + case config::TransientSolverData::Type::GEN_ALPHA: + case config::TransientSolverData::Type::NEWMARK: + case config::TransientSolverData::Type::CENTRAL_DIFF: + case config::TransientSolverData::Type::DEFAULT: + { + time_op = std::make_unique(iodata, space_op, dJdt_coef); + } + break; + case config::TransientSolverData::Type::EXPLICIT_RK: + case config::TransientSolverData::Type::IMPLICIT_RK: + { +#if !defined(MFEM_USE_SUNDIALS) + MFEM_ABORT("Solver was not built with SUNDIALS support, please choose a " + "different transient solver type!"); +#endif + time_op = std::make_unique(iodata, space_op, J_coef); + } + break; + } + double delta_t = iodata.solver.transient.delta_t; - if (time_op.isExplicit()) + if (time_op->isExplicit()) { // Stability limited time step. - const double dt_max = time_op.GetMaxTimeStep(); + const double dt_max = time_op-> GetMaxTimeStep(); const double dts_max = iodata.DimensionalizeValue(IoData::ValueType::TIME, dt_max); Mpi::Print(" Maximum stable time step: {:.6e} ns\n", dts_max); delta_t = std::min(delta_t, 0.95 * dt_max); @@ -101,17 +124,17 @@ TransientSolver::Solve(const std::vector> &mesh) const { Mpi::Print("\n"); t += delta_t; - time_op.Init(); // Initial conditions + time_op-> Init(delta_t); // Initial conditions } else { - time_op.Step(t, delta_t); // Advances t internally + time_op-> Step(t, delta_t); // Advances t internally } // Postprocess for the time step. BlockTimer bt2(Timer::POSTPRO); - const Vector &E = time_op.GetE(); - const Vector &B = time_op.GetB(); + const Vector &E = time_op->GetE(); + const Vector &B = time_op->GetB(); post_op.SetEGridFunction(E); post_op.SetBGridFunction(B); post_op.UpdatePorts(space_op.GetLumpedPortOp()); @@ -138,7 +161,8 @@ TransientSolver::Solve(const std::vector> &mesh) const step++; } BlockTimer bt1(Timer::POSTPRO); - SaveMetadata(time_op.GetLinearSolver()); + time_op->PrintStats(); + SaveMetadata(time_op->GetLinearSolver()); return {indicator, space_op.GlobalTrueVSize()}; } diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index b5f90da2b..08f5e8ce2 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -18,6 +18,264 @@ namespace palace namespace { +class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator +{ +public: + // MPI communicator. + MPI_Comm comm; + + // System matrices and excitation RHS. + std::unique_ptr K, M, C; + Vector NegJ; + + // Time dependence of current pulse for excitation: -J(t) = -g(t) J. This function + // returns g(t). + std::function &J_coef; + + // Internal objects for solution of linear systems during time stepping. + double dt_; + std::unique_ptr kspM, kspA; + std::unique_ptr A, B; + mutable Vector RHS, rhsE; + int size_E, size_B; + double saved_gamma; + + // Weak curl operator. + std::unique_ptr weakCurl; + + // Discrete curl operator. + const Operator *Curl; + + // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and + // construct the linear solver. + std::function ConfigureLinearSolver; + +public: + TimeDependentEBSystemOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &J_coef, double t0, + mfem::TimeDependentOperator::Type type) + : mfem::TimeDependentOperator(space_op.GetNDSpace().GetTrueVSize()+space_op.GetRTSpace().GetTrueVSize(), + t0, type), + comm(space_op.GetComm()), J_coef(J_coef) + { + // Get dimensions of E and B vectors + size_E = space_op.GetNDSpace().GetTrueVSize(); + size_B = space_op.GetRTSpace().GetTrueVSize(); + + // Construct the system matrices defining the linear operator. PEC boundaries are + // handled simply by setting diagonal entries of the mass matrix for the corresponding + // dofs. Because the Dirichlet BC is always homogeneous, no special elimination is + // required on the RHS. Diagonal entries are set in M (so M is non-singular). + K = space_op.GetStiffnessMatrix(Operator::DIAG_ZERO); + C = space_op.GetDampingMatrix(Operator::DIAG_ZERO); + M = space_op.GetMassMatrix(Operator::DIAG_ONE); + + // Set up RHS vector for the current source term: -g(t) J, where g(t) handles the time + // dependence. + space_op.GetExcitationVector(NegJ); + RHS.SetSize(size_E+size_B); + RHS.UseDevice(true); + rhsE.SetSize(size_E); + rhsE.UseDevice(true); + + // Discrete curl and weak curl. + weakCurl = space_op.GetWeakCurlMatrix(); + Curl = &space_op.GetCurlMatrix(); + + // Set up linear solvers. + { + auto pcg = std::make_unique>(comm, 0); + pcg->SetInitialGuess(iodata.solver.linear.initial_guess); + pcg->SetRelTol(iodata.solver.linear.tol); + pcg->SetAbsTol(std::numeric_limits::epsilon()); + pcg->SetMaxIter(iodata.solver.linear.max_it); + auto jac = std::make_unique>(comm); + kspM = std::make_unique(std::move(pcg), std::move(jac)); + kspM->SetOperators(*M, *M); + } + { + // For explicit schemes, recommended to just use cheaper preconditioners. Otherwise, + // use AMS or a direct solver. The system matrix is formed as a sequence of matrix + // vector products, and is only assembled for preconditioning. + ConfigureLinearSolver = [this, &iodata, &space_op](double dt) + { + // Configure the system matrix and also the matrix (matrices) from which the + // preconditioner will be constructed. + A = space_op.GetSystemMatrix(dt*dt, dt, 1.0, K.get(), C.get(), M.get()); + B = space_op.GetPreconditionerMatrix(dt*dt, dt, 1.0, 0.0); + + // Configure the solver. + if (!kspA) + { + kspA = std::make_unique(iodata, space_op.GetNDSpaces(), + &space_op.GetH1Spaces()); + } + kspA->SetOperators(*A, *B); + }; + } + } + + // Form the RHS for the explicit formulation: + // rhsE = -C*E + 1/mu curl B - J(t) + // rhsB = -curl E + void FormRHS(const Vector &u, Vector &rhs) const + { + Vector uE(u.GetData() + 0, size_E); + Vector uB(u.GetData() + size_E, size_B); + Vector rhsE(rhs.GetData() + 0, size_E); + Vector rhsB(rhs.GetData() + size_E, size_B); + weakCurl->Mult(uB, rhsE); + if (C) + { + C->AddMult(uE, rhsE, -1.0); + } + linalg::AXPBYPCZ(1.0, rhsE, J_coef(t), NegJ, 0.0, rhsE); + Curl->Mult(uE, rhsB); + rhsB *= -1.0; + } + + // Form the RHS of the E-field for the implicit formulation + //(M + dt*C + dt^2*K)kE = -C*E - dt*K*E + 1/mu curl B - J(t) + // kB = -curl (E+dt*kE) + void FormRHSImplicit(const Vector &u, const double dt, Vector &rhs) const + { + Vector uE(u.GetData() + 0, size_E); + Vector uB(u.GetData() + size_E, size_B); + weakCurl->Mult(uB, rhs); + if (C) + { + C->AddMult(uE, rhs, -1.0); + } + K->AddMult(uE, rhs, -dt); + linalg::AXPBYPCZ(1.0, rhs, J_coef(t), NegJ, 0.0, rhs); + } + + // Solve M du = rhs + void Mult(const Vector &u, Vector &du) const override + { + FormRHS(u, RHS); + Vector duE(du.GetData() + 0, size_E); + Vector duB(du.GetData() + size_E, size_B); + Vector rhsE(RHS.GetData() + 0, size_E); + Vector rhsB(RHS.GetData() + size_E, size_B); + kspM->Mult(rhsE, duE); + duB = rhsB; + } + + void ImplicitSolve(double dt, const Vector &u, Vector &k) override + { + // Solve for k = [kE,kB] + // After substituting kB expression into kE equation, kE eqn is independent of kB + // and kE can be solved using the second-order curlcurl operator + // (M + dt*C + dt^2*K)kE = -C*E - dt*K*E + 1/mu curl B - J(t) + // kB = -curl (E+dt*kE) + if (!kspA || dt != dt_) + { + // Configure the linear solver, including the system matrix and also the matrix + // (matrices) from which the preconditioner will be constructed. + ConfigureLinearSolver(dt); + dt_ = dt; + k = 0.0; + } + Mpi::Print("\n"); + // Solve A kE = rhsE + FormRHSImplicit(u, dt, rhsE); + Vector kE(k.GetData() + 0, size_E); + Vector kB(k.GetData() + size_E, size_B); + Vector uE(u.GetData() + 0, size_E); + Vector uB(u.GetData() + size_E, size_B); + kspA->Mult(rhsE, kE); + + // kB = -curl (E+dt*kE) + linalg::AXPBYPCZ(1.0, uE, dt, kE, 0.0, rhsE); + Curl->Mult(rhsE, kB); + kB *= -1.0; + } + + void ExplicitMult(const Vector &u, Vector &v) const override + { + FormRHS(u, v); + } + + // Setup A = M - gamma J = M + gamma C + gamma^2 K + int SUNImplicitSetup(const Vector &y, const Vector &fy, + int jok, int *jcur, double gamma) + { + // Update Jacobian matrix + if (!kspA || gamma != saved_gamma) + { + ConfigureLinearSolver(gamma); + } + + // Indicate Jacobian was updated + *jcur = 1; + + // Save gamma for use in solve + saved_gamma = gamma; + + return 0; + } + + // Solve (Mass - dt Jacobian) x = b + // In the present ODE system: + // | M 0 | - dt | -C 1/mu curl | |xE| = |bE| + // | 0 I | | -curl 0 | |xB| |bB| + // (M + dt C)xE - dt/mu curl xB = bE + // -dt curl xE + xB = bB + // Substitute xB = bB - dt curl xE into xE equation + // -> (M + dt C + dt^2 K) xE = bE + dt/mu curl bB + int SUNImplicitSolve(const Vector &b, Vector &x, double tol) + { + Vector bE(b.GetData() + 0, size_E); + Vector bB(b.GetData() + size_E, size_B); + Vector xE(x.GetData() + 0, size_E); + Vector xB(x.GetData() + size_E, size_B); + + // Solve A xE = bE + dt/mu curl bB + weakCurl->Mult(bB, rhsE); + rhsE *= saved_gamma; + rhsE += bE; + kspA->Mult(rhsE, xE); + + // xB = bB - dt curl xE + Curl->Mult(xE, xB); + xB *= -saved_gamma; + xB += bB; + + return 0; + } + + int SUNMassSetup() + { + // Already set M in the constructor. + return 0; + } + + int SUNMassSolve(const Vector &b, Vector &x, double tol) + { + Vector bE(b.GetData() + 0, size_E); + Vector bB(b.GetData() + size_E, size_B); + Vector xE(x.GetData() + 0, size_E); + Vector xB(x.GetData() + size_E, size_B); + kspM->Mult(bE, xE); + xB = bB; + + return 0; + } + + int SUNMassMult(const Vector &x, Vector &v) + { + Vector vE(v.GetData() + 0, size_E); + Vector vB(v.GetData() + size_E, size_B); + Vector xE(x.GetData() + 0, size_E); + Vector xB(x.GetData() + size_E, size_B); + M->Mult(xE, vE); + vB = xB; + + return 0; + } +}; + class TimeDependentCurlCurlOperator : public mfem::SecondOrderTimeDependentOperator { public: @@ -143,8 +401,9 @@ class TimeDependentCurlCurlOperator : public mfem::SecondOrderTimeDependentOpera } // namespace -TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef) +SecondOrderTimeOperator::SecondOrderTimeOperator(const IoData &iodata, + SpaceOperator &space_op, + std::function &dJ_coef) { // Construct discrete curl matrix for B-field time integration. Curl = &space_op.GetCurlMatrix(); @@ -191,7 +450,7 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, std::make_unique(iodata, space_op, dJ_coef, 0.0, type); } -const KspSolver &TimeOperator::GetLinearSolver() const +const KspSolver &SecondOrderTimeOperator::GetLinearSolver() const { const auto &curlcurl = dynamic_cast(*op); MFEM_VERIFY(curlcurl.kspA, @@ -199,7 +458,7 @@ const KspSolver &TimeOperator::GetLinearSolver() const return *curlcurl.kspA; } -double TimeOperator::GetMaxTimeStep() const +double SecondOrderTimeOperator::GetMaxTimeStep() const { const auto &curlcurl = dynamic_cast(*op); MPI_Comm comm = curlcurl.comm; @@ -225,7 +484,7 @@ double TimeOperator::GetMaxTimeStep() const return 2.0 / std::sqrt(lam); } -void TimeOperator::Init() +void SecondOrderTimeOperator::Init(double &dt) { // Always use zero initial conditions. E = 0.0; @@ -234,7 +493,7 @@ void TimeOperator::Init() ode->Init(*op); } -void TimeOperator::Step(double &t, double &dt) +void SecondOrderTimeOperator::Step(double &t, double &dt) { // Single time step for E-field. En = E; @@ -245,4 +504,187 @@ void TimeOperator::Step(double &t, double &dt) Curl->AddMult(En, B, -0.5 * dt); } +FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &J_coef) +{ + // Get sizes. + int size_E = space_op.GetNDSpace().GetTrueVSize(); + int size_B = space_op.GetRTSpace().GetTrueVSize(); + + // Allocate space for solution vectors. + sol.SetSize(size_E+size_B); + E.SetSize(size_E); + B.SetSize(size_B); + sol.UseDevice(true); + E.UseDevice(true); + B.UseDevice(true); + + // Sol = [E, B] + E.MakeRef(sol, 0); + B.MakeRef(sol, size_E); + + // SUNDIALS adaptive time-stepping parameters. + adapt_dt = iodata.solver.transient.adaptive_dt; + rel_tol = iodata.solver.transient.rel_tol; + abs_tol = iodata.solver.transient.abs_tol; + rk_order = iodata.solver.transient.rk_order; + // Minimum RK order is 2. + rk_order = std::max(rk_order, 2); + + // Create ODE solver for 1st-order IVP. + mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::EXPLICIT; + switch (iodata.solver.transient.type) + { + case config::TransientSolverData::Type::IMPLICIT_RK: + case config::TransientSolverData::Type::DEFAULT: + { +#if defined(MFEM_USE_SUNDIALS) + // SUNDIALS ARKode solver. + std::unique_ptr arkode; + arkode = std::make_unique(space_op.GetComm(), + mfem::ARKStepSolver::IMPLICIT); + type = mfem::TimeDependentOperator::IMPLICIT; + // Operator for first-order ODE system. + op = std::make_unique(iodata, space_op, J_coef, 0.0, type); + // Initialize ARKode. + arkode->Init(*op); + // IRK settings + // Use implicit setup/solve defined in SUNImplicit* + arkode->UseMFEMLinearSolver(); + // Use mass matrix operations defined in SUNMass* + arkode->UseMFEMMassLinearSolver(0); + // Implicit solve is linear and J is not time-dependent. + ARKStepSetLinear(arkode->GetMem(), 0); + // Maximum IRK order is 5. + rk_order = std::min(rk_order, 5); + // Relative and absolute tolerances. + arkode->SetSStolerances(rel_tol, abs_tol); + // Set the order of the RK scheme. + ARKStepSetOrder(arkode->GetMem(), rk_order); + // Set the ODE solver to ARKode. + ode = std::move(arkode); +#endif + } + break; + case config::TransientSolverData::Type::EXPLICIT_RK: + { +#if defined(MFEM_USE_SUNDIALS) + // SUNDIALS ARKode solver. + std::unique_ptr arkode; + arkode = std::make_unique(space_op.GetComm(), + mfem::ARKStepSolver::EXPLICIT); + type = mfem::TimeDependentOperator::EXPLICIT; + // Operator for first-order ODE system. + op = std::make_unique(iodata, space_op, J_coef, 0.0, type); + // Initialize ARKode. + arkode->Init(*op); + // Maximum ERK order is 8. + rk_order = std::min(rk_order, 8); + // Relative and absolute tolerances. + arkode->SetSStolerances(rel_tol, abs_tol); + // Set the order of the RK scheme. + ARKStepSetOrder(arkode->GetMem(), rk_order); + // Set the ODE solver to ARKode. + ode = std::move(arkode); +#endif + } + break; + } +} + +const KspSolver &FirstOrderTimeOperator::GetLinearSolver() const +{ + const auto &ebsystem = dynamic_cast(*op); + if (isExplicit()) + { + MFEM_VERIFY(ebsystem.kspM, + "No linear solver for time-dependent operator has been constructed!\n"); + return *ebsystem.kspM; + } + else + { + MFEM_VERIFY(ebsystem.kspA, + "No linear solver for time-dependent operator has been constructed!\n"); + return *ebsystem.kspA; + } +} + +double FirstOrderTimeOperator::GetMaxTimeStep() const +{ + const auto &ebsystem = dynamic_cast(*op); + MPI_Comm comm = ebsystem.comm; + const Operator &M = *ebsystem.M; + const Operator &K = *ebsystem.K; + + // Solver for M⁻¹. + constexpr double lin_tol = 1.0e-9; + constexpr int max_lin_it = 10000; + CgSolver pcg(comm, 0); + pcg.SetRelTol(lin_tol); + pcg.SetMaxIter(max_lin_it); + pcg.SetOperator(M); + JacobiSmoother jac(comm); + jac.SetOperator(M); + pcg.SetPreconditioner(jac); + + // Power iteration to estimate largest eigenvalue of undamped system matrix M⁻¹ K (can use + // Hermitian eigenvalue solver as M, K are SPD). + ProductOperator op(pcg, K); + double lam = linalg::SpectralNorm(comm, op, true); + MFEM_VERIFY(lam > 0.0, "Error during power iteration, λ = " << lam << "!"); + return 2.0 / std::sqrt(lam); +} + +void FirstOrderTimeOperator::Init(double &dt) +{ + // Always use zero initial conditions. + sol = 0.0; + ode->Init(*op); +#if defined(MFEM_USE_SUNDIALS) + if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + { + // Setting a max internal time step can sometimes be beneficial. + // We could add this as an optional user input, but what should the default be? + //arkode->SetMaxStep(dt); + if(!adapt_dt) + { + // Disable adaptive time stepping. + arkode->SetFixedStep(dt); + } + } +#endif +} + +void FirstOrderTimeOperator::Step(double &t, double &dt) +{ + double dt_input = dt; + ode->Step(sol, t, dt); + // Ensure user-specified dt does not change. + dt = dt_input; +} + +void FirstOrderTimeOperator::PrintStats() +{ +#if defined(MFEM_USE_SUNDIALS) + if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + { + long int expsteps, accsteps, step_attempts, nfe_evals, nfi_evals, nlinsetups, netfails; + ARKStepGetTimestepperStats(arkode->GetMem(), &expsteps, &accsteps, + &step_attempts, &nfe_evals, &nfi_evals, + &nlinsetups, &netfails); + long int nniters; + ARKStepGetNumNonlinSolvIters(arkode->GetMem(), &nniters); + + Mpi::Print("\nARKode time-stepper statistics\n"); + Mpi::Print(" Stability-limited steps: {:d}\n", expsteps); + Mpi::Print(" Accuracy-limited steps: {:d}\n", accsteps); + Mpi::Print(" Calls to explicit RHS function: {:d}\n", nfe_evals); + Mpi::Print(" Calls to implicit RHS function: {:d}\n", nfi_evals); + Mpi::Print(" Calls to linear solver setup function: {:d}\n", nlinsetups); + Mpi::Print(" Calls to linear solver solve function: {:d}\n", nniters); + Mpi::Print(" Number of error test failures: {:d}\n", netfails); + } +#endif +} + } // namespace palace diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index 27b515d2e..03144aa38 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -18,13 +18,48 @@ class IoData; class SpaceOperator; // -// A class handling temporal discretization of the governing equations. +// Abstract class handling temporal discretization of the governing equations. // -class TimeOperator +class TimeOperator +{ + protected: + Vector E, B; + public: + TimeOperator() {}; + ~TimeOperator() {}; + + // Access solution vectors for E- and B-fields. + virtual const Vector &GetE() const { return E; } + virtual const Vector &GetB() const { return B; } + + // Return the linear solver associated with the implicit or explicit time integrator. + virtual const KspSolver &GetLinearSolver() const = 0; + + // Return if the time integration scheme explicit or implicit. + virtual bool isExplicit() const = 0; + + // Estimate the maximum stable time step based on the maximum eigenvalue of the + // undamped system matrix M⁻¹ K. + virtual double GetMaxTimeStep() const = 0; + + // Initialize time integrators and set 0 initial conditions. + virtual void Init(double &dt) = 0; + + // Perform time step from t -> t + dt. + virtual void Step(double &t, double &dt) = 0; + + // Print ODE integrator statistics. + virtual void PrintStats() {}; +}; + +// +// A class handling the second order ODE form of the governing equations. +// +class SecondOrderTimeOperator : public TimeOperator { private: - // Solution vector storage. - Vector E, dE, En, B; + // Additional vector storage. + Vector dE, En; // Time integrator for the curl-curl E-field formulation. std::unique_ptr ode; @@ -36,13 +71,11 @@ class TimeOperator const Operator *Curl; public: - TimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef); + SecondOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &dJ_coef); - // Access solution vectors for E- and B-fields. - const Vector &GetE() const { return E; } + // Access E-field time derivative const Vector &GetEdot() const { return dE; } - const Vector &GetB() const { return B; } // Return the linear solver associated with the implicit or explicit time integrator. const KspSolver &GetLinearSolver() const; @@ -55,10 +88,58 @@ class TimeOperator double GetMaxTimeStep() const; // Initialize time integrators and set 0 initial conditions. - void Init(); + void Init(double &dt); // Perform time step from t -> t + dt. void Step(double &t, double &dt); + +}; + +// +// A class handling the first order ODE system form of the governing equations. +// +class FirstOrderTimeOperator : public TimeOperator +{ +private: + // Solution vector storage. + Vector sol; + + // Time integrator for the first order E-B ODE system. + std::unique_ptr ode; + + // Time-dependent operator for the E-B system. + std::unique_ptr op; + + // Adaptive time-stepping parameters. + int rk_order; + bool adapt_dt; + double rel_tol, abs_tol; + + // Discrete curl for B-field time integration (not owned). + const Operator *Curl; + +public: + FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &J_coef); + + // Return the linear solver associated with the implicit or explicit time integrator. + const KspSolver &GetLinearSolver() const; + + // Return if the time integration scheme explicit or implicit. + bool isExplicit() const { return op->isExplicit(); } + + // Estimate the maximum stable time step based on the maximum eigenvalue of the + // undamped system matrix M⁻¹ K. + double GetMaxTimeStep() const; + + // Initialize time integrators and set 0 initial conditions. + void Init(double &dt); + + // Perform time step from t -> t + dt. + void Step(double &t, double &dt); + + // Print ODE integrator statistics. + void PrintStats(); }; } // namespace palace From 0c10b676b09cd77a1473610402aa944bc5fd3d19 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 21 Oct 2024 21:43:04 +0000 Subject: [PATCH 05/32] Change first order ODE system formulation, add CVODE integrator, remove explicit RK integrator --- docs/src/config/solver.md | 24 +- palace/drivers/transientsolver.cpp | 6 +- palace/models/timeoperator.cpp | 441 +++++++++++++++++------------ palace/models/timeoperator.hpp | 12 +- palace/utils/configfile.cpp | 8 +- palace/utils/configfile.hpp | 15 +- scripts/schema/config/solver.json | 6 +- 7 files changed, 292 insertions(+), 220 deletions(-) diff --git a/docs/src/config/solver.md b/docs/src/config/solver.md index bf670a59c..c10f079f4 100644 --- a/docs/src/config/solver.md +++ b/docs/src/config/solver.md @@ -230,12 +230,10 @@ the second-order system of differential equations. The available options are: case, the maximum eigenvalue of the system operator is estimated at the start of the simulation and used to restrict the simulation time step to below the maximum stability time step. - - `"ImplicitRK"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order - ODE system for the electric and magnetic flux fields. - - `"ExplicitRK"` : SUNDIALS ARKode explicit Runge-Kutta scheme applied to the first-order - ODE system for the electric and magnetic flux fields. In this case, the maximum - eigenvalue of the system operator is estimated at the start of the simulation and used to - restrict the simulation time step to below the maximum stability time step. + - `"ARKODE"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order + ODE system for the electric field. + - `"CVODE"` : SUNDIALS CVODE implicit multistep method scheme applied to the first-order + ODE system for the electric field. - `"Default"` : Use the default `"GeneralizedAlpha"` time integration scheme. `"Excitation" [None]` : Controls the time dependence of the source excitation. The @@ -271,16 +269,16 @@ saved in the `paraview/` directory under the directory specified by [`config["Problem"]["Output"]`](problem.md#config%5B%22Problem%22%5D). `"AdaptiveTimeStep" [true]` : Enable adaptive time-stepping in the Runge-Kutta integrators. -Only relevant when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"`. +Only relevant when `"Type"` is `"ARKODE"`. `"CVODE"` always uses adaptive time-stepping. -`"Order" [3]` : Order of the Runge-Kutta integrators. Only relevant when `"Type"` is -`"ExplicitRK"` or `"ImplicitRK"`. +`"Order" [2]` : Order of the Runge-Kutta integrators or maximum order of the multistep method. +Only relevant when `"Type"` is `"ARKODE"` or `"CVODE"`. -`"RelTol" [1e-3]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"` and `"AdaptiveTimeStep"` is enabled. +`"RelTol" [1e-4]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant + when `"Type"` is `"CVODE"` or `"ARKODE"` (when `"AdaptiveTimeStep"` is enabled). -`"AbsTol" [1e-6]` : Absolute tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"ExplicitRK"` or `"ImplicitRK"` and `"AdaptiveTimeStep"` is enabled. +`"AbsTol" [1e-9]` : Absolute tolerance used in adaptive time-stepping schemes. Only relevant + when `"Type"` is `"CVODE"` or `"ARKODE"` (when `"AdaptiveTimeStep"` is enabled). ## `solver["Electrostatic"]` diff --git a/palace/drivers/transientsolver.cpp b/palace/drivers/transientsolver.cpp index b27cbd121..17bc4da59 100644 --- a/palace/drivers/transientsolver.cpp +++ b/palace/drivers/transientsolver.cpp @@ -41,14 +41,14 @@ TransientSolver::Solve(const std::vector> &mesh) const time_op = std::make_unique(iodata, space_op, dJdt_coef); } break; - case config::TransientSolverData::Type::EXPLICIT_RK: - case config::TransientSolverData::Type::IMPLICIT_RK: + case config::TransientSolverData::Type::ARKODE: + case config::TransientSolverData::Type::CVODE: { #if !defined(MFEM_USE_SUNDIALS) MFEM_ABORT("Solver was not built with SUNDIALS support, please choose a " "different transient solver type!"); #endif - time_op = std::make_unique(iodata, space_op, J_coef); + time_op = std::make_unique(iodata, space_op, dJdt_coef); } break; } diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 08f5e8ce2..a82c4e028 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -18,7 +18,7 @@ namespace palace namespace { -class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator +class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator { public: // MPI communicator. @@ -28,39 +28,36 @@ class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator std::unique_ptr K, M, C; Vector NegJ; - // Time dependence of current pulse for excitation: -J(t) = -g(t) J. This function + // Time dependence of current pulse for excitation: -J'(t) = -g'(t) J. This function // returns g(t). - std::function &J_coef; + std::function &dJ_coef; // Internal objects for solution of linear systems during time stepping. - double dt_; + double dt_, saved_gamma; std::unique_ptr kspM, kspA; std::unique_ptr A, B; - mutable Vector RHS, rhsE; - int size_E, size_B; - double saved_gamma; - - // Weak curl operator. - std::unique_ptr weakCurl; + mutable Vector RHS; + int size_E; - // Discrete curl operator. - const Operator *Curl; + // ARKODE uses the ODE formulation M y' = f(y,t) (implicit RHS) + // CVODE uses the ODE formulation y' = M^-1 f(y,t) (explicit RHS) + bool explicit_RHS; // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. std::function ConfigureLinearSolver; public: - TimeDependentEBSystemOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &J_coef, double t0, - mfem::TimeDependentOperator::Type type) - : mfem::TimeDependentOperator(space_op.GetNDSpace().GetTrueVSize()+space_op.GetRTSpace().GetTrueVSize(), + TimeDependentFirstOrderOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &dJ_coef, double t0, + mfem::TimeDependentOperator::Type type, + bool explicit_RHS) + : mfem::TimeDependentOperator(2*space_op.GetNDSpace().GetTrueVSize(), t0, type), - comm(space_op.GetComm()), J_coef(J_coef) + comm(space_op.GetComm()), dJ_coef(dJ_coef), explicit_RHS(explicit_RHS) { - // Get dimensions of E and B vectors + // Get dimensions of E and Edot vectors. size_E = space_op.GetNDSpace().GetTrueVSize(); - size_B = space_op.GetRTSpace().GetTrueVSize(); // Construct the system matrices defining the linear operator. PEC boundaries are // handled simply by setting diagonal entries of the mass matrix for the corresponding @@ -73,19 +70,14 @@ class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator // Set up RHS vector for the current source term: -g(t) J, where g(t) handles the time // dependence. space_op.GetExcitationVector(NegJ); - RHS.SetSize(size_E+size_B); + RHS.SetSize(2*size_E); RHS.UseDevice(true); - rhsE.SetSize(size_E); - rhsE.UseDevice(true); - // Discrete curl and weak curl. - weakCurl = space_op.GetWeakCurlMatrix(); - Curl = &space_op.GetCurlMatrix(); - // Set up linear solvers. { + const int print = iodata.problem.verbose; auto pcg = std::make_unique>(comm, 0); - pcg->SetInitialGuess(iodata.solver.linear.initial_guess); + pcg->SetInitialGuess(0); pcg->SetRelTol(iodata.solver.linear.tol); pcg->SetAbsTol(std::numeric_limits::epsilon()); pcg->SetMaxIter(iodata.solver.linear.max_it); @@ -115,60 +107,47 @@ class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator } } - // Form the RHS for the explicit formulation: - // rhsE = -C*E + 1/mu curl B - J(t) - // rhsB = -curl E + // Form the RHS for the first-order ODE system void FormRHS(const Vector &u, Vector &rhs) const { - Vector uE(u.GetData() + 0, size_E); - Vector uB(u.GetData() + size_E, size_B); - Vector rhsE(rhs.GetData() + 0, size_E); - Vector rhsB(rhs.GetData() + size_E, size_B); - weakCurl->Mult(uB, rhsE); - if (C) - { - C->AddMult(uE, rhsE, -1.0); - } - linalg::AXPBYPCZ(1.0, rhsE, J_coef(t), NegJ, 0.0, rhsE); - Curl->Mult(uE, rhsB); - rhsB *= -1.0; - } - - // Form the RHS of the E-field for the implicit formulation - //(M + dt*C + dt^2*K)kE = -C*E - dt*K*E + 1/mu curl B - J(t) - // kB = -curl (E+dt*kE) - void FormRHSImplicit(const Vector &u, const double dt, Vector &rhs) const - { - Vector uE(u.GetData() + 0, size_E); - Vector uB(u.GetData() + size_E, size_B); - weakCurl->Mult(uB, rhs); + Vector u1(u.GetData() + 0, size_E); + Vector u2(u.GetData() + size_E, size_E); + Vector rhs1(rhs.GetData() + 0, size_E); + Vector rhs2(rhs.GetData() + size_E, size_E); + // u1 = Edot, u2 = E + // rhs_u1 = -C*u1 - K*u2 - J(t) + // rhs_u2 = u1 + K->Mult(u2, rhs1); if (C) { - C->AddMult(uE, rhs, -1.0); + C->AddMult(u1, rhs1, 1.0); } - K->AddMult(uE, rhs, -dt); - linalg::AXPBYPCZ(1.0, rhs, J_coef(t), NegJ, 0.0, rhs); + linalg::AXPBYPCZ(-1.0, rhs1, dJ_coef(t), NegJ, 0.0, rhs1); + + rhs2 = u1; } // Solve M du = rhs void Mult(const Vector &u, Vector &du) const override { + if (kspM->NumTotalMult() == 0) + { + // Operators have already been set in constructor. + du = 0.0; + } FormRHS(u, RHS); - Vector duE(du.GetData() + 0, size_E); - Vector duB(du.GetData() + size_E, size_B); - Vector rhsE(RHS.GetData() + 0, size_E); - Vector rhsB(RHS.GetData() + size_E, size_B); - kspM->Mult(rhsE, duE); - duB = rhsB; + Vector du1(du.GetData() + 0, size_E); + Vector du2(du.GetData() + size_E, size_E); + Vector rhs1(RHS.GetData() + 0, size_E); + Vector rhs2(RHS.GetData() + size_E, size_E); + kspM->Mult(rhs1, du1); + du2 = rhs2; } - + void ImplicitSolve(double dt, const Vector &u, Vector &k) override { - // Solve for k = [kE,kB] - // After substituting kB expression into kE equation, kE eqn is independent of kB - // and kE can be solved using the second-order curlcurl operator - // (M + dt*C + dt^2*K)kE = -C*E - dt*K*E + 1/mu curl B - J(t) - // kB = -curl (E+dt*kE) + // Solve: M k = f(u + dt k, t) + // Use block elimination to avoid solving a 2n x 2n linear system if (!kspA || dt != dt_) { // Configure the linear solver, including the system matrix and also the matrix @@ -178,35 +157,41 @@ class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator k = 0.0; } Mpi::Print("\n"); - // Solve A kE = rhsE - FormRHSImplicit(u, dt, rhsE); - Vector kE(k.GetData() + 0, size_E); - Vector kB(k.GetData() + size_E, size_B); - Vector uE(u.GetData() + 0, size_E); - Vector uB(u.GetData() + size_E, size_B); - kspA->Mult(rhsE, kE); - - // kB = -curl (E+dt*kE) - linalg::AXPBYPCZ(1.0, uE, dt, kE, 0.0, rhsE); - Curl->Mult(rhsE, kB); - kB *= -1.0; + FormRHS(u, RHS); + Vector k1(k.GetData() + 0, size_E); + Vector k2(k.GetData() + size_E, size_E); + Vector rhs1(RHS.GetData() + 0, size_E); + Vector rhs2(RHS.GetData() + size_E, size_E); + // A k1 = rhs1 - dt K rhs2 + K->AddMult(rhs2, rhs1, -dt); + kspA->Mult(rhs1, k1); + + // k2 = rhs2 + dt k1 + linalg::AXPBYPCZ(1.0, rhs2, dt, k1, 0.0, k2); } void ExplicitMult(const Vector &u, Vector &v) const override { - FormRHS(u, v); + if(explicit_RHS) // y' = M^-1 f(y,t) + { + Mult(u, v); + } + else // M y' = f(y,t) + { + FormRHS(u, v); + } } - // Setup A = M - gamma J = M + gamma C + gamma^2 K + // Setup A = M - gamma J = M + gamma C + gamma^2 K int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, double gamma) { // Update Jacobian matrix - if (!kspA || gamma != saved_gamma) + if (!kspA || gamma != saved_gamma) { ConfigureLinearSolver(gamma); } - + // Indicate Jacobian was updated *jcur = 1; @@ -216,62 +201,60 @@ class TimeDependentEBSystemOperator: public mfem::TimeDependentOperator return 0; } - // Solve (Mass - dt Jacobian) x = b - // In the present ODE system: - // | M 0 | - dt | -C 1/mu curl | |xE| = |bE| - // | 0 I | | -curl 0 | |xB| |bB| - // (M + dt C)xE - dt/mu curl xB = bE - // -dt curl xE + xB = bB - // Substitute xB = bB - dt curl xE into xE equation - // -> (M + dt C + dt^2 K) xE = bE + dt/mu curl bB + // Solve (Mass - dt Jacobian) x = b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) { - Vector bE(b.GetData() + 0, size_E); - Vector bB(b.GetData() + size_E, size_B); - Vector xE(x.GetData() + 0, size_E); - Vector xB(x.GetData() + size_E, size_B); - - // Solve A xE = bE + dt/mu curl bB - weakCurl->Mult(bB, rhsE); - rhsE *= saved_gamma; - rhsE += bE; - kspA->Mult(rhsE, xE); - - // xB = bB - dt curl xE - Curl->Mult(xE, xB); - xB *= -saved_gamma; - xB += bB; + Vector b1(b.GetData() + 0, size_E); + Vector b2(b.GetData() + size_E, size_E); + Vector x1(x.GetData() + 0, size_E); + Vector x2(x.GetData() + size_E, size_E); + Vector rhs(RHS.GetData() + 0, size_E); + + // A x1 = (M or I) b1 - dt K b2 + if (explicit_RHS) // y' = M^-1 f(y,t) for CVODE + { + M->Mult(b1, rhs); + } + else // M y' = f(y,t) for ARKODE + { + rhs = b1; + } + K->AddMult(b2, rhs, -saved_gamma); + kspA->Mult(rhs, x1); + + // x2 = b2 + dt x1 + linalg::AXPBYPCZ(1.0, b2, saved_gamma, x1, 0.0, x2); return 0; } - int SUNMassSetup() - { + int SUNMassSetup() + { // Already set M in the constructor. return 0; } int SUNMassSolve(const Vector &b, Vector &x, double tol) { - Vector bE(b.GetData() + 0, size_E); - Vector bB(b.GetData() + size_E, size_B); - Vector xE(x.GetData() + 0, size_E); - Vector xB(x.GetData() + size_E, size_B); - kspM->Mult(bE, xE); - xB = bB; - + Vector b1(b.GetData() + 0, size_E); + Vector b2(b.GetData() + size_E, size_E); + Vector x1(x.GetData() + 0, size_E); + Vector x2(x.GetData() + size_E, size_E); + kspM->Mult(b1, x1); + x2 = b2; + return 0; } int SUNMassMult(const Vector &x, Vector &v) { - Vector vE(v.GetData() + 0, size_E); - Vector vB(v.GetData() + size_E, size_B); - Vector xE(x.GetData() + 0, size_E); - Vector xB(x.GetData() + size_E, size_B); - M->Mult(xE, vE); - vB = xB; - + Vector v1(v.GetData() + 0, size_E); + Vector v2(v.GetData() + size_E, size_E); + Vector x1(x.GetData() + 0, size_E); + Vector x2(x.GetData() + size_E, size_E); + M->Mult(x1, v1); + v2 = x2; + return 0; } }; @@ -401,7 +384,7 @@ class TimeDependentCurlCurlOperator : public mfem::SecondOrderTimeDependentOpera } // namespace -SecondOrderTimeOperator::SecondOrderTimeOperator(const IoData &iodata, +SecondOrderTimeOperator::SecondOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef) { @@ -505,87 +488,95 @@ void SecondOrderTimeOperator::Step(double &t, double &dt) } FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &J_coef) + std::function &dJ_coef) { + // Construct discrete curl matrix for B-field time integration. + Curl = &space_op.GetCurlMatrix(); + // Get sizes. int size_E = space_op.GetNDSpace().GetTrueVSize(); int size_B = space_op.GetRTSpace().GetTrueVSize(); - + // Allocate space for solution vectors. - sol.SetSize(size_E+size_B); + sol.SetSize(2*size_E); E.SetSize(size_E); + En.SetSize(size_E); B.SetSize(size_B); sol.UseDevice(true); E.UseDevice(true); + En.UseDevice(true); B.UseDevice(true); - // Sol = [E, B] - E.MakeRef(sol, 0); - B.MakeRef(sol, size_E); + // Sol = [Edot, E] + E.MakeRef(sol, size_E); // SUNDIALS adaptive time-stepping parameters. adapt_dt = iodata.solver.transient.adaptive_dt; rel_tol = iodata.solver.transient.rel_tol; abs_tol = iodata.solver.transient.abs_tol; - rk_order = iodata.solver.transient.rk_order; + order = iodata.solver.transient.order; // Minimum RK order is 2. - rk_order = std::max(rk_order, 2); + order = std::max(order, 2); // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::EXPLICIT; switch (iodata.solver.transient.type) { - case config::TransientSolverData::Type::IMPLICIT_RK: - case config::TransientSolverData::Type::DEFAULT: + case config::TransientSolverData::Type::ARKODE: { #if defined(MFEM_USE_SUNDIALS) - // SUNDIALS ARKode solver. + // SUNDIALS ARKODE solver. std::unique_ptr arkode; - arkode = std::make_unique(space_op.GetComm(), + arkode = std::make_unique(space_op.GetComm(), mfem::ARKStepSolver::IMPLICIT); type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, J_coef, 0.0, type); - // Initialize ARKode. + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type, false); + // Initialize ARKODE. arkode->Init(*op); - // IRK settings - // Use implicit setup/solve defined in SUNImplicit* + // Use implicit setup/solve defined in SUNImplicit*. arkode->UseMFEMLinearSolver(); - // Use mass matrix operations defined in SUNMass* + // Use mass matrix operations defined in SUNMass*. + // if enabled, explicit_RHS must be false (M y' = f(y,t)) arkode->UseMFEMMassLinearSolver(0); // Implicit solve is linear and J is not time-dependent. ARKStepSetLinear(arkode->GetMem(), 0); // Maximum IRK order is 5. - rk_order = std::min(rk_order, 5); + order = std::min(order, 5); // Relative and absolute tolerances. - arkode->SetSStolerances(rel_tol, abs_tol); + arkode->SetSStolerances(rel_tol, abs_tol); // Set the order of the RK scheme. - ARKStepSetOrder(arkode->GetMem(), rk_order); - // Set the ODE solver to ARKode. + ARKStepSetOrder(arkode->GetMem(), order); + // Set the ODE solver to ARKODE. ode = std::move(arkode); #endif } break; - case config::TransientSolverData::Type::EXPLICIT_RK: + case config::TransientSolverData::Type::CVODE: + case config::TransientSolverData::Type::DEFAULT: { #if defined(MFEM_USE_SUNDIALS) - // SUNDIALS ARKode solver. - std::unique_ptr arkode; - arkode = std::make_unique(space_op.GetComm(), - mfem::ARKStepSolver::EXPLICIT); - type = mfem::TimeDependentOperator::EXPLICIT; + // SUNDIALS CVODE solver. + std::unique_ptr cvode; + cvode = std::make_unique(space_op.GetComm(), CV_BDF); + type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, J_coef, 0.0, type); - // Initialize ARKode. - arkode->Init(*op); - // Maximum ERK order is 8. - rk_order = std::min(rk_order, 8); - // Relative and absolute tolerances. - arkode->SetSStolerances(rel_tol, abs_tol); - // Set the order of the RK scheme. - ARKStepSetOrder(arkode->GetMem(), rk_order); - // Set the ODE solver to ARKode. - ode = std::move(arkode); + // CVODE uses explicit RHS ODE form: y' = M^-1 f(y,t) + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type, true); + // Initialize CVODE. + cvode->Init(*op); + // Relative and absolute tolerances for time step control. + cvode->SetSStolerances(rel_tol, abs_tol); + // Use implicit setup/solve defined in SUNImplicit*. + cvode->UseMFEMLinearSolver(); + // Set the max order of the multistep scheme. + // CV_BDF can go up to 5, but >= 3 is not unconditionally stable. + order = std::min(order, 5); + cvode->SetMaxOrder(order); + // Set the max number of steps allowed in one CVODE step() call. + cvode->SetMaxNSteps(10000); //default 500 + // Set the ODE solver to CVODE. + ode = std::move(cvode); #endif } break; @@ -594,27 +585,27 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat const KspSolver &FirstOrderTimeOperator::GetLinearSolver() const { - const auto &ebsystem = dynamic_cast(*op); - if (isExplicit()) + const auto &firstOrder = dynamic_cast(*op); + if (isExplicit()) { - MFEM_VERIFY(ebsystem.kspM, + MFEM_VERIFY(firstOrder.kspM, "No linear solver for time-dependent operator has been constructed!\n"); - return *ebsystem.kspM; + return *firstOrder.kspM; } - else + else { - MFEM_VERIFY(ebsystem.kspA, + MFEM_VERIFY(firstOrder.kspA, "No linear solver for time-dependent operator has been constructed!\n"); - return *ebsystem.kspA; + return *firstOrder.kspA; } } double FirstOrderTimeOperator::GetMaxTimeStep() const { - const auto &ebsystem = dynamic_cast(*op); - MPI_Comm comm = ebsystem.comm; - const Operator &M = *ebsystem.M; - const Operator &K = *ebsystem.K; + const auto &firstOrder = dynamic_cast(*op); + MPI_Comm comm = firstOrder.comm; + const Operator &M = *firstOrder.M; + const Operator &K = *firstOrder.K; // Solver for M⁻¹. constexpr double lin_tol = 1.0e-9; @@ -639,14 +630,11 @@ void FirstOrderTimeOperator::Init(double &dt) { // Always use zero initial conditions. sol = 0.0; - ode->Init(*op); + B = 0.0; #if defined(MFEM_USE_SUNDIALS) if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) { - // Setting a max internal time step can sometimes be beneficial. - // We could add this as an optional user input, but what should the default be? - //arkode->SetMaxStep(dt); - if(!adapt_dt) + if(!adapt_dt) { // Disable adaptive time stepping. arkode->SetFixedStep(dt); @@ -657,10 +645,63 @@ void FirstOrderTimeOperator::Init(double &dt) void FirstOrderTimeOperator::Step(double &t, double &dt) { + En = E; double dt_input = dt; ode->Step(sol, t, dt); // Ensure user-specified dt does not change. - dt = dt_input; + dt = dt_input; + + // Trapezoidal integration for B-field: dB/dt = -∇ x E. + En += E; + Curl->AddMult(En, B, -0.5 * dt); + +#if defined(MFEM_USE_SUNDIALS) +// REMOVE THIS LATER? +if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + { + // Print some timestepping stats + long int nsteps; + double hinused, hlast, hcur, tcur; + ARKStepGetStepStats(arkode->GetMem(), &nsteps, &hinused, + &hlast, &hcur, &tcur); + Mpi::Print("\nARKODE step statistics\n"); + Mpi::Print(" num steps: {:d}\n", nsteps); + Mpi::Print(" initial dt: {:.3e}\n", hinused); + Mpi::Print(" last dt: {:.3e}\n", hlast); + Mpi::Print(" current dt: {:.3e}\n", hcur); + Mpi::Print("\n"); + } + else if (mfem::CVODESolver* cvode = dynamic_cast(ode.get())) + { + long int nsteps, nfevals, nlinsetups, netfails; + int qlast, qcur; + double hinused, hlast, hcur, tcur; + + // Get integrator stats + CVodeGetIntegratorStats(cvode->GetMem(), + &nsteps, + &nfevals, + &nlinsetups, + &netfails, + &qlast, + &qcur, + &hinused, + &hlast, + &hcur, + &tcur); + Mpi::Print("\n CVODE step statistics\n"); + Mpi::Print(" num steps: {:d}\n", nsteps); + Mpi::Print(" num rhs evals: {:d}\n", nfevals); + Mpi::Print(" num lin setups: {:d}\n", nlinsetups); + Mpi::Print(" num error test fails: {:d}\n", netfails); + Mpi::Print(" last order: {:d}\n", qlast); + Mpi::Print(" current order: {:d}\n", qcur); + Mpi::Print(" initial dt: {:.3e}\n", hinused); + Mpi::Print(" last dt: {:.3e}\n", hlast); + Mpi::Print(" current dt: {:.3e}\n", hcur); + Mpi::Print("\n"); + } +#endif } void FirstOrderTimeOperator::PrintStats() @@ -669,13 +710,19 @@ void FirstOrderTimeOperator::PrintStats() if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) { long int expsteps, accsteps, step_attempts, nfe_evals, nfi_evals, nlinsetups, netfails; - ARKStepGetTimestepperStats(arkode->GetMem(), &expsteps, &accsteps, - &step_attempts, &nfe_evals, &nfi_evals, - &nlinsetups, &netfails); + ARKStepGetTimestepperStats(arkode->GetMem(), + &expsteps, + &accsteps, + &step_attempts, + &nfe_evals, + &nfi_evals, + &nlinsetups, + &netfails); + long int nniters; - ARKStepGetNumNonlinSolvIters(arkode->GetMem(), &nniters); + ARKStepGetNumNonlinSolvIters(arkode->GetMem(), &nniters); - Mpi::Print("\nARKode time-stepper statistics\n"); + Mpi::Print("\nARKODE time-stepper statistics\n"); Mpi::Print(" Stability-limited steps: {:d}\n", expsteps); Mpi::Print(" Accuracy-limited steps: {:d}\n", accsteps); Mpi::Print(" Calls to explicit RHS function: {:d}\n", nfe_evals); @@ -683,7 +730,33 @@ void FirstOrderTimeOperator::PrintStats() Mpi::Print(" Calls to linear solver setup function: {:d}\n", nlinsetups); Mpi::Print(" Calls to linear solver solve function: {:d}\n", nniters); Mpi::Print(" Number of error test failures: {:d}\n", netfails); - } + } + else if (mfem::CVODESolver* cvode = dynamic_cast(ode.get())) + { + long int nsteps, nfevals, nlinsetups, netfails; + int qlast, qcur; + double hinused, hlast, hcur, tcur; + + // Get integrator stats. + CVodeGetIntegratorStats(cvode->GetMem(), + &nsteps, + &nfevals, + &nlinsetups, + &netfails, + &qlast, + &qcur, + &hinused, + &hlast, + &hcur, + &tcur); + Mpi::Print("\n CVODE time-stepper statistics\n"); + Mpi::Print(" Number of steps: {:d}\n", nsteps); + Mpi::Print(" Calls to RHS function: {:d}\n", nfevals); + Mpi::Print(" Calls to linear solver setup function: {:d}\n", nlinsetups); + Mpi::Print(" Number of error test failures: {:d}\n", netfails); + Mpi::Print("\n"); + } + #endif } diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index 03144aa38..6e3929d33 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -20,7 +20,7 @@ class SpaceOperator; // // Abstract class handling temporal discretization of the governing equations. // -class TimeOperator +class TimeOperator { protected: Vector E, B; @@ -102,16 +102,16 @@ class FirstOrderTimeOperator : public TimeOperator { private: // Solution vector storage. - Vector sol; + Vector sol, En; - // Time integrator for the first order E-B ODE system. + // Time integrator for the first order ODE system. std::unique_ptr ode; - // Time-dependent operator for the E-B system. + // Time-dependent operator for the Edot-E ODE system. std::unique_ptr op; // Adaptive time-stepping parameters. - int rk_order; + int order; bool adapt_dt; double rel_tol, abs_tol; @@ -120,7 +120,7 @@ class FirstOrderTimeOperator : public TimeOperator public: FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &J_coef); + std::function &dJ_coef); // Return the linear solver associated with the implicit or explicit time integrator. const KspSolver &GetLinearSolver() const; diff --git a/palace/utils/configfile.cpp b/palace/utils/configfile.cpp index e0a6c901e..6472bd89a 100644 --- a/palace/utils/configfile.cpp +++ b/palace/utils/configfile.cpp @@ -1597,8 +1597,8 @@ PALACE_JSON_SERIALIZE_ENUM(TransientSolverData::Type, {TransientSolverData::Type::GEN_ALPHA, "GeneralizedAlpha"}, {TransientSolverData::Type::NEWMARK, "NewmarkBeta"}, {TransientSolverData::Type::CENTRAL_DIFF, "CentralDifference"}, - {TransientSolverData::Type::EXPLICIT_RK, "ExplicitRK"}, - {TransientSolverData::Type::IMPLICIT_RK, "ImplicitRK"}}) + {TransientSolverData::Type::CVODE, "CVODE"}, + {TransientSolverData::Type::ARKODE, "ARKODE"}}) PALACE_JSON_SERIALIZE_ENUM( TransientSolverData::ExcitationType, {{TransientSolverData::ExcitationType::SINUSOIDAL, "Sinusoidal"}, @@ -1629,7 +1629,7 @@ void TransientSolverData::SetUp(json &solver) max_t = transient->at("MaxTime"); // Required delta_t = transient->at("TimeStep"); // Required delta_post = transient->value("SaveStep", delta_post); - rk_order = transient->value("Order", rk_order); + order = transient->value("Order", order); adaptive_dt = transient->value("AdaptiveTimeStep", adaptive_dt); rel_tol = transient->value("RelTol", rel_tol); abs_tol = transient->value("AbsTol", abs_tol); @@ -1660,7 +1660,7 @@ void TransientSolverData::SetUp(json &solver) std::cout << "MaxTime: " << max_t << '\n'; std::cout << "TimeStep: " << delta_t << '\n'; std::cout << "SaveStep: " << delta_post << '\n'; - std::cout << "Order: " << rk_order << '\n'; + std::cout << "Order: " << order << '\n'; std::cout << "AdaptiveTimeStep: " << adaptive_dt << '\n'; std::cout << "RelTol: " << rel_tol << '\n'; std::cout << "AbsTol: " << abs_tol << '\n'; diff --git a/palace/utils/configfile.hpp b/palace/utils/configfile.hpp index 63928458e..b2dfc01f4 100644 --- a/palace/utils/configfile.hpp +++ b/palace/utils/configfile.hpp @@ -733,8 +733,8 @@ struct TransientSolverData GEN_ALPHA, NEWMARK, CENTRAL_DIFF, - EXPLICIT_RK, - IMPLICIT_RK + ARKODE, + CVODE }; Type type = Type::DEFAULT; @@ -763,15 +763,16 @@ struct TransientSolverData // Step increment for saving fields to disk. int delta_post = 0; - // RK scheme order for SUNDIALS ARKode integrators; - int rk_order = 3; + // RK scheme order for SUNDIALS ARKODE integrators. + // Max order for SUNDIALS CVODE integrator. + int order = 2; - // Adaptive time-stepping for SUNDIALS integrators + // Adaptive time-stepping for SUNDIALS ARKODE integrators bool adaptive_dt = true; // Adaptive time-stepping tolerances - double rel_tol = 1e-3; - double abs_tol = 1e-6; + double rel_tol = 1e-4; + double abs_tol = 1e-9; void SetUp(json &solver); }; diff --git a/scripts/schema/config/solver.json b/scripts/schema/config/solver.json index 55dba0753..7dadcf4c8 100644 --- a/scripts/schema/config/solver.json +++ b/scripts/schema/config/solver.json @@ -69,9 +69,9 @@ "TimeStep": { "type": "number" }, "SaveStep": { "type": "integer" }, "AdaptiveTimeStep": {"type": "boolean"}, - "Order": {"type": "integer"}, - "RelTol": {"type": "number"}, - "AbsTol": {"type": "number"} + "Order": {"type": "integer", "minimum": 1}, + "RelTol": {"type": "number", "minimum": 0.0}, + "AbsTol": {"type": "number", "minimum": 0.0} } }, "Electrostatic": From 983cc9c0329e19034bb66a1d4e951c31252125a7 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Fri, 25 Oct 2024 17:00:44 +0000 Subject: [PATCH 06/32] Use explicit RHS (y' = M^-1 f(y,t)) for both ARKODE and CVODE --- palace/models/timeoperator.cpp | 118 ++++++++++----------------------- 1 file changed, 34 insertions(+), 84 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index a82c4e028..2b23d33c4 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -39,9 +39,6 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator mutable Vector RHS; int size_E; - // ARKODE uses the ODE formulation M y' = f(y,t) (implicit RHS) - // CVODE uses the ODE formulation y' = M^-1 f(y,t) (explicit RHS) - bool explicit_RHS; // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. @@ -50,11 +47,10 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator public: TimeDependentFirstOrderOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef, double t0, - mfem::TimeDependentOperator::Type type, - bool explicit_RHS) + mfem::TimeDependentOperator::Type type) : mfem::TimeDependentOperator(2*space_op.GetNDSpace().GetTrueVSize(), t0, type), - comm(space_op.GetComm()), dJ_coef(dJ_coef), explicit_RHS(explicit_RHS) + comm(space_op.GetComm()), dJ_coef(dJ_coef) { // Get dimensions of E and Edot vectors. size_E = space_op.GetNDSpace().GetTrueVSize(); @@ -172,14 +168,7 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator void ExplicitMult(const Vector &u, Vector &v) const override { - if(explicit_RHS) // y' = M^-1 f(y,t) - { - Mult(u, v); - } - else // M y' = f(y,t) - { - FormRHS(u, v); - } + Mult(u, v); } // Setup A = M - gamma J = M + gamma C + gamma^2 K @@ -201,7 +190,7 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator return 0; } - // Solve (Mass - dt Jacobian) x = b + // Solve (Mass - dt Jacobian) x = Mass b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) { Vector b1(b.GetData() + 0, size_E); @@ -210,15 +199,8 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator Vector x2(x.GetData() + size_E, size_E); Vector rhs(RHS.GetData() + 0, size_E); - // A x1 = (M or I) b1 - dt K b2 - if (explicit_RHS) // y' = M^-1 f(y,t) for CVODE - { - M->Mult(b1, rhs); - } - else // M y' = f(y,t) for ARKODE - { - rhs = b1; - } + // A x1 = M b1 - dt K b2 + M->Mult(b1, rhs); K->AddMult(b2, rhs, -saved_gamma); kspA->Mult(rhs, x1); @@ -227,36 +209,6 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator return 0; } - - int SUNMassSetup() - { - // Already set M in the constructor. - return 0; - } - - int SUNMassSolve(const Vector &b, Vector &x, double tol) - { - Vector b1(b.GetData() + 0, size_E); - Vector b2(b.GetData() + size_E, size_E); - Vector x1(x.GetData() + 0, size_E); - Vector x2(x.GetData() + size_E, size_E); - kspM->Mult(b1, x1); - x2 = b2; - - return 0; - } - - int SUNMassMult(const Vector &x, Vector &v) - { - Vector v1(v.GetData() + 0, size_E); - Vector v2(v.GetData() + size_E, size_E); - Vector x1(x.GetData() + 0, size_E); - Vector x2(x.GetData() + size_E, size_E); - M->Mult(x1, v1); - v2 = x2; - - return 0; - } }; class TimeDependentCurlCurlOperator : public mfem::SecondOrderTimeDependentOperator @@ -531,14 +483,11 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat mfem::ARKStepSolver::IMPLICIT); type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type, false); + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); // Initialize ARKODE. arkode->Init(*op); // Use implicit setup/solve defined in SUNImplicit*. arkode->UseMFEMLinearSolver(); - // Use mass matrix operations defined in SUNMass*. - // if enabled, explicit_RHS must be false (M y' = f(y,t)) - arkode->UseMFEMMassLinearSolver(0); // Implicit solve is linear and J is not time-dependent. ARKStepSetLinear(arkode->GetMem(), 0); // Maximum IRK order is 5. @@ -561,8 +510,7 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat cvode = std::make_unique(space_op.GetComm(), CV_BDF); type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. - // CVODE uses explicit RHS ODE form: y' = M^-1 f(y,t) - op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type, true); + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); // Initialize CVODE. cvode->Init(*op); // Relative and absolute tolerances for time step control. @@ -655,53 +603,55 @@ void FirstOrderTimeOperator::Step(double &t, double &dt) En += E; Curl->AddMult(En, B, -0.5 * dt); +/* #if defined(MFEM_USE_SUNDIALS) -// REMOVE THIS LATER? -if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) { // Print some timestepping stats long int nsteps; double hinused, hlast, hcur, tcur; ARKStepGetStepStats(arkode->GetMem(), &nsteps, &hinused, &hlast, &hcur, &tcur); + + double hlasts = iodata.DimensionalizeValue(IoData::ValueType::TIME, hlast); + Mpi::Print("\nARKODE step statistics\n"); Mpi::Print(" num steps: {:d}\n", nsteps); - Mpi::Print(" initial dt: {:.3e}\n", hinused); - Mpi::Print(" last dt: {:.3e}\n", hlast); - Mpi::Print(" current dt: {:.3e}\n", hcur); + Mpi::Print(" last dt: {:.3e}\n", hlasts); Mpi::Print("\n"); } else if (mfem::CVODESolver* cvode = dynamic_cast(ode.get())) { - long int nsteps, nfevals, nlinsetups, netfails; - int qlast, qcur; - double hinused, hlast, hcur, tcur; + long int nsteps, nfevals, nlinsetups, netfails; + int qlast, qcur; + double hinused, hlast, hcur, tcur; + + // Get integrator stats + CVodeGetIntegratorStats(cvode->GetMem(), + &nsteps, + &nfevals, + &nlinsetups, + &netfails, + &qlast, + &qcur, + &hinused, + &hlast, + &hcur, + &tcur); + + double hlasts = iodata.DimensionalizeValue(IoData::ValueType::TIME, hlast); - // Get integrator stats - CVodeGetIntegratorStats(cvode->GetMem(), - &nsteps, - &nfevals, - &nlinsetups, - &netfails, - &qlast, - &qcur, - &hinused, - &hlast, - &hcur, - &tcur); Mpi::Print("\n CVODE step statistics\n"); Mpi::Print(" num steps: {:d}\n", nsteps); Mpi::Print(" num rhs evals: {:d}\n", nfevals); Mpi::Print(" num lin setups: {:d}\n", nlinsetups); Mpi::Print(" num error test fails: {:d}\n", netfails); Mpi::Print(" last order: {:d}\n", qlast); - Mpi::Print(" current order: {:d}\n", qcur); - Mpi::Print(" initial dt: {:.3e}\n", hinused); - Mpi::Print(" last dt: {:.3e}\n", hlast); - Mpi::Print(" current dt: {:.3e}\n", hcur); + Mpi::Print(" last dt: {:.3e}\n", hlasts); Mpi::Print("\n"); } #endif +*/ } void FirstOrderTimeOperator::PrintStats() From cff74b901169d13447810da79354408d37386fd3 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 30 Oct 2024 19:24:04 +0000 Subject: [PATCH 07/32] Remove weakCurl operator, no longer needed --- palace/models/spaceoperator.cpp | 37 --------------------------------- palace/models/spaceoperator.hpp | 4 ---- 2 files changed, 41 deletions(-) diff --git a/palace/models/spaceoperator.cpp b/palace/models/spaceoperator.cpp index a5d7d9a0c..b15c5c70d 100644 --- a/palace/models/spaceoperator.cpp +++ b/palace/models/spaceoperator.cpp @@ -442,39 +442,6 @@ SpaceOperator::GetExtraSystemMatrix(double omega, Operator::DiagonalPolicy diag_ } } -template -std::unique_ptr -SpaceOperator::GetWeakCurlMatrix() -{ - PrintHeader(GetH1Space(), GetNDSpace(), GetRTSpace(), print_hdr); - MaterialPropertyCoefficient df(mat_op.MaxCeedAttribute()), f(mat_op.MaxCeedAttribute()); - AddStiffnessCoefficients(1.0, df, f); - int empty = (df.empty() && f.empty()); - Mpi::GlobalMin(1, &empty, GetComm()); - if (empty) - { - return {}; - } - constexpr bool skip_zeros = false, assemble_q_data = false; - BilinearForm a(GetRTSpace(), GetNDSpace()); - a.AddDomainIntegrator(df); - if (assemble_q_data) - { - a.AssembleQuadratureData(); - } - auto weakCurl = a.Assemble(skip_zeros); - if constexpr (std::is_same::value) - { - auto WeakCurl = std::make_unique(std::move(weakCurl),nullptr, GetRTSpace(), GetNDSpace(),false); - return WeakCurl; - } - else - { - auto WeakCurl = std::make_unique(std::move(weakCurl),GetRTSpace(), GetNDSpace(), false); - return WeakCurl; - } -} - namespace { @@ -1082,8 +1049,4 @@ SpaceOperator::GetPreconditionerMatrix(double, double, double, double) template std::unique_ptr SpaceOperator::GetPreconditionerMatrix(double, double, double, double); -template std::unique_ptr - SpaceOperator::GetWeakCurlMatrix(); -template std::unique_ptr - SpaceOperator::GetWeakCurlMatrix(); } // namespace palace diff --git a/palace/models/spaceoperator.hpp b/palace/models/spaceoperator.hpp index f1cd7936f..0c9873ec6 100644 --- a/palace/models/spaceoperator.hpp +++ b/palace/models/spaceoperator.hpp @@ -177,10 +177,6 @@ class SpaceOperator std::unique_ptr GetPreconditionerMatrix(double a0, double a1, double a2, double a3); - // Construct the weak curl operator: curl 1/mu - template - std::unique_ptr GetWeakCurlMatrix(); - // Construct and return the discrete curl or gradient matrices. const Operator &GetGradMatrix() const { From e5b1e1d64f1cdef5919ddb3e4ba866adc42aace6 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 30 Oct 2024 19:25:41 +0000 Subject: [PATCH 08/32] Remove unnecessary ODE integrator prints --- palace/models/timeoperator.cpp | 50 ---------------------------------- 1 file changed, 50 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 2b23d33c4..344b4118f 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -602,56 +602,6 @@ void FirstOrderTimeOperator::Step(double &t, double &dt) // Trapezoidal integration for B-field: dB/dt = -∇ x E. En += E; Curl->AddMult(En, B, -0.5 * dt); - -/* -#if defined(MFEM_USE_SUNDIALS) - if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) - { - // Print some timestepping stats - long int nsteps; - double hinused, hlast, hcur, tcur; - ARKStepGetStepStats(arkode->GetMem(), &nsteps, &hinused, - &hlast, &hcur, &tcur); - - double hlasts = iodata.DimensionalizeValue(IoData::ValueType::TIME, hlast); - - Mpi::Print("\nARKODE step statistics\n"); - Mpi::Print(" num steps: {:d}\n", nsteps); - Mpi::Print(" last dt: {:.3e}\n", hlasts); - Mpi::Print("\n"); - } - else if (mfem::CVODESolver* cvode = dynamic_cast(ode.get())) - { - long int nsteps, nfevals, nlinsetups, netfails; - int qlast, qcur; - double hinused, hlast, hcur, tcur; - - // Get integrator stats - CVodeGetIntegratorStats(cvode->GetMem(), - &nsteps, - &nfevals, - &nlinsetups, - &netfails, - &qlast, - &qcur, - &hinused, - &hlast, - &hcur, - &tcur); - - double hlasts = iodata.DimensionalizeValue(IoData::ValueType::TIME, hlast); - - Mpi::Print("\n CVODE step statistics\n"); - Mpi::Print(" num steps: {:d}\n", nsteps); - Mpi::Print(" num rhs evals: {:d}\n", nfevals); - Mpi::Print(" num lin setups: {:d}\n", nlinsetups); - Mpi::Print(" num error test fails: {:d}\n", netfails); - Mpi::Print(" last order: {:d}\n", qlast); - Mpi::Print(" last dt: {:.3e}\n", hlasts); - Mpi::Print("\n"); - } -#endif -*/ } void FirstOrderTimeOperator::PrintStats() From c4b4a01e3ea4594c7f014049be32545df7b4599d Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 00:03:12 +0000 Subject: [PATCH 09/32] Remove 2nd order ODE formulation --- CHANGELOG.md | 3 + docs/src/config/solver.md | 23 +-- docs/src/install.md | 5 +- palace/drivers/transientsolver.cpp | 40 +---- palace/models/timeoperator.cpp | 276 ++++------------------------- palace/models/timeoperator.hpp | 91 +--------- palace/utils/configfile.cpp | 6 +- palace/utils/configfile.hpp | 12 +- palace/utils/iodata.cpp | 70 +++++++- scripts/schema/config/solver.json | 7 +- 10 files changed, 139 insertions(+), 394 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1bee333f..a258bef64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,9 @@ The format of this changelog is based on - Exposed configuration linear solver and eigen solver options for the wave port subproblem. These can now be specified as part of the `config["Boundaries"]["WavePort"]` configuration. The defaults align with the previously hardcoded values. + - Added adaptive time-stepping capability for transient simulations. The new ODE integrators + rely on the SUNDIALS library and can be specified by setting the + `config["Solver"]["Transient"]["Type"]` option to `"CVODE"` or `"ARKODE"`. ## [0.13.0] - 2024-05-20 diff --git a/docs/src/config/solver.md b/docs/src/config/solver.md index c10f079f4..37cf02304 100644 --- a/docs/src/config/solver.md +++ b/docs/src/config/solver.md @@ -209,7 +209,6 @@ error tolerance. "MaxTime": , "TimeStep": , "SaveStep": , - "AdaptiveTimeStep": , "Order": , "RelTol": , "AbsTol": @@ -223,17 +222,12 @@ the second-order system of differential equations. The available options are: - `"GeneralizedAlpha"` : The second-order implicit generalized-``\alpha`` method with ``\rho_{\inf} = 1.0``. This scheme is unconditionally stable. - - `"NewmarkBeta"` : The second-order implicit Newmark-``\beta`` method with - ``\beta = 1/4`` and ``\gamma = 1/2``. This scheme is unconditionally stable. - - `"CentralDifference"` : The second-order explicit central difference method, obtained - by setting ``\beta = 0`` and ``\gamma = 1/2`` in the Newmark-``\beta`` method. In this - case, the maximum eigenvalue of the system operator is estimated at the start of the - simulation and used to restrict the simulation time step to below the maximum stability - time step. - `"ARKODE"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order - ODE system for the electric field. + ODE system for the electric field with adaptive time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). - `"CVODE"` : SUNDIALS CVODE implicit multistep method scheme applied to the first-order - ODE system for the electric field. + ODE system for the electric field with adaptive time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). + - `"RungeKutta"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order + ODE system for the electric field with fixed time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). - `"Default"` : Use the default `"GeneralizedAlpha"` time integration scheme. `"Excitation" [None]` : Controls the time dependence of the source excitation. The @@ -268,17 +262,14 @@ disk for [visualization with ParaView](../guide/postprocessing.md#Visualization) saved in the `paraview/` directory under the directory specified by [`config["Problem"]["Output"]`](problem.md#config%5B%22Problem%22%5D). -`"AdaptiveTimeStep" [true]` : Enable adaptive time-stepping in the Runge-Kutta integrators. -Only relevant when `"Type"` is `"ARKODE"`. `"CVODE"` always uses adaptive time-stepping. - `"Order" [2]` : Order of the Runge-Kutta integrators or maximum order of the multistep method. -Only relevant when `"Type"` is `"ARKODE"` or `"CVODE"`. +Only relevant when `"Type"` is `"ARKODE"`, `"Runge-Kutta"` or `"CVODE"`. `"RelTol" [1e-4]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"CVODE"` or `"ARKODE"` (when `"AdaptiveTimeStep"` is enabled). + when `"Type"` is `"CVODE"` or `"ARKODE"` . `"AbsTol" [1e-9]` : Absolute tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"CVODE"` or `"ARKODE"` (when `"AdaptiveTimeStep"` is enabled). + when `"Type"` is `"CVODE"` or `"ARKODE"`. ## `solver["Electrostatic"]` diff --git a/docs/src/install.md b/docs/src/install.md index fc5258bce..cea342c06 100644 --- a/docs/src/install.md +++ b/docs/src/install.md @@ -133,6 +133,7 @@ Additional build options are (with default values in brackets): - `PALACE_WITH_LIBXSMM [ON]` : Build with LIBXSMM backend for libCEED - `PALACE_WITH_MAGMA [ON]` : Build with MAGMA backend for libCEED - `PALACE_WITH_GSLIB [ON]` : Build with GSLIB library for high-order field interpolation + - `PALACE_WITH_SUNDIALS [ON]` : Build with SUNDIALS ODE solver library The build step is invoked by running (for example with 4 `make` threads) @@ -155,7 +156,7 @@ and LAPACK libraries depending on the system architecture according to the follo procedure: - For `x86_64` systems: - + + If the `MKLROOT` environment variable is set, looks for an [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html) installation. @@ -166,7 +167,7 @@ procedure: which is permissively licensed and available from most package managers. - For `aarch64`/`arm64` systems: - + + If the `ARMPL_DIR` environment variable is set, looks for an [Arm Performance Libraries (PL)](https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries) installation. diff --git a/palace/drivers/transientsolver.cpp b/palace/drivers/transientsolver.cpp index 17bc4da59..873fb5cea 100644 --- a/palace/drivers/transientsolver.cpp +++ b/palace/drivers/transientsolver.cpp @@ -29,35 +29,13 @@ TransientSolver::Solve(const std::vector> &mesh) const std::function J_coef = GetTimeExcitation(false); std::function dJdt_coef = GetTimeExcitation(true); SpaceOperator space_op(iodata, mesh); - - std::unique_ptr time_op; - switch (iodata.solver.transient.type) - { - case config::TransientSolverData::Type::GEN_ALPHA: - case config::TransientSolverData::Type::NEWMARK: - case config::TransientSolverData::Type::CENTRAL_DIFF: - case config::TransientSolverData::Type::DEFAULT: - { - time_op = std::make_unique(iodata, space_op, dJdt_coef); - } - break; - case config::TransientSolverData::Type::ARKODE: - case config::TransientSolverData::Type::CVODE: - { -#if !defined(MFEM_USE_SUNDIALS) - MFEM_ABORT("Solver was not built with SUNDIALS support, please choose a " - "different transient solver type!"); -#endif - time_op = std::make_unique(iodata, space_op, dJdt_coef); - } - break; - } + TimeOperator time_op(iodata, space_op, dJdt_coef); double delta_t = iodata.solver.transient.delta_t; - if (time_op->isExplicit()) + if (time_op.isExplicit()) { // Stability limited time step. - const double dt_max = time_op-> GetMaxTimeStep(); + const double dt_max = time_op.GetMaxTimeStep(); const double dts_max = iodata.DimensionalizeValue(IoData::ValueType::TIME, dt_max); Mpi::Print(" Maximum stable time step: {:.6e} ns\n", dts_max); delta_t = std::min(delta_t, 0.95 * dt_max); @@ -124,17 +102,17 @@ TransientSolver::Solve(const std::vector> &mesh) const { Mpi::Print("\n"); t += delta_t; - time_op-> Init(delta_t); // Initial conditions + time_op.Init(delta_t); // Initial conditions } else { - time_op-> Step(t, delta_t); // Advances t internally + time_op.Step(t, delta_t); // Advances t internally } // Postprocess for the time step. BlockTimer bt2(Timer::POSTPRO); - const Vector &E = time_op->GetE(); - const Vector &B = time_op->GetB(); + const Vector &E = time_op.GetE(); + const Vector &B = time_op.GetB(); post_op.SetEGridFunction(E); post_op.SetBGridFunction(B); post_op.UpdatePorts(space_op.GetLumpedPortOp()); @@ -161,8 +139,8 @@ TransientSolver::Solve(const std::vector> &mesh) const step++; } BlockTimer bt1(Timer::POSTPRO); - time_op->PrintStats(); - SaveMetadata(time_op->GetLinearSolver()); + time_op.PrintStats(); + SaveMetadata(time_op.GetLinearSolver()); return {indicator, space_op.GlobalTrueVSize()}; } diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 344b4118f..f415666a2 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -211,236 +211,10 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator } }; -class TimeDependentCurlCurlOperator : public mfem::SecondOrderTimeDependentOperator -{ -public: - // MPI communicator. - MPI_Comm comm; - - // System matrices and excitation RHS. - std::unique_ptr K, M, C; - Vector NegJ; - - // Time dependence of current pulse for excitation: -J'(t) = -g'(t) J. This function - // returns g'(t). - std::function &dJ_coef; - - // Internal objects for solution of linear systems during time stepping. - double a0_, a1_; - std::unique_ptr kspM, kspA; - std::unique_ptr A, B; - mutable Vector RHS; - - // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and - // construct the linear solver. - std::function ConfigureLinearSolver; - -public: - TimeDependentCurlCurlOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef, double t0, - mfem::TimeDependentOperator::Type type) - : mfem::SecondOrderTimeDependentOperator(space_op.GetNDSpace().GetTrueVSize(), t0, - type), - comm(space_op.GetComm()), dJ_coef(dJ_coef) - { - // Construct the system matrices defining the linear operator. PEC boundaries are - // handled simply by setting diagonal entries of the mass matrix for the corresponding - // dofs. Because the Dirichlet BC is always homogeneous, no special elimination is - // required on the RHS. Diagonal entries are set in M (so M is non-singular). - K = space_op.GetStiffnessMatrix(Operator::DIAG_ZERO); - C = space_op.GetDampingMatrix(Operator::DIAG_ZERO); - M = space_op.GetMassMatrix(Operator::DIAG_ONE); - - // Set up RHS vector for the current source term: -g'(t) J, where g(t) handles the time - // dependence. - space_op.GetExcitationVector(NegJ); - RHS.SetSize(NegJ.Size()); - RHS.UseDevice(true); - - // Set up linear solvers. - { - auto pcg = std::make_unique>(comm, 0); - pcg->SetInitialGuess(iodata.solver.linear.initial_guess); - pcg->SetRelTol(iodata.solver.linear.tol); - pcg->SetAbsTol(std::numeric_limits::epsilon()); - pcg->SetMaxIter(iodata.solver.linear.max_it); - auto jac = std::make_unique>(comm); - kspM = std::make_unique(std::move(pcg), std::move(jac)); - kspM->SetOperators(*M, *M); - } - { - // For explicit schemes, recommended to just use cheaper preconditioners. Otherwise, - // use AMS or a direct solver. The system matrix is formed as a sequence of matrix - // vector products, and is only assembled for preconditioning. - ConfigureLinearSolver = [this, &iodata, &space_op](double a0, double a1) - { - // Configure the system matrix and also the matrix (matrices) from which the - // preconditioner will be constructed. - A = space_op.GetSystemMatrix(a0, a1, 1.0, K.get(), C.get(), M.get()); - B = space_op.GetPreconditionerMatrix(a0, a1, 1.0, 0.0); - - // Configure the solver. - if (!kspA) - { - kspA = std::make_unique(iodata, space_op.GetNDSpaces(), - &space_op.GetH1Spaces()); - } - kspA->SetOperators(*A, *B); - }; - } - } - - void FormRHS(const Vector &u, const Vector &du, Vector &rhs) const - { - // Multiply: rhs = -(K u + C du) - g'(t) J. - K->Mult(u, rhs); - if (C) - { - C->AddMult(du, rhs, 1.0); - } - linalg::AXPBYPCZ(-1.0, rhs, dJ_coef(t), NegJ, 0.0, rhs); - } - - void Mult(const Vector &u, const Vector &du, Vector &ddu) const override - { - // Solve: M ddu = -(K u + C du) - g'(t) J. - if (kspM->NumTotalMult() == 0) - { - // Operators have already been set in constructor. - ddu = 0.0; - } - FormRHS(u, du, RHS); - kspM->Mult(RHS, ddu); - } - - void ImplicitSolve(const double a0, const double a1, const Vector &u, const Vector &du, - Vector &k) override - { - // Solve: (a0 K + a1 C + M) k = -(K u + C du) - g'(t) J, where a0 may be 0 in the - // explicit case. At first iteration, construct the solver. Also don't print a newline - // if already done by the mass matrix solve at the first iteration. - if (!kspA || a0 != a0_ || a1 != a1_) - { - // Configure the linear solver, including the system matrix and also the matrix - // (matrices) from which the preconditioner will be constructed. - ConfigureLinearSolver(a0, a1); - a0_ = a0; - a1_ = a1; - k = 0.0; - } - Mpi::Print("\n"); - FormRHS(u, du, RHS); - kspA->Mult(RHS, k); - } -}; - } // namespace -SecondOrderTimeOperator::SecondOrderTimeOperator(const IoData &iodata, - SpaceOperator &space_op, - std::function &dJ_coef) -{ - // Construct discrete curl matrix for B-field time integration. - Curl = &space_op.GetCurlMatrix(); - - // Allocate space for solution vectors. - E.SetSize(Curl->Width()); - dE.SetSize(Curl->Width()); - En.SetSize(Curl->Width()); - B.SetSize(Curl->Height()); - E.UseDevice(true); - dE.UseDevice(true); - En.UseDevice(true); - B.UseDevice(true); - - // Create ODE solver for 2nd-order IVP. - mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::EXPLICIT; - switch (iodata.solver.transient.type) - { - case config::TransientSolverData::Type::GEN_ALPHA: - case config::TransientSolverData::Type::DEFAULT: - { - constexpr double rho_inf = 1.0; - ode = std::make_unique(rho_inf); - type = mfem::TimeDependentOperator::IMPLICIT; - } - break; - case config::TransientSolverData::Type::NEWMARK: - { - constexpr double beta = 0.25, gamma = 0.5; - ode = std::make_unique(beta, gamma); - type = mfem::TimeDependentOperator::IMPLICIT; - } - break; - case config::TransientSolverData::Type::CENTRAL_DIFF: - { - ode = std::make_unique(); - type = mfem::TimeDependentOperator::EXPLICIT; - } - break; - } - - // Set up time-dependent operator for 2nd-order curl-curl equation for E. - op = - std::make_unique(iodata, space_op, dJ_coef, 0.0, type); -} - -const KspSolver &SecondOrderTimeOperator::GetLinearSolver() const -{ - const auto &curlcurl = dynamic_cast(*op); - MFEM_VERIFY(curlcurl.kspA, - "No linear solver for time-depdendent operator has been constructed!\n"); - return *curlcurl.kspA; -} - -double SecondOrderTimeOperator::GetMaxTimeStep() const -{ - const auto &curlcurl = dynamic_cast(*op); - MPI_Comm comm = curlcurl.comm; - const Operator &M = *curlcurl.M; - const Operator &K = *curlcurl.K; - - // Solver for M⁻¹. - constexpr double lin_tol = 1.0e-9; - constexpr int max_lin_it = 10000; - CgSolver pcg(comm, 0); - pcg.SetRelTol(lin_tol); - pcg.SetMaxIter(max_lin_it); - pcg.SetOperator(M); - JacobiSmoother jac(comm); - jac.SetOperator(M); - pcg.SetPreconditioner(jac); - - // Power iteration to estimate largest eigenvalue of undamped system matrix M⁻¹ K (can use - // Hermitian eigenvalue solver as M, K are SPD). - ProductOperator op(pcg, K); - double lam = linalg::SpectralNorm(comm, op, true); - MFEM_VERIFY(lam > 0.0, "Error during power iteration, λ = " << lam << "!"); - return 2.0 / std::sqrt(lam); -} - -void SecondOrderTimeOperator::Init(double &dt) -{ - // Always use zero initial conditions. - E = 0.0; - dE = 0.0; - B = 0.0; - ode->Init(*op); -} - -void SecondOrderTimeOperator::Step(double &t, double &dt) -{ - // Single time step for E-field. - En = E; - ode->Step(E, dE, t, dt); - - // Trapezoidal integration for B-field: dB/dt = -∇ x E. - En += E; - Curl->AddMult(En, B, -0.5 * dt); -} - -FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef) +TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &dJ_coef) { // Construct discrete curl matrix for B-field time integration. Curl = &space_op.GetCurlMatrix(); @@ -463,25 +237,32 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat E.MakeRef(sol, size_E); // SUNDIALS adaptive time-stepping parameters. - adapt_dt = iodata.solver.transient.adaptive_dt; + adapt_dt = true; rel_tol = iodata.solver.transient.rel_tol; abs_tol = iodata.solver.transient.abs_tol; order = iodata.solver.transient.order; - // Minimum RK order is 2. - order = std::max(order, 2); // Create ODE solver for 1st-order IVP. - mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::EXPLICIT; + mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; switch (iodata.solver.transient.type) { + case config::TransientSolverData::Type::GEN_ALPHA: + case config::TransientSolverData::Type::DEFAULT: + { + constexpr double rho_inf = 1.0; + use_mfem_integrator = true; + ode = std::make_unique(rho_inf); + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); + } + break; case config::TransientSolverData::Type::ARKODE: + case config::TransientSolverData::Type::RUNGE_KUTTA: { #if defined(MFEM_USE_SUNDIALS) // SUNDIALS ARKODE solver. std::unique_ptr arkode; arkode = std::make_unique(space_op.GetComm(), mfem::ARKStepSolver::IMPLICIT); - type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); // Initialize ARKODE. @@ -490,19 +271,23 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat arkode->UseMFEMLinearSolver(); // Implicit solve is linear and J is not time-dependent. ARKStepSetLinear(arkode->GetMem(), 0); - // Maximum IRK order is 5. - order = std::min(order, 5); // Relative and absolute tolerances. arkode->SetSStolerances(rel_tol, abs_tol); // Set the order of the RK scheme. ARKStepSetOrder(arkode->GetMem(), order); + if (iodata.solver.transient.type == config::TransientSolverData::Type::RUNGE_KUTTA) + { + adapt_dt = false; + } // Set the ODE solver to ARKODE. ode = std::move(arkode); +#else + MFEM_ABORT("Solver was not built with SUNDIALS support, please choose a " + "different transient solver type!"); #endif } break; case config::TransientSolverData::Type::CVODE: - case config::TransientSolverData::Type::DEFAULT: { #if defined(MFEM_USE_SUNDIALS) // SUNDIALS CVODE solver. @@ -519,19 +304,21 @@ FirstOrderTimeOperator::FirstOrderTimeOperator(const IoData &iodata, SpaceOperat cvode->UseMFEMLinearSolver(); // Set the max order of the multistep scheme. // CV_BDF can go up to 5, but >= 3 is not unconditionally stable. - order = std::min(order, 5); cvode->SetMaxOrder(order); // Set the max number of steps allowed in one CVODE step() call. cvode->SetMaxNSteps(10000); //default 500 // Set the ODE solver to CVODE. ode = std::move(cvode); +#else + MFEM_ABORT("Solver was not built with SUNDIALS support, please choose a " + "different transient solver type!"); #endif } break; } } -const KspSolver &FirstOrderTimeOperator::GetLinearSolver() const +const KspSolver &TimeOperator::GetLinearSolver() const { const auto &firstOrder = dynamic_cast(*op); if (isExplicit()) @@ -548,7 +335,7 @@ const KspSolver &FirstOrderTimeOperator::GetLinearSolver() const } } -double FirstOrderTimeOperator::GetMaxTimeStep() const +double TimeOperator::GetMaxTimeStep() const { const auto &firstOrder = dynamic_cast(*op); MPI_Comm comm = firstOrder.comm; @@ -574,11 +361,15 @@ double FirstOrderTimeOperator::GetMaxTimeStep() const return 2.0 / std::sqrt(lam); } -void FirstOrderTimeOperator::Init(double &dt) +void TimeOperator::Init(double &dt) { // Always use zero initial conditions. sol = 0.0; B = 0.0; + if (use_mfem_integrator) + { + ode->Init(*op); + } #if defined(MFEM_USE_SUNDIALS) if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) { @@ -591,7 +382,7 @@ void FirstOrderTimeOperator::Init(double &dt) #endif } -void FirstOrderTimeOperator::Step(double &t, double &dt) +void TimeOperator::Step(double &t, double &dt) { En = E; double dt_input = dt; @@ -604,7 +395,7 @@ void FirstOrderTimeOperator::Step(double &t, double &dt) Curl->AddMult(En, B, -0.5 * dt); } -void FirstOrderTimeOperator::PrintStats() +void TimeOperator::PrintStats() { #if defined(MFEM_USE_SUNDIALS) if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) @@ -656,7 +447,6 @@ void FirstOrderTimeOperator::PrintStats() Mpi::Print(" Number of error test failures: {:d}\n", netfails); Mpi::Print("\n"); } - #endif } diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index 6e3929d33..c32e72f52 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -18,91 +18,13 @@ class IoData; class SpaceOperator; // -// Abstract class handling temporal discretization of the governing equations. +// A class handling temporal discretization of the governing equations. // class TimeOperator -{ - protected: - Vector E, B; - public: - TimeOperator() {}; - ~TimeOperator() {}; - - // Access solution vectors for E- and B-fields. - virtual const Vector &GetE() const { return E; } - virtual const Vector &GetB() const { return B; } - - // Return the linear solver associated with the implicit or explicit time integrator. - virtual const KspSolver &GetLinearSolver() const = 0; - - // Return if the time integration scheme explicit or implicit. - virtual bool isExplicit() const = 0; - - // Estimate the maximum stable time step based on the maximum eigenvalue of the - // undamped system matrix M⁻¹ K. - virtual double GetMaxTimeStep() const = 0; - - // Initialize time integrators and set 0 initial conditions. - virtual void Init(double &dt) = 0; - - // Perform time step from t -> t + dt. - virtual void Step(double &t, double &dt) = 0; - - // Print ODE integrator statistics. - virtual void PrintStats() {}; -}; - -// -// A class handling the second order ODE form of the governing equations. -// -class SecondOrderTimeOperator : public TimeOperator -{ -private: - // Additional vector storage. - Vector dE, En; - - // Time integrator for the curl-curl E-field formulation. - std::unique_ptr ode; - - // Time-dependent operator for the E-field. - std::unique_ptr op; - - // Discrete curl for B-field time integration (not owned). - const Operator *Curl; - -public: - SecondOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef); - - // Access E-field time derivative - const Vector &GetEdot() const { return dE; } - - // Return the linear solver associated with the implicit or explicit time integrator. - const KspSolver &GetLinearSolver() const; - - // Return if the time integration scheme explicit or implicit. - bool isExplicit() const { return op->isExplicit(); } - - // Estimate the maximum stable time step based on the maximum eigenvalue of the - // undamped system matrix M⁻¹ K. - double GetMaxTimeStep() const; - - // Initialize time integrators and set 0 initial conditions. - void Init(double &dt); - - // Perform time step from t -> t + dt. - void Step(double &t, double &dt); - -}; - -// -// A class handling the first order ODE system form of the governing equations. -// -class FirstOrderTimeOperator : public TimeOperator { private: // Solution vector storage. - Vector sol, En; + Vector E, B, sol, En; // Time integrator for the first order ODE system. std::unique_ptr ode; @@ -114,13 +36,18 @@ class FirstOrderTimeOperator : public TimeOperator int order; bool adapt_dt; double rel_tol, abs_tol; + bool use_mfem_integrator = false; // Discrete curl for B-field time integration (not owned). const Operator *Curl; public: - FirstOrderTimeOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef); + TimeOperator(const IoData &iodata, SpaceOperator &space_op, + std::function &dJ_coef); + + // Access solution vectors for E- and B-fields. + virtual const Vector &GetE() const { return E; } + virtual const Vector &GetB() const { return B; } // Return the linear solver associated with the implicit or explicit time integrator. const KspSolver &GetLinearSolver() const; diff --git a/palace/utils/configfile.cpp b/palace/utils/configfile.cpp index 6f5f95d84..5acca9c65 100644 --- a/palace/utils/configfile.cpp +++ b/palace/utils/configfile.cpp @@ -1607,8 +1607,7 @@ void MagnetostaticSolverData::SetUp(json &solver) PALACE_JSON_SERIALIZE_ENUM(TransientSolverData::Type, {{TransientSolverData::Type::DEFAULT, "Default"}, {TransientSolverData::Type::GEN_ALPHA, "GeneralizedAlpha"}, - {TransientSolverData::Type::NEWMARK, "NewmarkBeta"}, - {TransientSolverData::Type::CENTRAL_DIFF, "CentralDifference"}, + {TransientSolverData::Type::RUNGE_KUTTA, "RungeKutta"}, {TransientSolverData::Type::CVODE, "CVODE"}, {TransientSolverData::Type::ARKODE, "ARKODE"}}) PALACE_JSON_SERIALIZE_ENUM( @@ -1642,7 +1641,6 @@ void TransientSolverData::SetUp(json &solver) delta_t = transient->at("TimeStep"); // Required delta_post = transient->value("SaveStep", delta_post); order = transient->value("Order", order); - adaptive_dt = transient->value("AdaptiveTimeStep", adaptive_dt); rel_tol = transient->value("RelTol", rel_tol); abs_tol = transient->value("AbsTol", abs_tol); @@ -1655,7 +1653,6 @@ void TransientSolverData::SetUp(json &solver) transient->erase("TimeStep"); transient->erase("SaveStep"); transient->erase("Order"); - transient->erase("AdaptiveTimeStep"); transient->erase("RelTol"); transient->erase("AbsTol"); MFEM_VERIFY(transient->empty(), @@ -1673,7 +1670,6 @@ void TransientSolverData::SetUp(json &solver) std::cout << "TimeStep: " << delta_t << '\n'; std::cout << "SaveStep: " << delta_post << '\n'; std::cout << "Order: " << order << '\n'; - std::cout << "AdaptiveTimeStep: " << adaptive_dt << '\n'; std::cout << "RelTol: " << rel_tol << '\n'; std::cout << "AbsTol: " << abs_tol << '\n'; } diff --git a/palace/utils/configfile.hpp b/palace/utils/configfile.hpp index 7bd017f58..1ce6940a7 100644 --- a/palace/utils/configfile.hpp +++ b/palace/utils/configfile.hpp @@ -743,8 +743,7 @@ struct TransientSolverData { DEFAULT, GEN_ALPHA, - NEWMARK, - CENTRAL_DIFF, + RUNGE_KUTTA, ARKODE, CVODE }; @@ -777,14 +776,11 @@ struct TransientSolverData // RK scheme order for SUNDIALS ARKODE integrators. // Max order for SUNDIALS CVODE integrator. - int order = 2; - - // Adaptive time-stepping for SUNDIALS ARKODE integrators - bool adaptive_dt = true; + int order = -1;//2 // Adaptive time-stepping tolerances - double rel_tol = 1e-4; - double abs_tol = 1e-9; + double rel_tol = -1;//1e-4; + double abs_tol = -1;//1e-9; void SetUp(json &solver); }; diff --git a/palace/utils/iodata.cpp b/palace/utils/iodata.cpp index f2c5b6818..f43d3b52e 100644 --- a/palace/utils/iodata.cpp +++ b/palace/utils/iodata.cpp @@ -324,9 +324,7 @@ void IoData::CheckConfiguration() // Resolve default values in configuration file. if (solver.linear.type == config::LinearSolverData::Type::DEFAULT) { - if (problem.type == config::ProblemData::Type::ELECTROSTATIC || - (problem.type == config::ProblemData::Type::TRANSIENT && - solver.transient.type == config::TransientSolverData::Type::CENTRAL_DIFF)) + if (problem.type == config::ProblemData::Type::ELECTROSTATIC) { solver.linear.type = config::LinearSolverData::Type::BOOMER_AMG; } @@ -427,6 +425,72 @@ void IoData::CheckConfiguration() problem.type == config::ProblemData::Type::MAGNETOSTATIC || problem.type == config::ProblemData::Type::TRANSIENT); } + if (problem.type == config::ProblemData::Type::TRANSIENT) + { + if (solver.transient.type == config::TransientSolverData::Type::GEN_ALPHA || + solver.transient.type == config::TransientSolverData::Type::DEFAULT) + { + if (solver.transient.rel_tol > 0 || solver.transient.abs_tol > 0) + { + Mpi::Warning("Generalized alpha transient solver does not use relative " + "and absolute tolerance parameters!\n"); + } + if (solver.transient.order > 0) + { + Mpi::Warning("Generalized alpha transient solver does not use order parameter!\n"); + } + } + else if (solver.transient.type == config::TransientSolverData::Type::CVODE) + { + if (solver.transient.rel_tol < 0) + { + solver.transient.rel_tol = 1e-4; + } + if (solver.transient.abs_tol < 0) + { + solver.transient.abs_tol = 1e-9; + } + if (solver.transient.order < 0) + { + solver.transient.order = 2; + } + else if (solver.transient.order < 2) + { + Mpi::Warning("CVODE transient solver order cannot be less than 2!\n"); + solver.transient.order = 2; + } + else if (solver.transient.order > 5) + { + Mpi::Warning("CVODE transient solver order cannot be greater than 5!\n"); + solver.transient.order = 5; + } + } + else // ARKODE and RUNGE_KUTTA + { + if (solver.transient.rel_tol < 0) + { + solver.transient.rel_tol = 1e-4; + } + if (solver.transient.abs_tol < 0) + { + solver.transient.abs_tol = 1e-9; + } + if (solver.transient.order < 0) + { + solver.transient.order = 3; + } + else if (solver.transient.order < 2) + { + Mpi::Warning("Runge-Kutta/ARKODE transient solver order cannot be less than 2!\n"); + solver.transient.order = 2; + } + else if (solver.transient.order > 5) + { + Mpi::Warning("Runge-Kutta/ARKODE transient solver order cannot be greater than 5!\n"); + solver.transient.order = 5; + } + } + } // Configure settings for quadrature rules and partial assembly. BilinearForm::pa_order_threshold = solver.pa_order_threshold; diff --git a/scripts/schema/config/solver.json b/scripts/schema/config/solver.json index 7dadcf4c8..5d19339ec 100644 --- a/scripts/schema/config/solver.json +++ b/scripts/schema/config/solver.json @@ -68,10 +68,9 @@ "MaxTime": { "type": "number" }, "TimeStep": { "type": "number" }, "SaveStep": { "type": "integer" }, - "AdaptiveTimeStep": {"type": "boolean"}, - "Order": {"type": "integer", "minimum": 1}, - "RelTol": {"type": "number", "minimum": 0.0}, - "AbsTol": {"type": "number", "minimum": 0.0} + "Order": {"type": "integer", "minimum": 2}, + "RelTol": {"type": "number", "exclusiveMinimum": 0.0}, + "AbsTol": {"type": "number", "exclusiveMinimum": 0.0} } }, "Electrostatic": From 937fb471ca359264e6e2a2d5674fc4d85f0cc9ff Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 19:51:49 +0000 Subject: [PATCH 10/32] Update reference for transient solver tests --- .../examples/ref/coaxial/matched/domain-E.csv | 400 +++++++++--------- .../ref/coaxial/matched/error-indicators.csv | 2 +- test/examples/ref/coaxial/matched/port-I.csv | 400 +++++++++--------- test/examples/ref/coaxial/matched/port-V.csv | 400 +++++++++--------- test/examples/ref/coaxial/open/domain-E.csv | 400 +++++++++--------- .../ref/coaxial/open/error-indicators.csv | 2 +- test/examples/ref/coaxial/open/port-I.csv | 400 +++++++++--------- test/examples/ref/coaxial/open/port-V.csv | 400 +++++++++--------- 8 files changed, 1202 insertions(+), 1202 deletions(-) diff --git a/test/examples/ref/coaxial/matched/domain-E.csv b/test/examples/ref/coaxial/matched/domain-E.csv index 21a9fe67d..192f14fed 100644 --- a/test/examples/ref/coaxial/matched/domain-E.csv +++ b/test/examples/ref/coaxial/matched/domain-E.csv @@ -1,202 +1,202 @@ t (ns), E_elec (J), E_mag (J), E_cap (J), E_ind (J) 0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, +2.620423449e-13, +2.405186616e-13, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-02, +2.130484507e-12, +2.258001913e-12, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-02, +5.280441196e-12, +5.252502459e-12, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-02, +5.723485707e-12, +5.889336112e-12, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-02, +1.384423851e-11, +1.351752176e-11, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-02, +1.264406630e-10, +1.273520868e-10, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-02, +7.248276845e-10, +7.322638095e-10, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-02, +2.826288063e-09, +2.865189180e-09, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-02, +8.472578774e-09, +8.624044305e-09, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-02, +2.067791389e-08, +2.112506274e-08, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-02, +4.204801356e-08, +4.310959893e-08, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-02, +7.139216297e-08, +7.352519985e-08, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-02, +9.984652933e-08, +1.034135993e-07, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-02, +1.129356653e-07, +1.176883153e-07, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-02, +1.116885029e-07, +1.163252374e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-02, +1.680676068e-07, +1.704654187e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-02, +5.145121071e-07, +5.145849915e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-02, +1.625634693e-06, +1.632515993e-06, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-02, +4.189260303e-06, +4.233144612e-06, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-01, +8.834283227e-06, +8.979142522e-06, +0.000000000e+00, +0.000000000e+00 - 1.050000000e-01, +1.557257842e-05, +1.591718869e-05, +0.000000000e+00, +0.000000000e+00 - 1.100000000e-01, +2.318792918e-05, +2.383893340e-05, +0.000000000e+00, +0.000000000e+00 - 1.150000000e-01, +2.921180439e-05, +3.021934654e-05, +0.000000000e+00, +0.000000000e+00 - 1.200000000e-01, +3.137262067e-05, +3.264253087e-05, +0.000000000e+00, +0.000000000e+00 - 1.250000000e-01, +3.101355047e-05, +3.225591444e-05, +0.000000000e+00, +0.000000000e+00 - 1.300000000e-01, +3.761730158e-05, +3.843217751e-05, +0.000000000e+00, +0.000000000e+00 - 1.350000000e-01, +7.158794951e-05, +7.177794011e-05, +0.000000000e+00, +0.000000000e+00 - 1.400000000e-01, +1.611519268e-04, +1.612562358e-04, +0.000000000e+00, +0.000000000e+00 - 1.450000000e-01, +3.305914672e-04, +3.324397053e-04, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-01, +5.820784545e-04, +5.889630356e-04, +0.000000000e+00, +0.000000000e+00 - 1.550000000e-01, +8.805796322e-04, +8.966101221e-04, +0.000000000e+00, +0.000000000e+00 - 1.600000000e-01, +1.155885869e-03, +1.184347393e-03, +0.000000000e+00, +0.000000000e+00 - 1.650000000e-01, +1.331885944e-03, +1.373024871e-03, +0.000000000e+00, +0.000000000e+00 - 1.700000000e-01, +1.378531485e-03, +1.427869636e-03, +0.000000000e+00, +0.000000000e+00 - 1.750000000e-01, +1.362174796e-03, +1.410730868e-03, +0.000000000e+00, +0.000000000e+00 - 1.800000000e-01, +1.458232463e-03, +1.495509375e-03, +0.000000000e+00, +0.000000000e+00 - 1.850000000e-01, +1.899735491e-03, +1.918963559e-03, +0.000000000e+00, +0.000000000e+00 - 1.900000000e-01, +2.868535496e-03, +2.872019129e-03, +0.000000000e+00, +0.000000000e+00 - 1.950000000e-01, +4.377346611e-03, +4.378882948e-03, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-01, +6.212942793e-03, +6.234992736e-03, +0.000000000e+00, +0.000000000e+00 - 2.050000000e-01, +7.991627679e-03, +8.057270020e-03, +0.000000000e+00, +0.000000000e+00 - 2.100000000e-01, +9.319711662e-03, +9.442368650e-03, +0.000000000e+00, +0.000000000e+00 - 2.150000000e-01, +9.985360221e-03, +1.016109933e-02, +0.000000000e+00, +0.000000000e+00 - 2.200000000e-01, +1.007719028e-02, +1.028379892e-02, +0.000000000e+00, +0.000000000e+00 - 2.250000000e-01, +9.955563928e-03, +1.015955967e-02, +0.000000000e+00, +0.000000000e+00 - 2.300000000e-01, +1.008210801e-02, +1.025088038e-02, +0.000000000e+00, +0.000000000e+00 - 2.350000000e-01, +1.079466875e-02, +1.090827693e-02, +0.000000000e+00, +0.000000000e+00 - 2.400000000e-01, +1.214730678e-02, +1.220461958e-02, +0.000000000e+00, +0.000000000e+00 - 2.450000000e-01, +1.389708682e-02, +1.391385667e-02, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-01, +1.563542931e-02, +1.563587733e-02, +0.000000000e+00, +0.000000000e+00 - 2.550000000e-01, +1.698422715e-02, +1.699059057e-02, +0.000000000e+00, +0.000000000e+00 - 2.600000000e-01, +1.775122294e-02, +1.777605233e-02, +0.000000000e+00, +0.000000000e+00 - 2.650000000e-01, +1.797483227e-02, +1.801878136e-02, +0.000000000e+00, +0.000000000e+00 - 2.700000000e-01, +1.785699356e-02, +1.791183841e-02, +0.000000000e+00, +0.000000000e+00 - 2.750000000e-01, +1.763968267e-02, +1.769402598e-02, +0.000000000e+00, +0.000000000e+00 - 2.800000000e-01, +1.749662873e-02, +1.754119018e-02, +0.000000000e+00, +0.000000000e+00 - 2.850000000e-01, +1.748652229e-02, +1.751695185e-02, +0.000000000e+00, +0.000000000e+00 - 2.900000000e-01, +1.757123608e-02, +1.758809129e-02, +0.000000000e+00, +0.000000000e+00 - 2.950000000e-01, +1.766998564e-02, +1.767687536e-02, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-01, +1.771240811e-02, +1.771376634e-02, +0.000000000e+00, +0.000000000e+00 - 3.050000000e-01, +1.766674396e-02, +1.766631048e-02, +0.000000000e+00, +0.000000000e+00 - 3.100000000e-01, +1.753966658e-02, +1.753998010e-02, +0.000000000e+00, +0.000000000e+00 - 3.150000000e-01, +1.735875735e-02, +1.736129709e-02, +0.000000000e+00, +0.000000000e+00 - 3.200000000e-01, +1.715212543e-02, +1.715746687e-02, +0.000000000e+00, +0.000000000e+00 - 3.250000000e-01, +1.693505899e-02, +1.694260284e-02, +0.000000000e+00, +0.000000000e+00 - 3.300000000e-01, +1.670682209e-02, +1.671416897e-02, +0.000000000e+00, +0.000000000e+00 - 3.350000000e-01, +1.645600890e-02, +1.645862685e-02, +0.000000000e+00, +0.000000000e+00 - 3.400000000e-01, +1.617093781e-02, +1.616305853e-02, +0.000000000e+00, +0.000000000e+00 - 3.450000000e-01, +1.585083787e-02, +1.582818204e-02, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-01, +1.551276534e-02, +1.547662163e-02, +0.000000000e+00, +0.000000000e+00 - 3.550000000e-01, +1.518894800e-02, +1.514966559e-02, +0.000000000e+00, +0.000000000e+00 - 3.600000000e-01, +1.491162097e-02, +1.488860703e-02, +0.000000000e+00, +0.000000000e+00 - 3.650000000e-01, +1.468858970e-02, +1.470450501e-02, +0.000000000e+00, +0.000000000e+00 - 3.700000000e-01, +1.448088588e-02, +1.455040131e-02, +0.000000000e+00, +0.000000000e+00 - 3.750000000e-01, +1.419868132e-02, +1.431606456e-02, +0.000000000e+00, +0.000000000e+00 - 3.800000000e-01, +1.372725161e-02, +1.385996705e-02, +0.000000000e+00, +0.000000000e+00 - 3.850000000e-01, +1.297981371e-02, +1.307465994e-02, +0.000000000e+00, +0.000000000e+00 - 3.900000000e-01, +1.195479585e-02, +1.195779817e-02, +0.000000000e+00, +0.000000000e+00 - 3.950000000e-01, +1.076386339e-02, +1.064706019e-02, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-01, +9.604827899e-03, +9.386781121e-03, +0.000000000e+00, +0.000000000e+00 - 4.050000000e-01, +8.681040561e-03, +8.428101978e-03, +0.000000000e+00, +0.000000000e+00 - 4.100000000e-01, +8.102380427e-03, +7.906022539e-03, +0.000000000e+00, +0.000000000e+00 - 4.150000000e-01, +7.821118040e-03, +7.759444086e-03, +0.000000000e+00, +0.000000000e+00 - 4.200000000e-01, +7.643644601e-03, +7.745251608e-03, +0.000000000e+00, +0.000000000e+00 - 4.250000000e-01, +7.319370683e-03, +7.548395591e-03, +0.000000000e+00, +0.000000000e+00 - 4.300000000e-01, +6.663377862e-03, +6.934390576e-03, +0.000000000e+00, +0.000000000e+00 - 4.350000000e-01, +5.647819379e-03, +5.863578948e-03, +0.000000000e+00, +0.000000000e+00 - 4.400000000e-01, +4.413412247e-03, +4.506459532e-03, +0.000000000e+00, +0.000000000e+00 - 4.450000000e-01, +3.197467589e-03, +3.155166078e-03, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-01, +2.220822838e-03, +2.083282042e-03, +0.000000000e+00, +0.000000000e+00 - 4.550000000e-01, +1.595004577e-03, +1.430075930e-03, +0.000000000e+00, +0.000000000e+00 - 4.600000000e-01, +1.293580221e-03, +1.164053344e-03, +0.000000000e+00, +0.000000000e+00 - 4.650000000e-01, +1.191755846e-03, +1.131361584e-03, +0.000000000e+00, +0.000000000e+00 - 4.700000000e-01, +1.142055894e-03, +1.149472829e-03, +0.000000000e+00, +0.000000000e+00 - 4.750000000e-01, +1.041605543e-03, +1.090954819e-03, +0.000000000e+00, +0.000000000e+00 - 4.800000000e-01, +8.607669459e-04, +9.195083148e-04, +0.000000000e+00, +0.000000000e+00 - 4.850000000e-01, +6.300406801e-04, +6.740804234e-04, +0.000000000e+00, +0.000000000e+00 - 4.900000000e-01, +4.039823507e-04, +4.241154918e-04, +0.000000000e+00, +0.000000000e+00 - 4.950000000e-01, +2.267441692e-04, +2.265089812e-04, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-01, +1.150301038e-04, +1.040527202e-04, +0.000000000e+00, +0.000000000e+00 - 5.050000000e-01, +6.014028919e-05, +4.766034878e-05, +0.000000000e+00, +0.000000000e+00 - 5.100000000e-01, +4.075827462e-05, +3.211978191e-05, +0.000000000e+00, +0.000000000e+00 - 5.150000000e-01, +3.611321127e-05, +3.248737681e-05, +0.000000000e+00, +0.000000000e+00 - 5.200000000e-01, +3.323312925e-05, +3.323042725e-05, +0.000000000e+00, +0.000000000e+00 - 5.250000000e-01, +2.758242080e-05, +2.914715414e-05, +0.000000000e+00, +0.000000000e+00 - 5.300000000e-01, +1.988593674e-05, +2.149642738e-05, +0.000000000e+00, +0.000000000e+00 - 5.350000000e-01, +1.245018988e-05, +1.344926557e-05, +0.000000000e+00, +0.000000000e+00 - 5.400000000e-01, +6.900760903e-06, +7.272314035e-06, +0.000000000e+00, +0.000000000e+00 - 5.450000000e-01, +3.594268756e-06, +3.590286797e-06, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-01, +2.025594492e-06, +1.895747044e-06, +0.000000000e+00, +0.000000000e+00 - 5.550000000e-01, +1.450803424e-06, +1.336584058e-06, +0.000000000e+00, +0.000000000e+00 - 5.600000000e-01, +1.288414898e-06, +1.231080102e-06, +0.000000000e+00, +0.000000000e+00 - 5.650000000e-01, +1.228533368e-06, +1.217146138e-06, +0.000000000e+00, +0.000000000e+00 - 5.700000000e-01, +1.167110946e-06, +1.179240209e-06, +0.000000000e+00, +0.000000000e+00 - 5.750000000e-01, +1.098603154e-06, +1.119336256e-06, +0.000000000e+00, +0.000000000e+00 - 5.800000000e-01, +1.039442157e-06, +1.063710682e-06, +0.000000000e+00, +0.000000000e+00 - 5.850000000e-01, +9.953501530e-07, +1.023204798e-06, +0.000000000e+00, +0.000000000e+00 - 5.900000000e-01, +9.576087800e-07, +9.891895873e-07, +0.000000000e+00, +0.000000000e+00 - 5.950000000e-01, +9.108291166e-07, +9.437325543e-07, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-01, +8.419307523e-07, +8.711457321e-07, +0.000000000e+00, +0.000000000e+00 - 6.050000000e-01, +7.462891533e-07, +7.658692689e-07, +0.000000000e+00, +0.000000000e+00 - 6.100000000e-01, +6.298805187e-07, +6.352690594e-07, +0.000000000e+00, +0.000000000e+00 - 6.150000000e-01, +5.072924620e-07, +4.972431559e-07, +0.000000000e+00, +0.000000000e+00 - 6.200000000e-01, +3.963851955e-07, +3.736634915e-07, +0.000000000e+00, +0.000000000e+00 - 6.250000000e-01, +3.116168757e-07, +2.821676552e-07, +0.000000000e+00, +0.000000000e+00 - 6.300000000e-01, +2.587810075e-07, +2.296994612e-07, +0.000000000e+00, +0.000000000e+00 - 6.350000000e-01, +2.334253504e-07, +2.105917078e-07, +0.000000000e+00, +0.000000000e+00 - 6.400000000e-01, +2.235523498e-07, +2.099176296e-07, +0.000000000e+00, +0.000000000e+00 - 6.450000000e-01, +2.151598927e-07, +2.103254141e-07, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-01, +1.979173154e-07, +1.990209563e-07, +0.000000000e+00, +0.000000000e+00 - 6.550000000e-01, +1.684518527e-07, +1.717956936e-07, +0.000000000e+00, +0.000000000e+00 - 6.600000000e-01, +1.301558602e-07, +1.327698347e-07, +0.000000000e+00, +0.000000000e+00 - 6.650000000e-01, +9.022613703e-08, +9.073825585e-08, +0.000000000e+00, +0.000000000e+00 - 6.700000000e-01, +5.580791946e-08, +5.443082913e-08, +0.000000000e+00, +0.000000000e+00 - 6.750000000e-01, +3.114173498e-08, +2.902107329e-08, +0.000000000e+00, +0.000000000e+00 - 6.800000000e-01, +1.670115327e-08, +1.508875648e-08, +0.000000000e+00, +0.000000000e+00 - 6.850000000e-01, +1.012992827e-08, +9.789408171e-09, +0.000000000e+00, +0.000000000e+00 - 6.900000000e-01, +8.010663433e-09, +9.033568608e-09, +0.000000000e+00, +0.000000000e+00 - 6.950000000e-01, +7.426390430e-09, +9.395925590e-09, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-01, +6.723532653e-09, +9.030559642e-09, +0.000000000e+00, +0.000000000e+00 - 7.050000000e-01, +5.459132804e-09, +7.580046383e-09, +0.000000000e+00, +0.000000000e+00 - 7.100000000e-01, +3.896191770e-09, +5.532868917e-09, +0.000000000e+00, +0.000000000e+00 - 7.150000000e-01, +2.464513895e-09, +3.546597362e-09, +0.000000000e+00, +0.000000000e+00 - 7.200000000e-01, +1.435258683e-09, +2.043365678e-09, +0.000000000e+00, +0.000000000e+00 - 7.250000000e-01, +8.471508171e-10, +1.122248789e-09, +0.000000000e+00, +0.000000000e+00 - 7.300000000e-01, +5.871061358e-10, +6.659230988e-10, +0.000000000e+00, +0.000000000e+00 - 7.350000000e-01, +5.036009873e-10, +4.893147898e-10, +0.000000000e+00, +0.000000000e+00 - 7.400000000e-01, +4.810396266e-10, +4.396520723e-10, +0.000000000e+00, +0.000000000e+00 - 7.450000000e-01, +4.606307784e-10, +4.290309491e-10, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-01, +4.264934027e-10, +4.222169341e-10, +0.000000000e+00, +0.000000000e+00 - 7.550000000e-01, +3.828961208e-10, +4.114937040e-10, +0.000000000e+00, +0.000000000e+00 - 7.600000000e-01, +3.378369987e-10, +3.976253227e-10, +0.000000000e+00, +0.000000000e+00 - 7.650000000e-01, +2.961656171e-10, +3.813862413e-10, +0.000000000e+00, +0.000000000e+00 - 7.700000000e-01, +2.591308442e-10, +3.623875065e-10, +0.000000000e+00, +0.000000000e+00 - 7.750000000e-01, +2.262196844e-10, +3.403004719e-10, +0.000000000e+00, +0.000000000e+00 - 7.800000000e-01, +1.970239321e-10, +3.160047274e-10, +0.000000000e+00, +0.000000000e+00 - 7.850000000e-01, +1.717837308e-10, +2.915916542e-10, +0.000000000e+00, +0.000000000e+00 - 7.900000000e-01, +1.510681198e-10, +2.694953545e-10, +0.000000000e+00, +0.000000000e+00 - 7.950000000e-01, +1.356478877e-10, +2.518757643e-10, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-01, +1.258952795e-10, +2.399608535e-10, +0.000000000e+00, +0.000000000e+00 - 8.050000000e-01, +1.214046802e-10, +2.337376954e-10, +0.000000000e+00, +0.000000000e+00 - 8.100000000e-01, +1.212354059e-10, +2.322153435e-10, +0.000000000e+00, +0.000000000e+00 - 8.150000000e-01, +1.240372927e-10, +2.337927247e-10, +0.000000000e+00, +0.000000000e+00 - 8.200000000e-01, +1.284014259e-10, +2.368117178e-10, +0.000000000e+00, +0.000000000e+00 - 8.250000000e-01, +1.332584316e-10, +2.400198423e-10, +0.000000000e+00, +0.000000000e+00 - 8.300000000e-01, +1.380187249e-10, +2.428423501e-10, +0.000000000e+00, +0.000000000e+00 - 8.350000000e-01, +1.425648355e-10, +2.452914810e-10, +0.000000000e+00, +0.000000000e+00 - 8.400000000e-01, +1.470618610e-10, +2.476857898e-10, +0.000000000e+00, +0.000000000e+00 - 8.450000000e-01, +1.516240653e-10, +2.503835718e-10, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-01, +1.561796040e-10, +2.534131089e-10, +0.000000000e+00, +0.000000000e+00 - 8.550000000e-01, +1.604335331e-10, +2.564048606e-10, +0.000000000e+00, +0.000000000e+00 - 8.600000000e-01, +1.638723482e-10, +2.588566178e-10, +0.000000000e+00, +0.000000000e+00 - 8.650000000e-01, +1.660574334e-10, +2.602235503e-10, +0.000000000e+00, +0.000000000e+00 - 8.700000000e-01, +1.667775945e-10, +2.601022299e-10, +0.000000000e+00, +0.000000000e+00 - 8.750000000e-01, +1.660570572e-10, +2.585515557e-10, +0.000000000e+00, +0.000000000e+00 - 8.800000000e-01, +1.642081508e-10, +2.558716071e-10, +0.000000000e+00, +0.000000000e+00 - 8.850000000e-01, +1.617248535e-10, +2.524909743e-10, +0.000000000e+00, +0.000000000e+00 - 8.900000000e-01, +1.590711023e-10, +2.489862021e-10, +0.000000000e+00, +0.000000000e+00 - 8.950000000e-01, +1.566283055e-10, +2.457430751e-10, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-01, +1.546717379e-10, +2.430048277e-10, +0.000000000e+00, +0.000000000e+00 - 9.050000000e-01, +1.532790265e-10, +2.409225082e-10, +0.000000000e+00, +0.000000000e+00 - 9.100000000e-01, +1.524360172e-10, +2.394200899e-10, +0.000000000e+00, +0.000000000e+00 - 9.150000000e-01, +1.520668717e-10, +2.384190533e-10, +0.000000000e+00, +0.000000000e+00 - 9.200000000e-01, +1.520278905e-10, +2.378366201e-10, +0.000000000e+00, +0.000000000e+00 - 9.250000000e-01, +1.522262819e-10, +2.374850556e-10, +0.000000000e+00, +0.000000000e+00 - 9.300000000e-01, +1.525436744e-10, +2.372870155e-10, +0.000000000e+00, +0.000000000e+00 - 9.350000000e-01, +1.528725902e-10, +2.372010088e-10, +0.000000000e+00, +0.000000000e+00 - 9.400000000e-01, +1.532029587e-10, +2.371100225e-10, +0.000000000e+00, +0.000000000e+00 - 9.450000000e-01, +1.534701064e-10, +2.370059916e-10, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-01, +1.536405663e-10, +2.369194570e-10, +0.000000000e+00, +0.000000000e+00 - 9.550000000e-01, +1.537635936e-10, +2.368058763e-10, +0.000000000e+00, +0.000000000e+00 - 9.600000000e-01, +1.538096186e-10, +2.366825012e-10, +0.000000000e+00, +0.000000000e+00 - 9.650000000e-01, +1.537808834e-10, +2.366014166e-10, +0.000000000e+00, +0.000000000e+00 - 9.700000000e-01, +1.537241609e-10, +2.365490235e-10, +0.000000000e+00, +0.000000000e+00 - 9.750000000e-01, +1.536220032e-10, +2.365269110e-10, +0.000000000e+00, +0.000000000e+00 - 9.800000000e-01, +1.534829149e-10, +2.365631927e-10, +0.000000000e+00, +0.000000000e+00 - 9.850000000e-01, +1.533247813e-10, +2.366531632e-10, +0.000000000e+00, +0.000000000e+00 - 9.900000000e-01, +1.531467327e-10, +2.367804907e-10, +0.000000000e+00, +0.000000000e+00 - 9.950000000e-01, +1.529585792e-10, +2.369392209e-10, +0.000000000e+00, +0.000000000e+00 - 1.000000000e+00, +1.527571997e-10, +2.371327811e-10, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-03, +2.483779150e-13, +2.279766032e-13, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-02, +2.276378059e-12, +2.403226901e-12, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-02, +6.974949774e-12, +6.967633381e-12, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-02, +1.068852323e-11, +1.090294512e-11, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-02, +1.063816272e-11, +1.075641631e-11, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-02, +4.202730563e-11, +4.218693243e-11, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-02, +3.050624355e-10, +3.068827427e-10, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-02, +1.439976958e-09, +1.454945004e-09, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-02, +4.931171162e-09, +5.006388444e-09, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-02, +1.336749762e-08, +1.362500393e-08, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-02, +2.985127508e-08, +3.053107528e-08, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-02, +5.562062711e-08, +5.712646741e-08, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-02, +8.601393272e-08, +8.879943839e-08, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-02, +1.083337530e-07, +1.125125483e-07, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-02, +1.114096581e-07, +1.162695644e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-02, +1.224159817e-07, +1.261101601e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-02, +2.812645825e-07, +2.821379312e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-02, +9.352103649e-07, +9.366000197e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-02, +2.681510288e-06, +2.701397407e-06, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-01, +6.231637746e-06, +6.316047208e-06, +0.000000000e+00, +0.000000000e+00 + 1.050000000e-01, +1.198909448e-05, +1.222067965e-05, +0.000000000e+00, +0.000000000e+00 + 1.100000000e-01, +1.941101090e-05, +1.989808976e-05, +0.000000000e+00, +0.000000000e+00 + 1.150000000e-01, +2.658602817e-05, +2.741744431e-05, +0.000000000e+00, +0.000000000e+00 + 1.200000000e-01, +3.084006910e-05, +3.200448516e-05, +0.000000000e+00, +0.000000000e+00 + 1.250000000e-01, +3.116938025e-05, +3.247495182e-05, +0.000000000e+00, +0.000000000e+00 + 1.300000000e-01, +3.243953094e-05, +3.351770194e-05, +0.000000000e+00, +0.000000000e+00 + 1.350000000e-01, +4.951460936e-05, +5.001117139e-05, +0.000000000e+00, +0.000000000e+00 + 1.400000000e-01, +1.076142984e-04, +1.076244444e-04, +0.000000000e+00, +0.000000000e+00 + 1.450000000e-01, +2.349993729e-04, +2.356504713e-04, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-01, +4.472801363e-04, +4.511525966e-04, +0.000000000e+00, +0.000000000e+00 + 1.550000000e-01, +7.291799861e-04, +7.401192526e-04, +0.000000000e+00, +0.000000000e+00 + 1.600000000e-01, +1.026236746e-03, +1.048199560e-03, +0.000000000e+00, +0.000000000e+00 + 1.650000000e-01, +1.259875309e-03, +1.294903116e-03, +0.000000000e+00, +0.000000000e+00 + 1.700000000e-01, +1.369839073e-03, +1.415939252e-03, +0.000000000e+00, +0.000000000e+00 + 1.750000000e-01, +1.369485226e-03, +1.419736213e-03, +0.000000000e+00, +0.000000000e+00 + 1.800000000e-01, +1.381796571e-03, +1.425914301e-03, +0.000000000e+00, +0.000000000e+00 + 1.850000000e-01, +1.621678186e-03, +1.650302782e-03, +0.000000000e+00, +0.000000000e+00 + 1.900000000e-01, +2.312297688e-03, +2.322641202e-03, +0.000000000e+00, +0.000000000e+00 + 1.950000000e-01, +3.563511953e-03, +3.563619498e-03, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-01, +5.275801516e-03, +5.284520530e-03, +0.000000000e+00, +0.000000000e+00 + 2.050000000e-01, +7.136188815e-03, +7.177535472e-03, +0.000000000e+00, +0.000000000e+00 + 2.100000000e-01, +8.731595837e-03, +8.825062883e-03, +0.000000000e+00, +0.000000000e+00 + 2.150000000e-01, +9.737443481e-03, +9.888385971e-03, +0.000000000e+00, +0.000000000e+00 + 2.200000000e-01, +1.008554876e-02, +1.028049098e-02, +0.000000000e+00, +0.000000000e+00 + 2.250000000e-01, +1.001406588e-02, +1.022385183e-02, +0.000000000e+00, +0.000000000e+00 + 2.300000000e-01, +9.961472465e-03, +1.015141384e-02, +0.000000000e+00, +0.000000000e+00 + 2.350000000e-01, +1.035426228e-02, +1.049685735e-02, +0.000000000e+00, +0.000000000e+00 + 2.400000000e-01, +1.140025893e-02, +1.148469589e-02, +0.000000000e+00, +0.000000000e+00 + 2.450000000e-01, +1.299651326e-02, +1.303082829e-02, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-01, +1.479431046e-02, +1.479979019e-02, +0.000000000e+00, +0.000000000e+00 + 2.550000000e-01, +1.637602527e-02, +1.637713105e-02, +0.000000000e+00, +0.000000000e+00 + 2.600000000e-01, +1.744307985e-02, +1.745785598e-02, +0.000000000e+00, +0.000000000e+00 + 2.650000000e-01, +1.792074346e-02, +1.795570362e-02, +0.000000000e+00, +0.000000000e+00 + 2.700000000e-01, +1.794283349e-02, +1.799357493e-02, +0.000000000e+00, +0.000000000e+00 + 2.750000000e-01, +1.774733262e-02, +1.780329410e-02, +0.000000000e+00, +0.000000000e+00 + 2.800000000e-01, +1.755237877e-02, +1.760268880e-02, +0.000000000e+00, +0.000000000e+00 + 2.850000000e-01, +1.747556071e-02, +1.751324323e-02, +0.000000000e+00, +0.000000000e+00 + 2.900000000e-01, +1.752173044e-02, +1.754504170e-02, +0.000000000e+00, +0.000000000e+00 + 2.950000000e-01, +1.762394081e-02, +1.763525216e-02, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-01, +1.770122125e-02, +1.770480451e-02, +0.000000000e+00, +0.000000000e+00 + 3.050000000e-01, +1.770089823e-02, +1.770096364e-02, +0.000000000e+00, +0.000000000e+00 + 3.100000000e-01, +1.761188585e-02, +1.761158019e-02, +0.000000000e+00, +0.000000000e+00 + 3.150000000e-01, +1.745399156e-02, +1.745528975e-02, +0.000000000e+00, +0.000000000e+00 + 3.200000000e-01, +1.725731796e-02, +1.726124863e-02, +0.000000000e+00, +0.000000000e+00 + 3.250000000e-01, +1.704460148e-02, +1.705121735e-02, +0.000000000e+00, +0.000000000e+00 + 3.300000000e-01, +1.682291440e-02, +1.683079675e-02, +0.000000000e+00, +0.000000000e+00 + 3.350000000e-01, +1.658511017e-02, +1.659077954e-02, +0.000000000e+00, +0.000000000e+00 + 3.400000000e-01, +1.631818885e-02, +1.631627326e-02, +0.000000000e+00, +0.000000000e+00 + 3.450000000e-01, +1.601466527e-02, +1.599968728e-02, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-01, +1.568230094e-02, +1.565222981e-02, +0.000000000e+00, +0.000000000e+00 + 3.550000000e-01, +1.534683473e-02, +1.530720018e-02, +0.000000000e+00, +0.000000000e+00 + 3.600000000e-01, +1.504314380e-02, +1.500915455e-02, +0.000000000e+00, +0.000000000e+00 + 3.650000000e-01, +1.479452662e-02, +1.478833479e-02, +0.000000000e+00, +0.000000000e+00 + 3.700000000e-01, +1.458743481e-02, +1.462933087e-02, +0.000000000e+00, +0.000000000e+00 + 3.750000000e-01, +1.435624781e-02, +1.445206038e-02, +0.000000000e+00, +0.000000000e+00 + 3.800000000e-01, +1.399345809e-02, +1.412418211e-02, +0.000000000e+00, +0.000000000e+00 + 3.850000000e-01, +1.339069910e-02, +1.351177751e-02, +0.000000000e+00, +0.000000000e+00 + 3.900000000e-01, +1.249765601e-02, +1.255232674e-02, +0.000000000e+00, +0.000000000e+00 + 3.950000000e-01, +1.136895888e-02, +1.131295073e-02, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-01, +1.016652921e-02, +9.993537937e-03, +0.000000000e+00, +0.000000000e+00 + 4.050000000e-01, +9.103338645e-03, +8.857192374e-03, +0.000000000e+00, +0.000000000e+00 + 4.100000000e-01, +8.347474127e-03, +8.111248662e-03, +0.000000000e+00, +0.000000000e+00 + 4.150000000e-01, +7.933878608e-03, +7.797516506e-03, +0.000000000e+00, +0.000000000e+00 + 4.200000000e-01, +7.735052201e-03, +7.755465431e-03, +0.000000000e+00, +0.000000000e+00 + 4.250000000e-01, +7.514232171e-03, +7.687816944e-03, +0.000000000e+00, +0.000000000e+00 + 4.300000000e-01, +7.038763284e-03, +7.301237374e-03, +0.000000000e+00, +0.000000000e+00 + 4.350000000e-01, +6.195135448e-03, +6.449680361e-03, +0.000000000e+00, +0.000000000e+00 + 4.400000000e-01, +5.044090859e-03, +5.203784102e-03, +0.000000000e+00, +0.000000000e+00 + 4.450000000e-01, +3.787601466e-03, +3.810883023e-03, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-01, +2.669008201e-03, +2.571571881e-03, +0.000000000e+00, +0.000000000e+00 + 4.550000000e-01, +1.862694615e-03, +1.702557593e-03, +0.000000000e+00, +0.000000000e+00 + 4.600000000e-01, +1.410110199e-03, +1.256478692e-03, +0.000000000e+00, +0.000000000e+00 + 4.650000000e-01, +1.227392768e-03, +1.130490171e-03, +0.000000000e+00, +0.000000000e+00 + 4.700000000e-01, +1.168487677e-03, +1.144084842e-03, +0.000000000e+00, +0.000000000e+00 + 4.750000000e-01, +1.101819587e-03, +1.134282676e-03, +0.000000000e+00, +0.000000000e+00 + 4.800000000e-01, +9.604108815e-04, +1.018260716e-03, +0.000000000e+00, +0.000000000e+00 + 4.850000000e-01, +7.483644053e-04, +8.018715896e-04, +0.000000000e+00, +0.000000000e+00 + 4.900000000e-01, +5.131445519e-04, +5.454557890e-04, +0.000000000e+00, +0.000000000e+00 + 4.950000000e-01, +3.075299032e-04, +3.164810621e-04, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-01, +1.627725294e-04, +1.558619115e-04, +0.000000000e+00, +0.000000000e+00 + 5.050000000e-01, +8.168847560e-05, +6.900694242e-05, +0.000000000e+00, +0.000000000e+00 + 5.100000000e-01, +4.743409806e-05, +3.649077878e-05, +0.000000000e+00, +0.000000000e+00 + 5.150000000e-01, +3.761161687e-05, +3.154000831e-05, +0.000000000e+00, +0.000000000e+00 + 5.200000000e-01, +3.489565379e-05, +3.333461162e-05, +0.000000000e+00, +0.000000000e+00 + 5.250000000e-01, +3.077554696e-05, +3.179628803e-05, +0.000000000e+00, +0.000000000e+00 + 5.300000000e-01, +2.384003016e-05, +2.556195110e-05, +0.000000000e+00, +0.000000000e+00 + 5.350000000e-01, +1.599901730e-05, +1.733612988e-05, +0.000000000e+00, +0.000000000e+00 + 5.400000000e-01, +9.386789789e-06, +1.004800583e-05, +0.000000000e+00, +0.000000000e+00 + 5.450000000e-01, +4.985084610e-06, +5.131964741e-06, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-01, +2.639920155e-06, +2.546392437e-06, +0.000000000e+00, +0.000000000e+00 + 5.550000000e-01, +1.657497437e-06, +1.523394600e-06, +0.000000000e+00, +0.000000000e+00 + 5.600000000e-01, +1.344855715e-06, +1.256480261e-06, +0.000000000e+00, +0.000000000e+00 + 5.650000000e-01, +1.257239189e-06, +1.223507411e-06, +0.000000000e+00, +0.000000000e+00 + 5.700000000e-01, +1.201136724e-06, +1.201618442e-06, +0.000000000e+00, +0.000000000e+00 + 5.750000000e-01, +1.134182964e-06, +1.149143599e-06, +0.000000000e+00, +0.000000000e+00 + 5.800000000e-01, +1.068513204e-06, +1.088398357e-06, +0.000000000e+00, +0.000000000e+00 + 5.850000000e-01, +1.017040986e-06, +1.040165981e-06, +0.000000000e+00, +0.000000000e+00 + 5.900000000e-01, +9.776891928e-07, +1.004786274e-06, +0.000000000e+00, +0.000000000e+00 + 5.950000000e-01, +9.372039968e-07, +9.674435859e-07, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-01, +8.803555674e-07, +9.100510427e-07, +0.000000000e+00, +0.000000000e+00 + 6.050000000e-01, +7.977625463e-07, +8.212873955e-07, +0.000000000e+00, +0.000000000e+00 + 6.100000000e-01, +6.901011525e-07, +7.020100656e-07, +0.000000000e+00, +0.000000000e+00 + 6.150000000e-01, +5.681561852e-07, +5.654181817e-07, +0.000000000e+00, +0.000000000e+00 + 6.200000000e-01, +4.489787508e-07, +4.323570292e-07, +0.000000000e+00, +0.000000000e+00 + 6.250000000e-01, +3.495583773e-07, +3.235430600e-07, +0.000000000e+00, +0.000000000e+00 + 6.300000000e-01, +2.805050374e-07, +2.518066606e-07, +0.000000000e+00, +0.000000000e+00 + 6.350000000e-01, +2.424218568e-07, +2.176591426e-07, +0.000000000e+00, +0.000000000e+00 + 6.400000000e-01, +2.265213520e-07, +2.100860092e-07, +0.000000000e+00, +0.000000000e+00 + 6.450000000e-01, +2.190339843e-07, +2.119979195e-07, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-01, +2.071794947e-07, +2.075855214e-07, +0.000000000e+00, +0.000000000e+00 + 6.550000000e-01, +1.838963746e-07, +1.881257781e-07, +0.000000000e+00, +0.000000000e+00 + 6.600000000e-01, +1.494100385e-07, +1.538866088e-07, +0.000000000e+00, +0.000000000e+00 + 6.650000000e-01, +1.094733799e-07, +1.119384927e-07, +0.000000000e+00, +0.000000000e+00 + 6.700000000e-01, +7.169698865e-08, +7.162904512e-08, +0.000000000e+00, +0.000000000e+00 + 6.750000000e-01, +4.200032239e-08, +4.022396365e-08, +0.000000000e+00, +0.000000000e+00 + 6.800000000e-01, +2.270925950e-08, +2.058519898e-08, +0.000000000e+00, +0.000000000e+00 + 6.850000000e-01, +1.268263703e-08, +1.134615358e-08, +0.000000000e+00, +0.000000000e+00 + 6.900000000e-01, +8.804829176e-09, +8.759520206e-09, +0.000000000e+00, +0.000000000e+00 + 6.950000000e-01, +7.760056195e-09, +8.877975660e-09, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-01, +7.230838112e-09, +9.013056708e-09, +0.000000000e+00, +0.000000000e+00 + 7.050000000e-01, +6.221780936e-09, +8.111699795e-09, +0.000000000e+00, +0.000000000e+00 + 7.100000000e-01, +4.723812851e-09, +6.321996402e-09, +0.000000000e+00, +0.000000000e+00 + 7.150000000e-01, +3.146831608e-09, +4.279701923e-09, +0.000000000e+00, +0.000000000e+00 + 7.200000000e-01, +1.869303073e-09, +2.546990836e-09, +0.000000000e+00, +0.000000000e+00 + 7.250000000e-01, +1.045271535e-09, +1.375317564e-09, +0.000000000e+00, +0.000000000e+00 + 7.300000000e-01, +6.242024841e-10, +7.350724499e-10, +0.000000000e+00, +0.000000000e+00 + 7.350000000e-01, +4.608359833e-10, +4.584828093e-10, +0.000000000e+00, +0.000000000e+00 + 7.400000000e-01, +4.147564926e-10, +3.699503491e-10, +0.000000000e+00, +0.000000000e+00 + 7.450000000e-01, +3.976204891e-10, +3.507775115e-10, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-01, +3.734389243e-10, +3.444913516e-10, +0.000000000e+00, +0.000000000e+00 + 7.550000000e-01, +3.378112795e-10, +3.344735873e-10, +0.000000000e+00, +0.000000000e+00 + 7.600000000e-01, +2.974002065e-10, +3.203296639e-10, +0.000000000e+00, +0.000000000e+00 + 7.650000000e-01, +2.584031728e-10, +3.041760017e-10, +0.000000000e+00, +0.000000000e+00 + 7.700000000e-01, +2.233682299e-10, +2.865084203e-10, +0.000000000e+00, +0.000000000e+00 + 7.750000000e-01, +1.922530748e-10, +2.667946148e-10, +0.000000000e+00, +0.000000000e+00 + 7.800000000e-01, +1.644924158e-10, +2.450913440e-10, +0.000000000e+00, +0.000000000e+00 + 7.850000000e-01, +1.400042541e-10, +2.226584149e-10, +0.000000000e+00, +0.000000000e+00 + 7.900000000e-01, +1.191861217e-10, +2.014692103e-10, +0.000000000e+00, +0.000000000e+00 + 7.950000000e-01, +1.028306559e-10, +1.836424872e-10, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-01, +9.151822050e-11, +1.706787347e-10, +0.000000000e+00, +0.000000000e+00 + 8.050000000e-01, +8.515004388e-11, +1.629753601e-10, +0.000000000e+00, +0.000000000e+00 + 8.100000000e-01, +8.304806463e-11, +1.599135097e-10, +0.000000000e+00, +0.000000000e+00 + 8.150000000e-01, +8.401201009e-11, +1.601016306e-10, +0.000000000e+00, +0.000000000e+00 + 8.200000000e-01, +8.663906551e-11, +1.618813608e-10, +0.000000000e+00, +0.000000000e+00 + 8.250000000e-01, +8.974905056e-11, +1.638472006e-10, +0.000000000e+00, +0.000000000e+00 + 8.300000000e-01, +9.262071538e-11, +1.652237190e-10, +0.000000000e+00, +0.000000000e+00 + 8.350000000e-01, +9.507262812e-11, +1.659118601e-10, +0.000000000e+00, +0.000000000e+00 + 8.400000000e-01, +9.733511897e-11, +1.662931348e-10, +0.000000000e+00, +0.000000000e+00 + 8.450000000e-01, +9.972601337e-11, +1.669365455e-10, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-01, +1.024254718e-10, +1.681727216e-10, +0.000000000e+00, +0.000000000e+00 + 8.550000000e-01, +1.053586680e-10, +1.699228102e-10, +0.000000000e+00, +0.000000000e+00 + 8.600000000e-01, +1.081324998e-10, +1.718158279e-10, +0.000000000e+00, +0.000000000e+00 + 8.650000000e-01, +1.102712462e-10, +1.732815923e-10, +0.000000000e+00, +0.000000000e+00 + 8.700000000e-01, +1.114070674e-10, +1.737735667e-10, +0.000000000e+00, +0.000000000e+00 + 8.750000000e-01, +1.113598806e-10, +1.730987412e-10, +0.000000000e+00, +0.000000000e+00 + 8.800000000e-01, +1.102385745e-10, +1.713341260e-10, +0.000000000e+00, +0.000000000e+00 + 8.850000000e-01, +1.083815282e-10, +1.687611818e-10, +0.000000000e+00, +0.000000000e+00 + 8.900000000e-01, +1.061833532e-10, +1.658612481e-10, +0.000000000e+00, +0.000000000e+00 + 8.950000000e-01, +1.040141398e-10, +1.630193689e-10, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-01, +1.021685320e-10, +1.605157165e-10, +0.000000000e+00, +0.000000000e+00 + 9.050000000e-01, +1.007733357e-10, +1.585370111e-10, +0.000000000e+00, +0.000000000e+00 + 9.100000000e-01, +9.985508173e-11, +1.570662303e-10, +0.000000000e+00, +0.000000000e+00 + 9.150000000e-01, +9.937096642e-11, +1.560560474e-10, +0.000000000e+00, +0.000000000e+00 + 9.200000000e-01, +9.921011024e-11, +1.554391335e-10, +0.000000000e+00, +0.000000000e+00 + 9.250000000e-01, +9.928999095e-11, +1.550615057e-10, +0.000000000e+00, +0.000000000e+00 + 9.300000000e-01, +9.950758583e-11, +1.548476563e-10, +0.000000000e+00, +0.000000000e+00 + 9.350000000e-01, +9.976706655e-11, +1.547514164e-10, +0.000000000e+00, +0.000000000e+00 + 9.400000000e-01, +1.000464778e-10, +1.546724997e-10, +0.000000000e+00, +0.000000000e+00 + 9.450000000e-01, +1.002876173e-10, +1.545926001e-10, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-01, +1.004568286e-10, +1.545267974e-10, +0.000000000e+00, +0.000000000e+00 + 9.550000000e-01, +1.005850557e-10, +1.544379512e-10, +0.000000000e+00, +0.000000000e+00 + 9.600000000e-01, +1.006490064e-10, +1.543361629e-10, +0.000000000e+00, +0.000000000e+00 + 9.650000000e-01, +1.006492846e-10, +1.542604229e-10, +0.000000000e+00, +0.000000000e+00 + 9.700000000e-01, +1.006211143e-10, +1.542031409e-10, +0.000000000e+00, +0.000000000e+00 + 9.750000000e-01, +1.005533510e-10, +1.541675346e-10, +0.000000000e+00, +0.000000000e+00 + 9.800000000e-01, +1.004531208e-10, +1.541765804e-10, +0.000000000e+00, +0.000000000e+00 + 9.850000000e-01, +1.003344785e-10, +1.542292179e-10, +0.000000000e+00, +0.000000000e+00 + 9.900000000e-01, +1.001973924e-10, +1.543149262e-10, +0.000000000e+00, +0.000000000e+00 + 9.950000000e-01, +1.000494982e-10, +1.544297511e-10, +0.000000000e+00, +0.000000000e+00 + 1.000000000e+00, +9.988860265e-11, +1.545764220e-10, +0.000000000e+00, +0.000000000e+00 diff --git a/test/examples/ref/coaxial/matched/error-indicators.csv b/test/examples/ref/coaxial/matched/error-indicators.csv index 0594521e4..7a2f512c9 100644 --- a/test/examples/ref/coaxial/matched/error-indicators.csv +++ b/test/examples/ref/coaxial/matched/error-indicators.csv @@ -1,2 +1,2 @@ Norm, Minimum, Maximum, Mean - +9.905542702e-03, +2.592621049e-04, +3.100869596e-03, +5.438866154e-04 + +9.653022681e-03, +2.591030325e-04, +2.997508940e-03, +5.377920408e-04 diff --git a/test/examples/ref/coaxial/matched/port-I.csv b/test/examples/ref/coaxial/matched/port-I.csv index 4a450c3c9..536c89b3f 100644 --- a/test/examples/ref/coaxial/matched/port-I.csv +++ b/test/examples/ref/coaxial/matched/port-I.csv @@ -1,202 +1,202 @@ t (ns), I_inc[1] (A), I[1] (A), I[2] (A) 0.000000000e+00, -5.666088695e-06, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, -8.409123651e-06, -2.341328245e-06, -6.124159098e-23 - 1.000000000e-02, -1.105147275e-05, -5.826382857e-06, +2.762676845e-22 - 1.500000000e-02, -1.228163970e-05, -5.222852797e-06, +3.058381041e-23 - 2.000000000e-02, -9.778049726e-06, +3.479732768e-07, -9.251752516e-23 - 2.500000000e-02, -6.103350322e-20, +1.465152567e-05, -3.846182912e-22 - 3.000000000e-02, +2.176144987e-05, +4.434348953e-05, +4.411911557e-21 - 3.500000000e-02, +6.083135968e-05, +9.403287533e-05, +1.989414254e-20 - 4.000000000e-02, +1.218223334e-04, +1.675061721e-04, +7.771401467e-21 - 4.500000000e-02, +2.062970799e-04, +2.640783375e-04, -1.580045427e-19 - 5.000000000e-02, +3.093579607e-04, +3.746481283e-04, -2.456139412e-19 - 5.500000000e-02, +4.154313032e-04, +4.765161274e-04, -3.357590003e-19 - 6.000000000e-02, +4.940139224e-04, +5.303124776e-04, -4.417929514e-19 - 6.500000000e-02, +4.967592192e-04, +4.785254386e-04, -6.391530779e-19 - 7.000000000e-02, +3.578593563e-04, +2.464419516e-04, -8.785517176e-19 - 7.500000000e-02, -5.771941699e-19, -2.468286914e-04, -1.001652861e-18 - 8.000000000e-02, -6.520622610e-04, -1.070220787e-03, -1.048022059e-18 - 8.500000000e-02, -1.649298690e-03, -2.255609928e-03, +4.185066048e-20 - 9.000000000e-02, -2.988610073e-03, -3.763509598e-03, +8.601984925e-18 - 9.500000000e-02, -4.579372529e-03, -5.449045749e-03, +6.844589572e-17 - 1.000000000e-01, -6.213620742e-03, -7.037466294e-03, +4.537340129e-16 - 1.050000000e-01, -7.550108895e-03, -8.117962218e-03, +2.694650818e-15 - 1.100000000e-01, -8.123884454e-03, -8.168835362e-03, +1.458381477e-14 - 1.150000000e-01, -7.391643913e-03, -6.623897830e-03, +7.238842792e-14 - 1.200000000e-01, -4.818124626e-03, -2.980500538e-03, +3.311740294e-13 - 1.250000000e-01, +4.687776326e-18, +3.060907027e-03, +1.402393866e-12 - 1.300000000e-01, +7.187797314e-03, +1.144478412e-02, +5.515626339e-12 - 1.350000000e-01, +1.645040606e-02, +2.162946359e-02, +2.020122305e-11 - 1.400000000e-01, +2.697224625e-02, +3.251877276e-02, +6.903002905e-11 - 1.450000000e-01, +3.739593417e-02, +4.249139969e-02, +2.203177178e-10 - 1.500000000e-01, +4.591279224e-02, +4.955370760e-02, +6.568991020e-10 - 1.550000000e-01, +5.047923110e-02, +5.162043776e-02, +1.828084801e-09 - 1.600000000e-01, +4.914663699e-02, +4.689357277e-02, +4.737069214e-09 - 1.650000000e-01, +4.046146992e-02, +3.428028014e-02, +1.137744245e-08 - 1.700000000e-01, +2.386432750e-02, +1.376794562e-02, +2.511886135e-08 - 1.750000000e-01, -4.859694655e-17, -1.333615740e-02, +5.020089541e-08 - 1.800000000e-01, -2.914795543e-02, -4.438063934e-02, +8.801689469e-08 - 1.850000000e-01, -6.036142013e-02, -7.560597885e-02, +1.251140537e-07 - 1.900000000e-01, -8.955101123e-02, -1.026340643e-01, +1.037754427e-07 - 1.950000000e-01, -1.123435949e-01, -1.211478660e-01, -1.380011803e-07 - 2.000000000e-01, -1.248039088e-01, -1.276455366e-01, -9.704986665e-07 - 2.050000000e-01, -1.241588739e-01, -1.201223867e-01, -3.123031761e-06 - 2.100000000e-01, -1.093778521e-01, -9.853663600e-02, -7.854912659e-06 - 2.150000000e-01, -8.147939460e-02, -6.494807193e-02, -1.706925582e-05 - 2.200000000e-01, -4.348363979e-02, -2.328103409e-02, -3.323164095e-05 - 2.250000000e-01, +2.632536371e-16, +2.125857862e-02, -5.891719333e-05 - 2.300000000e-01, +4.348363979e-02, +6.300925395e-02, -9.583639123e-05 - 2.350000000e-01, +8.147939460e-02, +9.676630686e-02, -1.433067010e-04 - 2.400000000e-01, +1.093778521e-01, +1.186055850e-01, -1.963171018e-04 - 2.450000000e-01, +1.241588739e-01, +1.264630066e-01, -2.434989392e-04 - 2.500000000e-01, +1.248039088e-01, +1.203676579e-01, -2.654097790e-04 - 2.550000000e-01, +1.123435949e-01, +1.023011765e-01, -2.336094126e-04 - 2.600000000e-01, +8.955101123e-02, +7.573263818e-02, -1.112176449e-04 - 2.650000000e-01, +6.036142013e-02, +4.493958439e-02, +1.439413981e-04 - 2.700000000e-01, +2.914795543e-02, +1.425991010e-02, +5.721716690e-04 - 2.750000000e-01, +4.859694655e-17, -1.258094285e-02, +1.199643684e-03 - 2.800000000e-01, -2.386432750e-02, -3.295370088e-02, +2.021422860e-03 - 2.850000000e-01, -4.046146992e-02, -4.555719857e-02, +2.982270925e-03 - 2.900000000e-01, -4.914663699e-02, -5.039306818e-02, +3.959412326e-03 - 2.950000000e-01, -5.047923110e-02, -4.852842192e-02, +4.752243549e-03 - 3.000000000e-01, -4.591279224e-02, -4.172610814e-02, +5.084461711e-03 - 3.050000000e-01, -3.739593417e-02, -3.203277302e-02, +4.624831224e-03 - 3.100000000e-01, -2.697224625e-02, -2.140621242e-02, +3.032167115e-03 - 3.150000000e-01, -1.645040606e-02, -1.144050434e-02, +2.556763062e-05 - 3.200000000e-01, -7.187797314e-03, -3.215484371e-03, -4.527097466e-03 - 3.250000000e-01, -3.446700285e-16, +2.732339899e-03, -1.051715100e-02 - 3.300000000e-01, +4.818124626e-03, +6.342030114e-03, -1.751855865e-02 - 3.350000000e-01, +7.391643913e-03, +7.900798283e-03, -2.474855561e-02 - 3.400000000e-01, +8.123884454e-03, +7.895841329e-03, -3.108984764e-02 - 3.450000000e-01, +7.550108895e-03, +6.877347802e-03, -3.519367098e-02 - 3.500000000e-01, +6.213620742e-03, +5.353268211e-03, -3.566472650e-02 - 3.550000000e-01, +4.579372529e-03, +3.724883076e-03, -3.130958854e-02 - 3.600000000e-01, +2.988610073e-03, +2.261631827e-03, -2.141538783e-02 - 3.650000000e-01, +1.649298690e-03, +1.106284519e-03, -6.007486694e-03 - 3.700000000e-01, +6.520622610e-04, +2.994551059e-04, +1.397728694e-02 - 3.750000000e-01, +5.639207957e-17, -1.875691362e-04, +3.665822416e-02 - 3.800000000e-01, -3.578593563e-04, -4.208898024e-04, +5.935454428e-02 - 3.850000000e-01, -4.967592192e-04, -4.781398865e-04, +7.890920055e-02 - 3.900000000e-01, -4.940139224e-04, -4.309302473e-04, +9.215801551e-02 - 3.950000000e-01, -4.154313032e-04, -3.356024647e-04, +9.647262477e-02 - 4.000000000e-01, -3.093579607e-04, -2.305409730e-04, +9.027486238e-02 - 4.050000000e-01, -2.062970799e-04, -1.377736121e-04, +7.341388647e-02 - 4.100000000e-01, -1.218223334e-04, -6.669165032e-05, +4.732017881e-02 - 4.150000000e-01, -6.083135968e-05, -1.838467084e-05, +1.488373642e-02 - 4.200000000e-01, -2.176144987e-05, +1.051265052e-05, -1.994288466e-02 - 4.250000000e-01, -2.551434914e-18, +2.506586830e-05, -5.274961782e-02 - 4.300000000e-01, +9.778049726e-06, +3.026906953e-05, -7.937390849e-02 - 4.350000000e-01, +1.228163970e-05, +3.016906237e-05, -9.657472557e-02 - 4.400000000e-01, +1.105147275e-05, +2.763279206e-05, -1.025413020e-01 - 4.450000000e-01, +8.409123651e-06, +2.445310846e-05, -9.714168154e-02 - 4.500000000e-01, +5.666088695e-06, +2.165129470e-05, -8.187066681e-02 - 4.550000000e-01, +3.418894541e-06, +1.972672669e-05, -5.951500305e-02 - 4.600000000e-01, +1.826796159e-06, +1.893238777e-05, -3.361642887e-02 - 4.650000000e-01, +8.253938937e-07, +1.950449784e-05, -7.846191691e-03 - 4.700000000e-01, +2.671727168e-07, +2.164365176e-05, +1.458664185e-02 - 4.750000000e-01, +3.777032805e-20, +2.552761071e-05, +3.138158576e-02 - 4.800000000e-01, -9.828734975e-08, +3.130668335e-05, +4.138327329e-02 - 4.850000000e-01, -1.117049164e-07, +3.892488496e-05, +4.459151981e-02 - 4.900000000e-01, -9.095082526e-08, +4.797526148e-05, +4.196964913e-02 - 4.950000000e-01, -6.261923782e-08, +5.760114116e-05, +3.512062716e-02 - 5.000000000e-01, -3.817780532e-08, +6.635904627e-05, +2.591330086e-02 - 5.050000000e-01, -2.084413355e-08, +7.211226724e-05, +1.613286930e-02 - 5.100000000e-01, -1.007763869e-08, +7.215394959e-05, +7.218573533e-03 - 5.150000000e-01, -4.120031130e-09, +6.349423358e-05, +1.188374727e-04 - 5.200000000e-01, -1.206707201e-09, +4.317070919e-05, -4.737139632e-03 - 5.250000000e-01, -1.928824299e-22, +8.851449769e-06, -7.371031550e-03 - 5.300000000e-01, +3.634532244e-10, -4.041526601e-05, -8.127363862e-03 - 5.350000000e-01, +3.737607916e-10, -1.036012174e-04, -7.524929004e-03 - 5.400000000e-01, +2.753586026e-10, -1.770938822e-04, -6.120075875e-03 - 5.450000000e-01, +1.715419466e-10, -2.543400484e-04, -4.404808511e-03 - 5.500000000e-01, +9.463331804e-11, -3.260569881e-04, -2.747207131e-03 - 5.550000000e-01, +4.675063429e-11, -3.809411866e-04, -1.372868105e-03 - 5.600000000e-01, +2.045186871e-11, -4.068907043e-04, -3.782247322e-04 - 5.650000000e-01, +7.565632846e-12, -3.927385824e-04, +2.386309138e-04 - 5.700000000e-01, +2.005013126e-12, -3.302952711e-04, +5.402842958e-04 - 5.750000000e-01, +2.328620401e-25, -2.162825210e-04, +6.153810012e-04 - 5.800000000e-01, -4.944301496e-13, -5.382459801e-05, +5.530157266e-04 - 5.850000000e-01, -4.600666072e-13, +1.467828587e-04, +4.266252372e-04 - 5.900000000e-01, -3.066875683e-13, +3.684758194e-04, +2.878659059e-04 - 5.950000000e-01, -1.728774743e-13, +5.890330501e-04, +1.669480466e-04 - 6.000000000e-01, -8.629441606e-14, +7.836834222e-04, +7.637746802e-05 - 6.050000000e-01, -3.857417852e-14, +9.285095143e-04, +1.731608788e-05 - 6.100000000e-01, -1.526907493e-14, +1.004064566e-03, -1.540310229e-05 - 6.150000000e-01, -5.110878347e-15, +9.985663975e-04, -2.958948736e-05 - 6.200000000e-01, -1.225569810e-15, +9.100642839e-04, -3.235959459e-05 - 6.250000000e-01, -9.083457823e-29, +7.470825893e-04, -2.930760372e-05 - 6.300000000e-01, +2.474382771e-16, +5.276491017e-04, -2.436248817e-05 - 6.350000000e-01, +2.083306657e-16, +2.767665662e-04, -1.956197097e-05 - 6.400000000e-01, +1.256606244e-16, +2.272758440e-05, -1.579441306e-05 - 6.450000000e-01, +6.409320687e-17, -2.070174772e-04, -1.324760278e-05 - 6.500000000e-01, +2.894855159e-17, -3.897685125e-04, -1.176078493e-05 - 6.550000000e-01, +1.170877290e-17, -5.105448830e-04, -1.102707379e-05 - 6.600000000e-01, +4.193705940e-18, -5.636199015e-04, -1.066468992e-05 - 6.650000000e-01, +1.270139270e-18, -5.524779988e-04, -1.057749995e-05 - 6.700000000e-01, +2.755906037e-19, -4.883439768e-04, -1.060408508e-05 - 6.750000000e-01, +1.075875659e-32, -3.876365251e-04, -1.055299149e-05 - 6.800000000e-01, -4.555482039e-20, -2.688096824e-04, -1.053859892e-05 - 6.850000000e-01, -3.470493289e-20, -1.493655950e-04, -1.048981357e-05 - 6.900000000e-01, -1.894121233e-20, -4.356380125e-05, -1.035389420e-05 - 6.950000000e-01, -8.741603680e-21, +3.911659346e-05, -1.023858782e-05 - 7.000000000e-01, -3.572535080e-21, +9.447258570e-05, -1.007565102e-05 - 7.050000000e-01, -1.307469592e-21, +1.229852738e-04, -9.917609434e-06 - 7.100000000e-01, -4.237295397e-22, +1.286478941e-04, -9.793335113e-06 - 7.150000000e-01, -1.161215067e-22, +1.175736039e-04, -9.663907507e-06 - 7.200000000e-01, -2.279797517e-23, +9.652004529e-05, -9.652548438e-06 - 7.250000000e-01, -3.241225490e-37, +7.161242871e-05, -9.727310860e-06 - 7.300000000e-01, +3.085370426e-24, +4.759959608e-05, -9.896316819e-06 - 7.350000000e-01, +2.126839583e-24, +2.756894501e-05, -1.026813625e-05 - 7.400000000e-01, +1.050320519e-24, +1.294607422e-05, -1.078418434e-05 - 7.450000000e-01, +4.386071853e-25, +3.814593416e-06, -1.145045983e-05 - 7.500000000e-01, +1.621928417e-25, -6.366613206e-07, -1.225967977e-05 - 7.550000000e-01, +5.371026932e-26, -1.653339755e-06, -1.314691110e-05 - 7.600000000e-01, +1.575016203e-26, -5.057467791e-07, -1.404521426e-05 - 7.650000000e-01, +3.905525687e-27, +1.663885702e-06, -1.480472274e-05 - 7.700000000e-01, +6.937989919e-28, +3.995184295e-06, -1.538482867e-05 - 7.750000000e-01, -6.993531703e-42, +6.048340572e-06, -1.565327263e-05 - 7.800000000e-01, -7.687511957e-29, +7.601180441e-06, -1.542963553e-05 - 7.850000000e-01, -4.794946636e-29, +8.567934495e-06, -1.477022199e-05 - 7.900000000e-01, -2.142601701e-29, +9.085527396e-06, -1.359843657e-05 - 7.950000000e-01, -8.095914059e-30, +9.299913331e-06, -1.187990969e-05 - 8.000000000e-01, -2.708896312e-30, +9.287294417e-06, -9.812994598e-06 - 8.050000000e-01, -8.116869824e-31, +9.184782265e-06, -7.479809281e-06 - 8.100000000e-01, -2.153708036e-31, +9.065839871e-06, -5.037331180e-06 - 8.150000000e-01, -4.832277353e-32, +8.940279716e-06, -2.728250807e-06 - 8.200000000e-01, -7.767416097e-33, +8.861585371e-06, -7.236640320e-07 - 8.250000000e-01, +2.050715652e-46, +8.796977588e-06, +8.028801679e-07 - 8.300000000e-01, +7.046440907e-34, +8.735416062e-06, +1.765191699e-06 - 8.350000000e-01, +3.976842028e-34, +8.738992323e-06, +2.081763215e-06 - 8.400000000e-01, +1.607927855e-34, +8.716531477e-06, +1.765505809e-06 - 8.450000000e-01, +5.497453374e-35, +8.667262093e-06, +9.620447578e-07 - 8.500000000e-01, +1.664403419e-35, +8.697612654e-06, -2.600829698e-07 - 8.550000000e-01, +4.512584527e-36, +8.681441510e-06, -1.715999160e-06 - 8.600000000e-01, +1.083413267e-36, +8.625250372e-06, -3.195324323e-06 - 8.650000000e-01, +2.199529168e-37, +8.658068824e-06, -4.600848996e-06 - 8.700000000e-01, +3.199079223e-38, +8.639442435e-06, -5.768606667e-06 - 8.750000000e-01, -1.264445967e-51, +8.588901994e-06, -6.637511321e-06 - 8.800000000e-01, -2.376070608e-39, +8.616915013e-06, -7.194067575e-06 - 8.850000000e-01, -1.213384435e-39, +8.589922285e-06, -7.414289973e-06 - 8.900000000e-01, -4.439123120e-40, +8.559008117e-06, -7.405000913e-06 - 8.950000000e-01, -1.373291519e-40, +8.580708575e-06, -7.203174160e-06 - 9.000000000e-01, -3.762099992e-41, +8.539498668e-06, -6.868381428e-06 - 9.050000000e-01, -9.229276070e-42, +8.532695871e-06, -6.528660551e-06 - 9.100000000e-01, -2.004965889e-42, +8.549981318e-06, -6.192772169e-06 - 9.150000000e-01, -3.683096656e-43, +8.493918796e-06, -5.904106555e-06 - 9.200000000e-01, -4.847066048e-44, +8.504901186e-06, -5.702306916e-06 - 9.250000000e-01, +2.695492675e-57, +8.519270481e-06, -5.572301828e-06 - 9.300000000e-01, +2.947503899e-45, +8.454357662e-06, -5.512355374e-06 - 9.350000000e-01, +1.361958949e-45, +8.469380876e-06, -5.485674088e-06 - 9.400000000e-01, +4.508513145e-46, +8.478211044e-06, -5.509732002e-06 - 9.450000000e-01, +1.262029305e-46, +8.414469282e-06, -5.554355657e-06 - 9.500000000e-01, +3.128294188e-47, +8.419374189e-06, -5.567367149e-06 - 9.550000000e-01, +6.944091618e-48, +8.417202524e-06, -5.612859872e-06 - 9.600000000e-01, +1.364977037e-48, +8.365207168e-06, -5.647096142e-06 - 9.650000000e-01, +2.268830361e-49, +8.353084066e-06, -5.639876317e-06 - 9.700000000e-01, +2.701707935e-50, +8.338075346e-06, -5.660136038e-06 - 9.750000000e-01, -1.705334349e-63, +8.306886626e-06, -5.666153746e-06 - 9.800000000e-01, -1.345101176e-51, +8.282612918e-06, -5.654559387e-06 - 9.850000000e-01, -5.623868195e-52, +8.262469001e-06, -5.655456939e-06 - 9.900000000e-01, -1.684515487e-52, +8.257161059e-06, -5.651787254e-06 - 9.950000000e-01, -4.266597350e-53, +8.234243055e-06, -5.652286924e-06 - 1.000000000e+00, -9.569524512e-54, +8.224075445e-06, -5.642207273e-06 + 5.000000000e-03, -8.409123651e-06, -2.279465662e-06, -7.839719442e-23 + 1.000000000e-02, -1.105147275e-05, -6.104854862e-06, +1.170088451e-22 + 1.500000000e-02, -1.228163970e-05, -7.036201019e-06, -2.707694032e-23 + 2.000000000e-02, -9.778049726e-06, -4.567147137e-06, +1.093697887e-23 + 2.500000000e-02, -6.103350322e-20, +4.433594715e-06, -1.011814796e-21 + 3.000000000e-02, +2.176144987e-05, +2.603404286e-05, +4.424584279e-21 + 3.500000000e-02, +6.083135968e-05, +6.501699663e-05, -7.691698220e-22 + 4.000000000e-02, +1.218223334e-04, +1.262776913e-04, -1.629885848e-20 + 4.500000000e-02, +2.062970799e-04, +2.118296913e-04, -1.876864239e-20 + 5.000000000e-02, +3.093579607e-04, +3.173618809e-04, -4.552537484e-20 + 5.500000000e-02, +4.154313032e-04, +4.272823161e-04, -6.347097858e-20 + 6.000000000e-02, +4.940139224e-04, +5.111171470e-04, -4.730523003e-20 + 6.500000000e-02, +4.967592192e-04, +5.206886081e-04, -5.525655577e-20 + 7.000000000e-02, +3.578593563e-04, +3.886785355e-04, -9.362705250e-20 + 7.500000000e-02, -5.771941699e-19, +3.582147265e-05, -7.427286899e-20 + 8.000000000e-02, -6.520622610e-04, -6.153389310e-04, -9.790627284e-20 + 8.500000000e-02, -1.649298690e-03, -1.619463514e-03, +2.027901756e-18 + 9.000000000e-02, -2.988610073e-03, -2.976954811e-03, +9.362346005e-18 + 9.500000000e-02, -4.579372529e-03, -4.599372030e-03, +6.903841697e-17 + 1.000000000e-01, -6.213620742e-03, -6.279384829e-03, +4.580730489e-16 + 1.050000000e-01, -7.550108895e-03, -7.673257929e-03, +2.739333014e-15 + 1.100000000e-01, -8.123884454e-03, -8.308949454e-03, +1.493028072e-14 + 1.150000000e-01, -7.391643913e-03, -7.631639645e-03, +7.464979292e-14 + 1.200000000e-01, -4.818124626e-03, -5.091253532e-03, +3.442332544e-13 + 1.250000000e-01, +4.687776326e-18, -2.676010971e-04, +1.470590246e-12 + 1.300000000e-01, +7.187797314e-03, +6.979916447e-03, +5.841622865e-12 + 1.350000000e-01, +1.645040606e-02, +1.636584859e-02, +2.163951405e-11 + 1.400000000e-01, +2.697224625e-02, +2.707472498e-02, +7.492256935e-11 + 1.450000000e-01, +3.739593417e-02, +3.773684453e-02, +2.428410296e-10 + 1.500000000e-01, +4.591279224e-02, +4.651714030e-02, +7.375232547e-10 + 1.550000000e-01, +5.047923110e-02, +5.133402751e-02, +2.099169990e-09 + 1.600000000e-01, +4.914663699e-02, +5.019442015e-02, +5.595281428e-09 + 1.650000000e-01, +4.046146992e-02, +4.160106921e-02, +1.394044470e-08 + 1.700000000e-01, +2.386432750e-02, +2.496072306e-02, +3.234971896e-08 + 1.750000000e-01, -4.859694655e-17, +9.027416975e-04, +6.949217072e-08 + 1.800000000e-01, -2.914795543e-02, -2.858089172e-02, +1.367183148e-07 + 1.850000000e-01, -6.036142013e-02, -6.023860350e-02, +2.414876124e-07 + 1.900000000e-01, -8.955101123e-02, -8.992623717e-02, +3.669644295e-07 + 1.950000000e-01, -1.123435949e-01, -1.132034053e-01, +4.251097635e-07 + 2.000000000e-01, -1.248039088e-01, -1.260674341e-01, +1.683790015e-07 + 2.050000000e-01, -1.241588739e-01, -1.256901005e-01, -9.484948802e-07 + 2.100000000e-01, -1.093778521e-01, -1.110084115e-01, -3.942300074e-06 + 2.150000000e-01, -8.147939460e-02, -8.303731511e-02, -1.045263549e-05 + 2.200000000e-01, -4.348363979e-02, -4.482170606e-02, -2.275556912e-05 + 2.250000000e-01, +2.632536371e-16, -1.017952044e-03, -4.348024829e-05 + 2.300000000e-01, +4.348363979e-02, +4.282753850e-02, -7.487578040e-05 + 2.350000000e-01, +8.147939460e-02, +8.116905378e-02, -1.175591281e-04 + 2.400000000e-01, +1.093778521e-01, +1.093513159e-01, -1.688169295e-04 + 2.450000000e-01, +1.241588739e-01, +1.243278841e-01, -2.206716002e-04 + 2.500000000e-01, +1.248039088e-01, +1.250757389e-01, -2.580032167e-04 + 2.550000000e-01, +1.123435949e-01, +1.126400748e-01, -2.570919151e-04 + 2.600000000e-01, +8.955101123e-02, +8.982093901e-02, -1.851633285e-04 + 2.650000000e-01, +6.036142013e-02, +6.058437068e-02, -1.964802777e-06 + 2.700000000e-01, +2.914795543e-02, +2.933003651e-02, +3.351637337e-04 + 2.750000000e-01, +4.859694655e-17, +1.640427998e-04, +8.613977632e-04 + 2.800000000e-01, -2.386432750e-02, -2.369071496e-02, +1.589515815e-03 + 2.850000000e-01, -4.046146992e-02, -4.025665607e-02, +2.491580354e-03 + 2.900000000e-01, -4.914663699e-02, -4.890201756e-02, +3.480456981e-03 + 2.950000000e-01, -5.047923110e-02, -5.020114773e-02, +4.395397497e-03 + 3.000000000e-01, -4.591279224e-02, -4.562002034e-02, +4.996810327e-03 + 3.050000000e-01, -3.739593417e-02, -3.711414519e-02, +4.976662349e-03 + 3.100000000e-01, -2.697224625e-02, -2.672715670e-02, +3.991203041e-03 + 3.150000000e-01, -1.645040606e-02, -1.626186385e-02, +1.719372564e-03 + 3.200000000e-01, -7.187797314e-03, -7.066117973e-03, -2.056655061e-03 + 3.250000000e-01, -3.446700285e-16, +5.515284079e-05, -7.359718567e-03 + 3.300000000e-01, +4.818124626e-03, +4.816373419e-03, -1.393072938e-02 + 3.350000000e-01, +7.391643913e-03, +7.348724034e-03, -2.116683910e-02 + 3.400000000e-01, +8.123884454e-03, +8.057868855e-03, -2.810995880e-02 + 3.450000000e-01, +7.550108895e-03, +7.478016722e-03, -3.350900948e-02 + 3.500000000e-01, +6.213620742e-03, +6.148880085e-03, -3.596472910e-02 + 3.550000000e-01, +4.579372529e-03, +4.530523902e-03, -3.414856600e-02 + 3.600000000e-01, +2.988610073e-03, +2.959359024e-03, -2.707212456e-02 + 3.650000000e-01, +1.649298690e-03, +1.639328932e-03, -1.436348176e-02 + 3.700000000e-01, +6.520622610e-04, +6.582728629e-04, +3.510075664e-03 + 3.750000000e-01, +5.639207957e-17, +1.796645354e-05, +2.513348171e-02 + 3.800000000e-01, -3.578593563e-04, -3.327071839e-04, +4.819660675e-02 + 3.850000000e-01, -4.967592192e-04, -4.683632875e-04, +6.972958070e-02 + 3.900000000e-01, -4.940139224e-04, -4.652574359e-04, +8.650614931e-02 + 3.950000000e-01, -4.154313032e-04, -3.880626459e-04, +9.556165602e-02 + 4.000000000e-01, -3.093579607e-04, -2.841655685e-04, +9.473491778e-02 + 4.050000000e-01, -2.062970799e-04, -1.833980203e-04, +8.312602269e-02 + 4.100000000e-01, -1.218223334e-04, -1.009159268e-04, +6.137225831e-02 + 4.150000000e-01, -6.083135968e-05, -4.143379152e-05, +3.166750253e-02 + 4.200000000e-01, -2.176144987e-05, -3.413327503e-06, -2.502664187e-03 + 4.250000000e-01, -2.551434914e-18, +1.765295201e-05, -3.687209560e-02 + 4.300000000e-01, +9.778049726e-06, +2.695409360e-05, -6.706467438e-02 + 4.350000000e-01, +1.228163970e-05, +2.907159974e-05, -8.930220077e-02 + 4.400000000e-01, +1.105147275e-05, +2.746797228e-05, -1.010097188e-01 + 4.450000000e-01, +8.409123651e-06, +2.444125815e-05, -1.012031705e-01 + 4.500000000e-01, +5.666088695e-06, +2.136804349e-05, -9.058961021e-02 + 4.550000000e-01, +3.418894541e-06, +1.895897465e-05, -7.136646204e-02 + 4.600000000e-01, +1.826796159e-06, +1.756237934e-05, -4.677362695e-02 + 4.650000000e-01, +8.253938937e-07, +1.743332128e-05, -2.049672395e-02 + 4.700000000e-01, +2.671727168e-07, +1.876789954e-05, +3.957473555e-03 + 4.750000000e-01, +3.777032805e-20, +2.175086078e-05, +2.379025635e-02 + 4.800000000e-01, -9.828734975e-08, +2.657695713e-05, +3.725825407e-02 + 4.850000000e-01, -1.117049164e-07, +3.330104452e-05, +4.379671298e-02 + 4.900000000e-01, -9.095082526e-08, +4.170350643e-05, +4.392096744e-02 + 4.950000000e-01, -6.261923782e-08, +5.118467434e-05, +3.895956705e-02 + 5.000000000e-01, -3.817780532e-08, +6.061063807e-05, +3.069570799e-02 + 5.050000000e-01, -2.084413355e-08, +6.816903568e-05, +2.099548354e-02 + 5.100000000e-01, -1.007763869e-08, +7.142099286e-05, +1.149684149e-02 + 5.150000000e-01, -4.120031130e-09, +6.750284534e-05, +3.404389962e-03 + 5.200000000e-01, -1.206707201e-09, +5.335700038e-05, -2.596439422e-03 + 5.250000000e-01, -1.928824299e-22, +2.625146628e-05, -6.315069825e-03 + 5.300000000e-01, +3.634532244e-10, -1.552134088e-05, -7.952742048e-03 + 5.350000000e-01, +3.737607916e-10, -7.202719971e-05, -7.959639543e-03 + 5.400000000e-01, +2.753586026e-10, -1.410093202e-04, -6.888529679e-03 + 5.450000000e-01, +1.715419466e-10, -2.173742296e-04, -5.273858845e-03 + 5.500000000e-01, +9.463331804e-11, -2.931597192e-04, -3.550333615e-03 + 5.550000000e-01, +4.675063429e-11, -3.579618849e-04, -2.014773065e-03 + 5.600000000e-01, +2.045186871e-11, -3.998812035e-04, -8.252634844e-04 + 5.650000000e-01, +7.565632846e-12, -4.070350711e-04, -2.442607166e-05 + 5.700000000e-01, +2.005013126e-12, -3.694979154e-04, +4.246687144e-04 + 5.750000000e-01, +2.328620401e-25, -2.813096150e-04, +6.014263940e-04 + 5.800000000e-01, -4.944301496e-13, -1.422343696e-04, +5.974101003e-04 + 5.850000000e-01, -4.600666072e-13, +4.102954713e-05, +4.951301922e-04 + 5.900000000e-01, -3.066875683e-13, +2.546795560e-04, +3.575043451e-04 + 5.950000000e-01, -1.728774743e-13, +4.788184074e-04, +2.251682012e-04 + 6.000000000e-01, -8.629441606e-14, +6.895532949e-04, +1.186460332e-04 + 6.050000000e-01, -3.857417852e-14, +8.620838886e-04, +4.420791914e-05 + 6.100000000e-01, -1.526907493e-14, +9.742885967e-04, -7.459663553e-07 + 6.150000000e-01, -5.110878347e-15, +1.010208865e-03, -2.328504679e-05 + 6.200000000e-01, -1.225569810e-15, +9.627989535e-04, -3.093322175e-05 + 6.250000000e-01, -9.083457823e-29, +8.353546600e-04, -3.016656516e-05 + 6.300000000e-01, +2.474382771e-16, +6.413796771e-04, -2.584275785e-05 + 6.350000000e-01, +2.083306657e-16, +4.027956922e-04, -2.078981253e-05 + 6.400000000e-01, +1.256606244e-16, +1.467524989e-04, -1.643811493e-05 + 6.450000000e-01, +6.409320687e-17, -9.835475273e-05, -1.328671369e-05 + 6.500000000e-01, +2.894855159e-17, -3.070111476e-04, -1.131502933e-05 + 6.550000000e-01, +1.170877290e-17, -4.600908525e-04, -1.025317804e-05 + 6.600000000e-01, +4.193705940e-18, -5.471396387e-04, -9.706105426e-06 + 6.650000000e-01, +1.270139270e-18, -5.671313952e-04, -9.526876864e-06 + 6.700000000e-01, +2.755906037e-19, -5.276925104e-04, -9.521317211e-06 + 6.750000000e-01, +1.075875659e-32, -4.430280566e-04, -9.477545467e-06 + 6.800000000e-01, -4.555482039e-20, -3.309499348e-04, -9.477102683e-06 + 6.850000000e-01, -3.470493289e-20, -2.097697246e-04, -9.446533141e-06 + 6.900000000e-01, -1.894121233e-20, -9.564568528e-05, -9.331259232e-06 + 6.950000000e-01, -8.741603680e-21, -5.625602380e-07, -9.227514481e-06 + 7.000000000e-01, -3.572535080e-21, +6.867626495e-05, -9.073042578e-06 + 7.050000000e-01, -1.307469592e-21, +1.103054361e-04, -8.914323226e-06 + 7.100000000e-01, -4.237295397e-22, +1.267155478e-04, -8.778201838e-06 + 7.150000000e-01, -1.161215067e-22, +1.231694394e-04, -8.627829141e-06 + 7.200000000e-01, -2.279797517e-23, +1.062866531e-04, -8.576006165e-06 + 7.250000000e-01, -3.241225490e-37, +8.261317002e-05, -8.597059341e-06 + 7.300000000e-01, +3.085370426e-24, +5.765268061e-05, -8.700306293e-06 + 7.350000000e-01, +2.126839583e-24, +3.535644802e-05, -8.990756857e-06 + 7.400000000e-01, +1.050320519e-24, +1.794830440e-05, -9.423853067e-06 + 7.450000000e-01, +4.386071853e-25, +6.128138190e-06, -1.001308981e-05 + 7.500000000e-01, +1.621928417e-25, -5.286416331e-07, -1.076106793e-05 + 7.550000000e-01, +5.371026932e-26, -3.101809758e-06, -1.161713053e-05 + 7.600000000e-01, +1.575016203e-26, -2.870251878e-06, -1.252639149e-05 + 7.650000000e-01, +3.905525687e-27, -1.086961146e-06, -1.335220364e-05 + 7.700000000e-01, +6.937989919e-28, +1.230051725e-06, -1.405215379e-05 + 7.750000000e-01, -6.993531703e-42, +3.475909312e-06, -1.449622845e-05 + 7.800000000e-01, -7.687511957e-29, +5.301100405e-06, -1.450015792e-05 + 7.850000000e-01, -4.794946636e-29, +6.537642734e-06, -1.409140181e-05 + 7.900000000e-01, -2.142601701e-29, +7.270243667e-06, -1.317687982e-05 + 7.950000000e-01, -8.095914059e-30, +7.629935703e-06, -1.169832613e-05 + 8.000000000e-01, -2.708896312e-30, +7.703087171e-06, -9.815300571e-06 + 8.050000000e-01, -8.116869824e-31, +7.638070444e-06, -7.591879578e-06 + 8.100000000e-01, -2.153708036e-31, +7.525634749e-06, -5.168555502e-06 + 8.150000000e-01, -4.832277353e-32, +7.392393462e-06, -2.776790037e-06 + 8.200000000e-01, -7.767416097e-33, +7.298856628e-06, -5.955027059e-07 + 8.250000000e-01, +2.050715652e-46, +7.221644401e-06, +1.184811727e-06 + 8.300000000e-01, +7.046440907e-34, +7.151386568e-06, +2.448602212e-06 + 8.350000000e-01, +3.976842028e-34, +7.145569631e-06, +3.084239890e-06 + 8.400000000e-01, +1.607927855e-34, +7.120905564e-06, +3.069195571e-06 + 8.450000000e-01, +5.497453374e-35, +7.072669373e-06, +2.513282400e-06 + 8.500000000e-01, +1.664403419e-35, +7.098255334e-06, +1.468614583e-06 + 8.550000000e-01, +4.512584527e-36, +7.083647648e-06, +1.049390248e-07 + 8.600000000e-01, +1.083413267e-36, +7.031003144e-06, -1.370162520e-06 + 8.650000000e-01, +2.199529168e-37, +7.059239847e-06, -2.843337345e-06 + 8.700000000e-01, +3.199079223e-38, +7.042162596e-06, -4.135744192e-06 + 8.750000000e-01, -1.264445967e-51, +6.994434700e-06, -5.160739942e-06 + 8.800000000e-01, -2.376070608e-39, +7.018235462e-06, -5.879989487e-06 + 8.850000000e-01, -1.213384435e-39, +6.992994840e-06, -6.251503897e-06 + 8.900000000e-01, -4.439123120e-40, +6.963005224e-06, -6.361764416e-06 + 8.950000000e-01, -1.373291519e-40, +6.981556219e-06, -6.243466006e-06 + 9.000000000e-01, -3.762099992e-41, +6.943067937e-06, -5.955312166e-06 + 9.050000000e-01, -9.229276070e-42, +6.934956605e-06, -5.624901710e-06 + 9.100000000e-01, -2.004965889e-42, +6.950190011e-06, -5.274163619e-06 + 9.150000000e-01, -3.683096656e-43, +6.898186604e-06, -4.954940491e-06 + 9.200000000e-01, -4.847066048e-44, +6.906297954e-06, -4.714449048e-06 + 9.250000000e-01, +2.695492675e-57, +6.919489159e-06, -4.547087289e-06 + 9.300000000e-01, +2.947503899e-45, +6.859734325e-06, -4.455716460e-06 + 9.350000000e-01, +1.361958949e-45, +6.871729450e-06, -4.407401579e-06 + 9.400000000e-01, +4.508513145e-46, +6.880083711e-06, -4.416745311e-06 + 9.450000000e-01, +1.262029305e-46, +6.821626996e-06, -4.454645761e-06 + 9.500000000e-01, +3.128294188e-47, +6.824531932e-06, -4.469286482e-06 + 9.550000000e-01, +6.944091618e-48, +6.822281822e-06, -4.516015523e-06 + 9.600000000e-01, +1.364977037e-48, +6.774092686e-06, -4.554107840e-06 + 9.650000000e-01, +2.268830361e-49, +6.761097990e-06, -4.553323344e-06 + 9.700000000e-01, +2.701707935e-50, +6.745674152e-06, -4.575690441e-06 + 9.750000000e-01, -1.705334349e-63, +6.715192958e-06, -4.584090223e-06 + 9.800000000e-01, -1.345101176e-51, +6.690264706e-06, -4.574936988e-06 + 9.850000000e-01, -5.623868195e-52, +6.668524663e-06, -4.575957586e-06 + 9.900000000e-01, -1.684515487e-52, +6.660450423e-06, -4.572317693e-06 + 9.950000000e-01, -4.266597350e-53, +6.636345082e-06, -4.572399297e-06 + 1.000000000e+00, -9.569524512e-54, +6.623360227e-06, -4.562702280e-06 diff --git a/test/examples/ref/coaxial/matched/port-V.csv b/test/examples/ref/coaxial/matched/port-V.csv index 10dcd57bd..4bafdcb71 100644 --- a/test/examples/ref/coaxial/matched/port-V.csv +++ b/test/examples/ref/coaxial/matched/port-V.csv @@ -1,202 +1,202 @@ t (ns), V_inc[1] (V), V[1] (V), V[2] (V) 0.000000000e+00, -2.833044348e-04, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, -4.204561825e-04, -1.409600057e-04, -7.065025010e-22 - 1.000000000e-02, -5.525736376e-04, -2.576208519e-04, +7.355219580e-22 - 1.500000000e-02, -6.140819852e-04, -2.326884943e-04, -2.563099469e-21 - 2.000000000e-02, -4.889024863e-04, +1.474786102e-05, +1.518754000e-21 - 2.500000000e-02, -3.051675161e-18, +7.795612050e-04, +3.585259403e-21 - 3.000000000e-02, +1.088072493e-03, +2.242751383e-03, +3.324873970e-20 - 3.500000000e-02, +3.041567984e-03, +4.700349857e-03, -4.357614796e-20 - 4.000000000e-02, +6.091116670e-03, +8.325047125e-03, -1.453078174e-19 - 4.500000000e-02, +1.031485399e-02, +1.305720735e-02, +5.218929725e-19 - 5.000000000e-02, +1.546789803e-02, +1.841840504e-02, +2.094813507e-18 - 5.500000000e-02, +2.077156516e-02, +2.329007028e-02, +6.211609663e-18 - 6.000000000e-02, +2.470069612e-02, +2.573350592e-02, +1.258410575e-17 - 6.500000000e-02, +2.483796096e-02, +2.286439221e-02, +1.996232885e-17 - 7.000000000e-02, +1.789296781e-02, +1.105721800e-02, +3.191952100e-17 - 7.500000000e-02, -2.885970849e-17, -1.359924149e-02, +4.296762487e-17 - 8.000000000e-02, -3.260311305e-02, -5.445708636e-02, +5.202357082e-17 - 8.500000000e-02, -8.246493451e-02, -1.129251561e-01, +5.018595388e-17 - 9.000000000e-02, -1.494305036e-01, -1.868767856e-01, -5.072140379e-17 - 9.500000000e-02, -2.289686265e-01, -2.690380943e-01, -8.271882542e-16 - 1.000000000e-01, -3.106810371e-01, -3.457241810e-01, -6.464935015e-15 - 1.050000000e-01, -3.775054448e-01, -3.966135813e-01, -4.360696273e-14 - 1.100000000e-01, -4.061942227e-01, -3.960888280e-01, -2.657942380e-13 - 1.150000000e-01, -3.695821957e-01, -3.165165359e-01, -1.477441795e-12 - 1.200000000e-01, -2.409062313e-01, -1.335577495e-01, -7.523446889e-12 - 1.250000000e-01, +2.343888163e-16, +1.669052709e-01, -3.524511866e-11 - 1.300000000e-01, +3.593898657e-01, +5.813329112e-01, -1.524346445e-10 - 1.350000000e-01, +8.225203029e-01, +1.082240954e+00, -6.103302356e-10 - 1.400000000e-01, +1.348612313e+00, +1.614902943e+00, -2.266738995e-09 - 1.450000000e-01, +1.869796708e+00, +2.098941344e+00, -7.818317347e-09 - 1.500000000e-01, +2.295639612e+00, +2.436078661e+00, -2.505256901e-08 - 1.550000000e-01, +2.523961555e+00, +2.524037283e+00, -7.453130113e-08 - 1.600000000e-01, +2.457331849e+00, +2.275240314e+00, -2.054617401e-07 - 1.650000000e-01, +2.023073496e+00, +1.637412542e+00, -5.228484809e-07 - 1.700000000e-01, +1.193216375e+00, +6.119189859e-01, -1.219855759e-06 - 1.750000000e-01, -2.429847328e-15, -7.346571262e-01, -2.577283135e-06 - 1.800000000e-01, -1.457397771e+00, -2.269579629e+00, -4.813196755e-06 - 1.850000000e-01, -3.018071006e+00, -3.805872481e+00, -7.513694327e-06 - 1.900000000e-01, -4.477550561e+00, -5.126751444e+00, -8.149015105e-06 - 1.950000000e-01, -5.617179743e+00, -6.019342246e+00, +1.044727103e-06 - 2.000000000e-01, -6.240195442e+00, -6.311939346e+00, +3.853765840e-05 - 2.050000000e-01, -6.207943693e+00, -5.907639100e+00, +1.414483142e-04 - 2.100000000e-01, -5.468892605e+00, -4.807164232e+00, +3.744681409e-04 - 2.150000000e-01, -4.073969730e+00, -3.115417780e+00, +8.356160256e-04 - 2.200000000e-01, -2.174181990e+00, -1.029451119e+00, +1.651681686e-03 - 2.250000000e-01, +1.316268185e-14, +1.190700710e+00, +2.954594235e-03 - 2.300000000e-01, +2.174181990e+00, +3.263171034e+00, +4.831689891e-03 - 2.350000000e-01, +4.073969730e+00, +4.929624194e+00, +7.248747652e-03 - 2.400000000e-01, +5.468892605e+00, +5.996135954e+00, +9.953016866e-03 - 2.450000000e-01, +6.207943693e+00, +6.361863081e+00, +1.237084403e-02 - 2.500000000e-01, +6.240195442e+00, +6.030465394e+00, +1.351923938e-02 - 2.550000000e-01, +5.617179743e+00, +5.102911694e+00, +1.195634414e-02 - 2.600000000e-01, +4.477550561e+00, +3.754115651e+00, +5.808943939e-03 - 2.650000000e-01, +3.018071006e+00, +2.198951398e+00, -7.064134345e-03 - 2.700000000e-01, +1.457397771e+00, +6.548446195e-01, -2.870189023e-02 - 2.750000000e-01, +2.429847328e-15, -6.918569599e-01, -6.041671749e-02 - 2.800000000e-01, -1.193216375e+00, -1.710040781e+00, -1.019395026e-01 - 2.850000000e-01, -2.023073496e+00, -2.335368116e+00, -1.504557955e-01 - 2.900000000e-01, -2.457331849e+00, -2.568925943e+00, -1.997374431e-01 - 2.950000000e-01, -2.523961555e+00, -2.465273997e+00, -2.396244008e-01 - 3.000000000e-01, -2.295639612e+00, -2.113823015e+00, -2.561476460e-01 - 3.050000000e-01, -1.869796708e+00, -1.618090956e+00, -2.326094424e-01 - 3.100000000e-01, -1.348612313e+00, -1.076964915e+00, -1.518810973e-01 - 3.150000000e-01, -8.225203029e-01, -5.708552879e-01, +5.185395437e-05 - 3.200000000e-01, -3.593898657e-01, -1.541107217e-01, +2.296443952e-01 - 3.250000000e-01, -1.723350142e-14, +1.464156590e-01, +5.311674272e-01 - 3.300000000e-01, +2.409062313e-01, +3.279265045e-01, +8.828837089e-01 - 3.350000000e-01, +3.695821957e-01, +4.052334072e-01, +1.245160107e+00 - 3.400000000e-01, +4.061942227e-01, +4.032439626e-01, +1.561699206e+00 - 3.450000000e-01, +3.775054448e-01, +3.500077406e-01, +1.764787787e+00 - 3.500000000e-01, +3.106810371e-01, +2.713870161e-01, +1.784645945e+00 - 3.550000000e-01, +2.289686265e-01, +1.877927792e-01, +1.561951650e+00 - 3.600000000e-01, +1.494305036e-01, +1.128968877e-01, +1.061780726e+00 - 3.650000000e-01, +8.246493451e-02, +5.391049559e-02, +2.863914189e-01 - 3.700000000e-01, +3.260311305e-02, +1.284591036e-02, -7.162781124e-01 - 3.750000000e-01, +2.819603979e-15, -1.182022239e-02, -1.851213803e+00 - 3.800000000e-01, -1.789296781e-02, -2.351019402e-02, -2.983752401e+00 - 3.850000000e-01, -2.483796096e-02, -2.621899367e-02, -3.955981754e+00 - 3.900000000e-01, -2.470069612e-02, -2.362449606e-02, -4.610308897e+00 - 3.950000000e-01, -2.077156516e-02, -1.861444469e-02, -4.816526959e+00 - 4.000000000e-01, -1.546789803e-02, -1.314920402e-02, -4.497345847e+00 - 4.050000000e-01, -1.031485399e-02, -8.346306034e-03, -3.646974757e+00 - 4.100000000e-01, -6.091116670e-03, -4.677032350e-03, -2.338414572e+00 - 4.150000000e-01, -3.041567984e-03, -2.189017142e-03, -7.170344774e-01 - 4.200000000e-01, -1.088072493e-03, -6.991559093e-04, +1.019447008e+00 - 4.250000000e-01, -1.275717457e-16, +5.983943068e-05, +2.651299771e+00 - 4.300000000e-01, +4.889024863e-04, +3.482667180e-04, +3.971885932e+00 - 4.350000000e-01, +6.140819852e-04, +3.759000372e-04, +4.821023188e+00 - 4.400000000e-01, +5.525736376e-04, +2.873616975e-04, +5.110069251e+00 - 4.450000000e-01, +4.204561825e-04, +1.683533549e-04, +4.833945014e+00 - 4.500000000e-01, +2.833044348e-04, +5.840276447e-05, +4.068229638e+00 - 4.550000000e-01, +1.709447271e-04, -3.460452761e-05, +2.952323921e+00 - 4.600000000e-01, +9.133980795e-05, -1.213167970e-04, +1.662611239e+00 - 4.650000000e-01, +4.126969468e-05, -2.247850949e-04, +3.814002002e-01 - 4.700000000e-01, +1.335863584e-05, -3.714260878e-04, -7.323240470e-01 - 4.750000000e-01, +1.888516403e-18, -5.840881991e-04, -1.564952185e+00 - 4.800000000e-01, -4.914367487e-06, -8.800311375e-04, -2.059783005e+00 - 4.850000000e-01, -5.585245819e-06, -1.263204165e-03, -2.217344593e+00 - 4.900000000e-01, -4.547541263e-06, -1.717016487e-03, -2.085836435e+00 - 4.950000000e-01, -3.130961891e-06, -2.199608208e-03, -1.744988904e+00 - 5.000000000e-01, -1.908890266e-06, -2.638129587e-03, -1.287530485e+00 - 5.050000000e-01, -1.042206678e-06, -2.925654745e-03, -8.019420813e-01 - 5.100000000e-01, -5.038819347e-07, -2.925710702e-03, -3.594825000e-01 - 5.150000000e-01, -2.060015565e-07, -2.486898422e-03, -7.068037757e-03 - 5.200000000e-01, -6.033536005e-08, -1.461462181e-03, +2.340857894e-01 - 5.250000000e-01, -9.644121496e-21, +2.670676290e-04, +3.650797909e-01 - 5.300000000e-01, +1.817266122e-08, +2.745963771e-03, +4.029752127e-01 - 5.350000000e-01, +1.868803958e-08, +5.920952895e-03, +3.734543298e-01 - 5.400000000e-01, +1.376793013e-08, +9.608417595e-03, +3.040643732e-01 - 5.450000000e-01, +8.577097330e-09, +1.347787791e-02, +2.191669372e-01 - 5.500000000e-01, +4.731665902e-09, +1.706208865e-02, +1.370115961e-01 - 5.550000000e-01, +2.337531714e-09, +1.979353858e-02, +6.880241134e-02 - 5.600000000e-01, +1.022593435e-09, +2.106673855e-02, +1.934780782e-02 - 5.650000000e-01, +3.782816423e-10, +2.032542986e-02, -1.140498191e-02 - 5.700000000e-01, +1.002506563e-10, +1.716371901e-02, -2.652872335e-02 - 5.750000000e-01, +1.164310201e-23, +1.142372253e-02, -3.039457739e-02 - 5.800000000e-01, -2.472150748e-11, +3.269211519e-03, -2.740402965e-02 - 5.850000000e-01, -2.300333036e-11, -6.778765468e-03, -2.120230059e-02 - 5.900000000e-01, -1.533437842e-11, -1.786172846e-02, -1.435075564e-02 - 5.950000000e-01, -8.643873713e-12, -2.886598462e-02, -8.356385772e-03 - 6.000000000e-01, -4.314720803e-12, -3.855455488e-02, -3.856058884e-03 - 6.050000000e-01, -1.928708926e-12, -4.573671061e-02, -9.082145266e-04 - 6.100000000e-01, -7.634537466e-13, -4.944887481e-02, +7.345543029e-04 - 6.150000000e-01, -2.555439173e-13, -4.911210254e-02, +1.451637753e-03 - 6.200000000e-01, -6.127849048e-14, -4.463876552e-02, +1.601088435e-03 - 6.250000000e-01, -4.541728911e-27, -3.646351194e-02, +1.457035628e-03 - 6.300000000e-01, +1.237191386e-14, -2.549198509e-02, +1.214468570e-03 - 6.350000000e-01, +1.041653328e-14, -1.297418192e-02, +9.777603934e-04 - 6.400000000e-01, +6.283031218e-15, -3.201355725e-04, +7.903500373e-04 - 6.450000000e-01, +3.204660344e-15, +1.110618470e-02, +6.640241528e-04 - 6.500000000e-01, +1.447427579e-15, +2.017987189e-02, +5.887787166e-04 - 6.550000000e-01, +5.854386450e-16, +2.616180763e-02, +5.512134172e-04 - 6.600000000e-01, +2.096852970e-16, +2.877361679e-02, +5.342434883e-04 - 6.650000000e-01, +6.350696352e-17, +2.819468642e-02, +5.282493485e-04 - 6.700000000e-01, +1.377953018e-17, +2.498716492e-02, +5.294303063e-04 - 6.750000000e-01, +5.379378296e-31, +1.996830069e-02, +5.280144797e-04 - 6.800000000e-01, -2.277741020e-18, +1.405591714e-02, +5.258506449e-04 - 6.850000000e-01, -1.735246645e-18, +8.119046347e-03, +5.240596636e-04 - 6.900000000e-01, -9.470606165e-19, +2.863116087e-03, +5.174405378e-04 - 6.950000000e-01, -4.370801840e-19, -1.243144561e-03, +5.109035105e-04 - 7.000000000e-01, -1.786267540e-19, -3.991882372e-03, +5.037114564e-04 - 7.050000000e-01, -6.537347961e-20, -5.408196638e-03, +4.949700531e-04 - 7.100000000e-01, -2.118647699e-20, -5.691326856e-03, +4.888830568e-04 - 7.150000000e-01, -5.806075333e-21, -5.144242785e-03, +4.831363177e-04 - 7.200000000e-01, -1.139898758e-21, -4.101378065e-03, +4.814481570e-04 - 7.250000000e-01, -1.620612745e-35, -2.866853276e-03, +4.859252288e-04 - 7.300000000e-01, +1.542685213e-22, -1.676051854e-03, +4.946064917e-04 - 7.350000000e-01, +1.063419792e-22, -6.817245666e-04, +5.126814873e-04 - 7.400000000e-01, +5.251602594e-23, +4.504131415e-05, +5.391309966e-04 - 7.450000000e-01, +2.193035927e-23, +5.001051580e-04, +5.722673601e-04 - 7.500000000e-01, +8.109642085e-24, +7.228963385e-04, +6.131672878e-04 - 7.550000000e-01, +2.685513466e-24, +7.748034491e-04, +6.573816257e-04 - 7.600000000e-01, +7.875081013e-25, +7.197485006e-04, +7.019729730e-04 - 7.650000000e-01, +1.952762843e-25, +6.131998820e-04, +7.409232450e-04 - 7.700000000e-01, +3.468994959e-26, +4.974511884e-04, +7.687674363e-04 - 7.750000000e-01, -3.496765852e-40, +3.961202656e-04, +7.819734488e-04 - 7.800000000e-01, -3.843755978e-27, +3.192304693e-04, +7.716090100e-04 - 7.850000000e-01, -2.397473318e-27, +2.704230224e-04, +7.370532023e-04 - 7.900000000e-01, -1.071300850e-27, +2.447243075e-04, +6.785655444e-04 - 7.950000000e-01, -4.047957029e-28, +2.340727089e-04, +5.930049452e-04 - 8.000000000e-01, -1.354448156e-28, +2.340860218e-04, +4.887276360e-04 - 8.050000000e-01, -4.058434912e-29, +2.393559068e-04, +3.725386066e-04 - 8.100000000e-01, -1.076854018e-29, +2.451595087e-04, +2.505379173e-04 - 8.150000000e-01, -2.416138676e-30, +2.510675527e-04, +1.354236798e-04 - 8.200000000e-01, -3.883708049e-31, +2.555979492e-04, +3.567358407e-05 - 8.250000000e-01, +1.025357826e-44, +2.583698402e-04, -4.055743801e-05 - 8.300000000e-01, +3.523220453e-32, +2.611145307e-04, -8.754999295e-05 - 8.350000000e-01, +1.988421014e-32, +2.620413397e-04, -1.034770143e-04 - 8.400000000e-01, +8.039639276e-33, +2.623297718e-04, -8.760789565e-05 - 8.450000000e-01, +2.748726687e-33, +2.643788438e-04, -4.661869457e-05 - 8.500000000e-01, +8.322017093e-34, +2.643182022e-04, +1.368860737e-05 - 8.550000000e-01, +2.256292263e-34, +2.640282981e-04, +8.654552627e-05 - 8.600000000e-01, +5.417066333e-35, +2.664805994e-04, +1.604377192e-04 - 8.650000000e-01, +1.099764584e-35, +2.663099299e-04, +2.298583029e-04 - 8.700000000e-01, +1.599539611e-36, +2.660179833e-04, +2.884951850e-04 - 8.750000000e-01, -6.322229835e-50, +2.685199977e-04, +3.312510073e-04 - 8.800000000e-01, -1.188035304e-37, +2.682320543e-04, +3.588965710e-04 - 8.850000000e-01, -6.066922176e-38, +2.683112577e-04, +3.703232739e-04 - 8.900000000e-01, -2.219561560e-38, +2.703935497e-04, +3.691403729e-04 - 8.950000000e-01, -6.866457597e-39, +2.698472648e-04, +3.595329065e-04 - 9.000000000e-01, -1.881049996e-39, +2.706207341e-04, +3.430582636e-04 - 9.050000000e-01, -4.614638035e-40, +2.720917241e-04, +3.257219082e-04 - 9.100000000e-01, -1.002482944e-40, +2.712077240e-04, +3.094350820e-04 - 9.150000000e-01, -1.841548328e-41, +2.727529161e-04, +2.949318868e-04 - 9.200000000e-01, -2.423533024e-42, +2.737196170e-04, +2.849869738e-04 - 9.250000000e-01, +1.347746337e-55, +2.726148010e-04, +2.784579250e-04 - 9.300000000e-01, +1.473751950e-43, +2.747448133e-04, +2.752833428e-04 - 9.350000000e-01, +6.809794745e-44, +2.755175735e-04, +2.744736032e-04 - 9.400000000e-01, +2.254256572e-44, +2.745679107e-04, +2.750627722e-04 - 9.450000000e-01, +6.310146526e-45, +2.769515396e-04, +2.773500805e-04 - 9.500000000e-01, +1.564147094e-45, +2.778453197e-04, +2.785762868e-04 - 9.550000000e-01, +3.472045809e-46, +2.775231024e-04, +2.800349953e-04 - 9.600000000e-01, +6.824885183e-47, +2.797715846e-04, +2.820823759e-04 - 9.650000000e-01, +1.134415180e-47, +2.808776348e-04, +2.820074542e-04 - 9.700000000e-01, +1.350853967e-48, +2.813963412e-04, +2.824884529e-04 - 9.750000000e-01, -8.526671746e-62, +2.830541451e-04, +2.831324775e-04 - 9.800000000e-01, -6.725505882e-50, +2.841141505e-04, +2.824722431e-04 - 9.850000000e-01, -2.811934097e-50, +2.851491801e-04, +2.825206898e-04 - 9.900000000e-01, -8.422577434e-51, +2.857589547e-04, +2.823771225e-04 - 9.950000000e-01, -2.133298675e-51, +2.863310142e-04, +2.821945750e-04 - 1.000000000e+00, -4.784762256e-52, +2.871423693e-04, +2.820923983e-04 + 5.000000000e-03, -4.204561825e-04, -1.372355600e-04, -5.065452825e-22 + 1.000000000e-02, -5.525736376e-04, -2.768477037e-04, +1.575763957e-21 + 1.500000000e-02, -6.140819852e-04, -3.268163859e-04, -1.032798000e-21 + 2.000000000e-02, -4.889024863e-04, -2.310789623e-04, +1.869605058e-21 + 2.500000000e-02, -3.051675161e-18, +2.666703698e-04, +3.212734954e-22 + 3.000000000e-02, +1.088072493e-03, +1.333462552e-03, +6.574010005e-20 + 3.500000000e-02, +3.041567984e-03, +3.267358426e-03, +1.233270725e-19 + 4.000000000e-02, +6.091116670e-03, +6.298866841e-03, +2.340011443e-19 + 4.500000000e-02, +1.031485399e-02, +1.050499965e-02, +6.656483082e-19 + 5.000000000e-02, +1.546789803e-02, +1.564546720e-02, +7.413611837e-19 + 5.500000000e-02, +2.077156516e-02, +2.094951513e-02, +1.386310330e-18 + 6.000000000e-02, +2.470069612e-02, +2.491313898e-02, +2.037543604e-18 + 6.500000000e-02, +2.483796096e-02, +2.510856003e-02, +1.649354595e-18 + 7.000000000e-02, +1.789296781e-02, +1.825786070e-02, +3.745301664e-18 + 7.500000000e-02, -2.885970849e-17, +5.116704638e-04, +4.395650905e-18 + 8.000000000e-02, -3.260311305e-02, -3.191785195e-02, +4.834348342e-18 + 8.500000000e-02, -8.246493451e-02, -8.158501484e-02, -9.619797623e-19 + 9.000000000e-02, -1.494305036e-01, -1.483421678e-01, -9.697820057e-17 + 9.500000000e-02, -2.289686265e-01, -2.276918608e-01, -8.539523958e-16 + 1.000000000e-01, -3.106810371e-01, -3.092516108e-01, -6.477780006e-15 + 1.050000000e-01, -3.775054448e-01, -3.759601744e-01, -4.395648630e-14 + 1.100000000e-01, -4.061942227e-01, -4.045725400e-01, -2.698275123e-13 + 1.150000000e-01, -3.695821957e-01, -3.679216876e-01, -1.509875053e-12 + 1.200000000e-01, -2.409062313e-01, -2.392327277e-01, -7.742134141e-12 + 1.250000000e-01, +2.343888163e-16, +1.648793989e-03, -3.654747037e-11 + 1.300000000e-01, +3.593898657e-01, +3.609079016e-01, -1.594313124e-10 + 1.350000000e-01, +8.225203029e-01, +8.236876014e-01, -6.446384098e-10 + 1.400000000e-01, +1.348612313e+00, +1.349024689e+00, -2.421496590e-09 + 1.450000000e-01, +1.869796708e+00, +1.868794378e+00, -8.464185863e-09 + 1.500000000e-01, +2.295639612e+00, +2.292310507e+00, -2.755740009e-08 + 1.550000000e-01, +2.523961555e+00, +2.517204835e+00, -8.358950510e-08 + 1.600000000e-01, +2.457331849e+00, +2.446003413e+00, -2.360889142e-07 + 1.650000000e-01, +2.023073496e+00, +2.006245268e+00, -6.198760827e-07 + 1.700000000e-01, +1.193216375e+00, +1.170501686e+00, -1.508341849e-06 + 1.750000000e-01, -2.429847328e-15, -2.811424978e-02, -3.383291458e-06 + 1.800000000e-01, -1.457397771e+00, -1.489281056e+00, -6.931218033e-06 + 1.850000000e-01, -3.018071006e+00, -3.050826731e+00, -1.275149362e-05 + 1.900000000e-01, -4.477550561e+00, -4.507130087e+00, -2.034209320e-05 + 1.950000000e-01, -5.617179743e+00, -5.638770098e+00, -2.567346106e-05 + 2.000000000e-01, -6.240195442e+00, -6.248845777e+00, -1.655146561e-05 + 2.050000000e-01, -6.207943693e+00, -6.199369191e+00, +3.465328750e-05 + 2.100000000e-01, -5.468892605e+00, -5.440318963e+00, +1.800690952e-04 + 2.150000000e-01, -4.073969730e+00, -4.024835976e+00, +5.040310132e-04 + 2.200000000e-01, -2.174181990e+00, -2.106553983e+00, +1.123447369e-03 + 2.250000000e-01, +1.316268185e-14, +8.143006830e-02, +2.172872637e-03 + 2.300000000e-01, +2.174181990e+00, +2.262556595e+00, +3.767029670e-03 + 2.350000000e-01, +4.073969730e+00, +4.161132300e+00, +5.937769792e-03 + 2.400000000e-01, +5.468892605e+00, +5.546524634e+00, +8.549006978e-03 + 2.450000000e-01, +6.207943693e+00, +6.268764628e+00, +1.119915241e-02 + 2.500000000e-01, +6.240195442e+00, +6.279010884e+00, +1.312459642e-02 + 2.550000000e-01, +5.617179743e+00, +5.631588195e+00, +1.312318719e-02 + 2.600000000e-01, +4.477550561e+00, +4.468177987e+00, +9.530076029e-03 + 2.650000000e-01, +3.018071006e+00, +2.988313662e+00, +3.008352239e-04 + 2.700000000e-01, +1.457397771e+00, +1.412743251e+00, -1.672529553e-02 + 2.750000000e-01, +2.429847328e-15, -5.292842286e-02, -4.332059946e-02 + 2.800000000e-01, -1.193216375e+00, -1.247700830e+00, -8.011657114e-02 + 2.850000000e-01, -2.023073496e+00, -2.073237824e+00, -1.256824086e-01 + 2.900000000e-01, -2.457331849e+00, -2.498821394e+00, -1.755916449e-01 + 2.950000000e-01, -2.523961555e+00, -2.554292475e+00, -2.216932819e-01 + 3.000000000e-01, -2.295639612e+00, -2.314203094e+00, -2.518599038e-01 + 3.050000000e-01, -1.869796708e+00, -1.877568047e+00, -2.505419293e-01 + 3.100000000e-01, -1.348612313e+00, -1.347678916e+00, -2.004478135e-01 + 3.150000000e-01, -8.225203029e-01, -8.155374439e-01, -8.549956606e-02 + 3.200000000e-01, -3.593898657e-01, -3.490662015e-01, +1.051120149e-01 + 3.250000000e-01, -1.723350142e-14, +1.129722163e-02, +3.723054651e-01 + 3.300000000e-01, +2.409062313e-01, +2.513918903e-01, +7.027478871e-01 + 3.350000000e-01, +3.695821957e-01, +3.781420860e-01, +1.065821388e+00 + 3.400000000e-01, +4.061942227e-01, +4.123439321e-01, +1.413152230e+00 + 3.450000000e-01, +3.775054448e-01, +3.812601920e-01, +1.681814306e+00 + 3.500000000e-01, +3.106810371e-01, +3.123876070e-01, +1.801679241e+00 + 3.550000000e-01, +2.289686265e-01, +2.291415210e-01, +1.706485823e+00 + 3.600000000e-01, +1.494305036e-01, +1.486122433e-01, +1.347356833e+00 + 3.650000000e-01, +8.246493451e-02, +8.113092744e-02, +7.065627933e-01 + 3.700000000e-01, +3.260311305e-02, +3.111600277e-02, -1.914642769e-01 + 3.750000000e-01, +2.819603979e-15, -1.404292802e-03, -1.274901740e+00 + 3.800000000e-01, -1.789296781e-02, -1.909277392e-02, -2.427408588e+00 + 3.850000000e-01, -2.483796096e-02, -2.579664270e-02, -3.500130657e+00 + 3.900000000e-01, -2.470069612e-02, -2.543679340e-02, -4.332037087e+00 + 3.950000000e-01, -2.077156516e-02, -2.133157149e-02, -4.775816538e+00 + 4.000000000e-01, -1.546789803e-02, -1.590526908e-02, -4.724853592e+00 + 4.050000000e-01, -1.031485399e-02, -1.067686760e-02, -4.135894301e+00 + 4.100000000e-01, -6.091116670e-03, -6.413338880e-03, -3.042455647e+00 + 4.150000000e-01, -3.041567984e-03, -3.347590794e-03, -1.555433731e+00 + 4.200000000e-01, -1.088072493e-03, -1.389554268e-03, +1.503822423e-01 + 4.250000000e-01, -1.275717457e-16, -2.995064781e-04, +1.862039013e+00 + 4.300000000e-01, +4.889024863e-04, +1.941689465e-04, +3.361896348e+00 + 4.350000000e-01, +6.140819852e-04, +3.301372063e-04, +4.462759288e+00 + 4.400000000e-01, +5.525736376e-04, +2.854895253e-04, +5.037821074e+00 + 4.450000000e-01, +4.204561825e-04, +1.741971507e-04, +5.039629281e+00 + 4.500000000e-01, +2.833044348e-04, +5.700503910e-05, +4.504737032e+00 + 4.550000000e-01, +1.709447271e-04, -4.405130144e-05, +3.543482320e+00 + 4.600000000e-01, +9.133980795e-05, -1.312500586e-04, +2.317515506e+00 + 4.650000000e-01, +4.126969468e-05, -2.232931046e-04, +1.010103265e+00 + 4.700000000e-01, +1.335863584e-05, -3.454537785e-04, -2.048055017e-01 + 4.750000000e-01, +1.888516403e-18, -5.222323413e-04, -1.188767560e+00 + 4.800000000e-01, -4.914367487e-06, -7.750959949e-04, -1.855881786e+00 + 4.850000000e-01, -5.585245819e-06, -1.115324597e-03, -2.178713151e+00 + 4.900000000e-01, -4.547541263e-06, -1.537090408e-03, -2.183322259e+00 + 4.950000000e-01, -3.130961891e-06, -2.012400350e-03, -1.935923923e+00 + 5.000000000e-01, -1.908890266e-06, -2.484516257e-03, -1.525081205e+00 + 5.050000000e-01, -1.042206678e-06, -2.862955168e-03, -1.043338312e+00 + 5.100000000e-01, -5.038819347e-07, -3.024743600e-03, -5.718283326e-01 + 5.150000000e-01, -2.060015565e-07, -2.824752434e-03, -1.701654561e-01 + 5.200000000e-01, -6.033536005e-08, -2.110099227e-03, +1.277509450e-01 + 5.250000000e-01, -9.644121496e-21, -7.439345335e-04, +3.125215118e-01 + 5.300000000e-01, +1.817266122e-08, +1.359225887e-03, +3.941219649e-01 + 5.350000000e-01, +1.868803958e-08, +4.200368924e-03, +3.948411394e-01 + 5.400000000e-01, +1.376793013e-08, +7.664016878e-03, +3.420465633e-01 + 5.450000000e-01, +8.577097330e-09, +1.149275531e-02, +2.621957853e-01 + 5.500000000e-01, +4.731665902e-09, +1.528517740e-02, +1.768297798e-01 + 5.550000000e-01, +2.337531714e-09, +1.851820152e-02, +1.006737511e-01 + 5.600000000e-01, +1.022593435e-09, +2.059553585e-02, +4.158723758e-02 + 5.650000000e-01, +3.782816423e-10, +2.092398946e-02, +1.723512177e-03 + 5.700000000e-01, +1.002506563e-10, +1.900977907e-02, -2.071508641e-02 + 5.750000000e-01, +1.164310201e-23, +1.456001981e-02, -2.963650520e-02 + 5.800000000e-01, -2.472150748e-11, +7.570042193e-03, -2.955907908e-02 + 5.850000000e-01, -2.300333036e-11, -1.618644852e-03, -2.457243978e-02 + 5.900000000e-01, -1.533437842e-11, -1.230966525e-02, -1.779353174e-02 + 5.950000000e-01, -8.643873713e-12, -2.350396242e-02, -1.124458956e-02 + 6.000000000e-01, -4.314720803e-12, -3.400651992e-02, -5.959505506e-03 + 6.050000000e-01, -1.928708926e-12, -4.258056666e-02, -2.251682108e-03 + 6.100000000e-01, -7.634537466e-13, -4.812729344e-02, -1.944808006e-06 + 6.150000000e-01, -2.555439173e-13, -4.985827499e-02, +1.131387319e-03 + 6.200000000e-01, -6.127849048e-14, -4.743145269e-02, +1.524927693e-03 + 6.250000000e-01, -4.541728911e-27, -4.102128372e-02, +1.496277681e-03 + 6.300000000e-01, +1.237191386e-14, -3.130923222e-02, +1.286185270e-03 + 6.350000000e-01, +1.041653328e-14, -1.939358539e-02, +1.037950100e-03 + 6.400000000e-01, +6.283031218e-15, -6.629435720e-03, +8.221271834e-04 + 6.450000000e-01, +3.204660344e-15, +5.570372277e-03, +6.659544173e-04 + 6.500000000e-01, +1.447427579e-15, +1.593950186e-02, +5.667365603e-04 + 6.550000000e-01, +5.854386450e-16, +2.353190035e-02, +5.128190666e-04 + 6.600000000e-01, +2.096852970e-16, +2.783401897e-02, +4.864553060e-04 + 6.650000000e-01, +6.350696352e-17, +2.880146865e-02, +4.759463957e-04 + 6.700000000e-01, +1.377953018e-17, +2.681846160e-02, +4.754357529e-04 + 6.750000000e-01, +5.379378296e-31, +2.259337024e-02, +4.742540093e-04 + 6.800000000e-01, -2.277741020e-18, +1.701300599e-02, +4.729023782e-04 + 6.850000000e-01, -1.735246645e-18, +1.098728471e-02, +4.719367941e-04 + 6.900000000e-01, -9.470606165e-19, +5.316416417e-03, +4.663455368e-04 + 6.950000000e-01, -4.370801840e-19, +5.935849627e-04, +4.604477808e-04 + 7.000000000e-01, -1.786267540e-19, -2.844509692e-03, +4.535957736e-04 + 7.050000000e-01, -6.537347961e-20, -4.911714935e-03, +4.449016721e-04 + 7.100000000e-01, -2.118647699e-20, -5.727982852e-03, +4.381864840e-04 + 7.150000000e-01, -5.806075333e-21, -5.554370684e-03, +4.313345980e-04 + 7.200000000e-01, -1.139898758e-21, -4.718619831e-03, +4.277145132e-04 + 7.250000000e-01, -1.620612745e-35, -3.545671653e-03, +4.294122165e-04 + 7.300000000e-01, +1.542685213e-22, -2.308296837e-03, +4.347899752e-04 + 7.350000000e-01, +1.063419792e-22, -1.202033282e-03, +4.488369599e-04 + 7.400000000e-01, +5.251602594e-23, -3.374508168e-04, +4.710786766e-04 + 7.450000000e-01, +2.193035927e-23, +2.507797380e-04, +5.003900821e-04 + 7.500000000e-01, +8.109642085e-24, +5.829705686e-04, +5.382118411e-04 + 7.550000000e-01, +2.685513466e-24, +7.122384518e-04, +5.809186893e-04 + 7.600000000e-01, +7.875081013e-25, +7.027927889e-04, +6.261043687e-04 + 7.650000000e-01, +1.952762843e-25, +6.156591070e-04, +6.683280007e-04 + 7.700000000e-01, +3.468994959e-26, +5.008972786e-04, +7.023127429e-04 + 7.750000000e-01, -3.496765852e-40, +3.901331387e-04, +7.243104846e-04 + 7.800000000e-01, -3.843755978e-27, +2.998311572e-04, +7.252655938e-04 + 7.850000000e-01, -2.397473318e-27, +2.377462921e-04, +7.033746682e-04 + 7.900000000e-01, -1.071300850e-27, +2.013511921e-04, +6.576749312e-04 + 7.950000000e-01, -4.047957029e-28, +1.834534227e-04, +5.840307464e-04 + 8.000000000e-01, -1.354448156e-28, +1.792152633e-04, +4.889649393e-04 + 8.050000000e-01, -4.058434912e-29, +1.825593405e-04, +3.781421839e-04 + 8.100000000e-01, -1.076854018e-29, +1.880221047e-04, +2.570309958e-04 + 8.150000000e-01, -2.416138676e-30, +1.943111059e-04, +1.377167927e-04 + 8.200000000e-01, -3.883708049e-31, +1.995158443e-04, +2.908880599e-05 + 8.250000000e-01, +1.025357826e-44, +2.029625271e-04, -5.982094585e-05 + 8.300000000e-01, +3.523220453e-32, +2.061475429e-04, -1.219278619e-04 + 8.350000000e-01, +1.988421014e-32, +2.074515962e-04, -1.537070015e-04 + 8.400000000e-01, +8.039639276e-33, +2.079480326e-04, -1.528269615e-04 + 8.450000000e-01, +2.748726687e-33, +2.099544896e-04, -1.241951316e-04 + 8.500000000e-01, +8.322017093e-34, +2.100094651e-04, -7.261180819e-05 + 8.550000000e-01, +2.256292263e-34, +2.097662303e-04, -4.338343337e-06 + 8.600000000e-01, +5.417066333e-35, +2.120419428e-04, +6.937026123e-05 + 8.650000000e-01, +1.099764584e-35, +2.119761891e-04, +1.422288650e-04 + 8.700000000e-01, +1.599539611e-36, +2.117370524e-04, +2.070336700e-04 + 8.750000000e-01, -6.322229835e-50, +2.140731914e-04, +2.576040934e-04 + 8.800000000e-01, -1.188035304e-37, +2.139085089e-04, +2.933273966e-04 + 8.850000000e-01, -6.066922176e-38, +2.140217876e-04, +3.122341182e-04 + 8.900000000e-01, -2.219561560e-38, +2.159888483e-04, +3.170515957e-04 + 8.950000000e-01, -6.866457597e-39, +2.155729282e-04, +3.115406361e-04 + 9.000000000e-01, -1.881049996e-39, +2.163182952e-04, +2.973765395e-04 + 9.050000000e-01, -4.614638035e-40, +2.177376590e-04, +2.805435086e-04 + 9.100000000e-01, -1.002482944e-40, +2.169880189e-04, +2.634820011e-04 + 9.150000000e-01, -1.841548328e-41, +2.184243469e-04, +2.474819008e-04 + 9.200000000e-01, -2.423533024e-42, +2.193856926e-04, +2.356124651e-04 + 9.250000000e-01, +1.347746337e-55, +2.184083467e-04, +2.272392912e-04 + 9.300000000e-01, +1.473751950e-43, +2.203584750e-04, +2.225130608e-04 + 9.350000000e-01, +6.809794745e-44, +2.211345935e-04, +2.205871215e-04 + 9.400000000e-01, +2.254256572e-44, +2.202842119e-04, +2.205025438e-04 + 9.450000000e-01, +6.310146526e-45, +2.224583123e-04, +2.224305155e-04 + 9.500000000e-01, +1.564147094e-45, +2.233412630e-04, +2.236925644e-04 + 9.550000000e-01, +3.472045809e-46, +2.230802484e-04, +2.252859374e-04 + 9.600000000e-01, +6.824885183e-47, +2.251621531e-04, +2.274781788e-04 + 9.650000000e-01, +1.134415180e-47, +2.262626847e-04, +2.277056237e-04 + 9.700000000e-01, +1.350853967e-48, +2.268272547e-04, +2.283394661e-04 + 9.750000000e-01, -8.526671746e-62, +2.284429790e-04, +2.290658008e-04 + 9.800000000e-01, -6.725505882e-50, +2.295494122e-04, +2.285373151e-04 + 9.850000000e-01, -2.811934097e-50, +2.306545763e-04, +2.285922624e-04 + 9.900000000e-01, -8.422577434e-51, +2.313803724e-04, +2.284499207e-04 + 9.950000000e-01, -2.133298675e-51, +2.320640712e-04, +2.282600142e-04 + 1.000000000e+00, -4.784762256e-52, +2.329781244e-04, +2.281435227e-04 diff --git a/test/examples/ref/coaxial/open/domain-E.csv b/test/examples/ref/coaxial/open/domain-E.csv index 226afdca0..6ee72c4e2 100644 --- a/test/examples/ref/coaxial/open/domain-E.csv +++ b/test/examples/ref/coaxial/open/domain-E.csv @@ -1,202 +1,202 @@ t (ns), E_elec (J), E_mag (J), E_cap (J), E_ind (J) 0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, +2.620423449e-13, +2.405186616e-13, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-02, +2.130484507e-12, +2.258001913e-12, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-02, +5.280441196e-12, +5.252502459e-12, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-02, +5.723485707e-12, +5.889336112e-12, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-02, +1.384423851e-11, +1.351752176e-11, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-02, +1.264406630e-10, +1.273520868e-10, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-02, +7.248276845e-10, +7.322638095e-10, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-02, +2.826288063e-09, +2.865189180e-09, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-02, +8.472578774e-09, +8.624044305e-09, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-02, +2.067791389e-08, +2.112506274e-08, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-02, +4.204801356e-08, +4.310959893e-08, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-02, +7.139216297e-08, +7.352519985e-08, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-02, +9.984652933e-08, +1.034135993e-07, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-02, +1.129356653e-07, +1.176883153e-07, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-02, +1.116885029e-07, +1.163252374e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-02, +1.680676068e-07, +1.704654187e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-02, +5.145121071e-07, +5.145849915e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-02, +1.625634693e-06, +1.632515993e-06, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-02, +4.189260303e-06, +4.233144612e-06, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-01, +8.834283227e-06, +8.979142522e-06, +0.000000000e+00, +0.000000000e+00 - 1.050000000e-01, +1.557257842e-05, +1.591718869e-05, +0.000000000e+00, +0.000000000e+00 - 1.100000000e-01, +2.318792918e-05, +2.383893340e-05, +0.000000000e+00, +0.000000000e+00 - 1.150000000e-01, +2.921180439e-05, +3.021934654e-05, +0.000000000e+00, +0.000000000e+00 - 1.200000000e-01, +3.137262067e-05, +3.264253087e-05, +0.000000000e+00, +0.000000000e+00 - 1.250000000e-01, +3.101355047e-05, +3.225591444e-05, +0.000000000e+00, +0.000000000e+00 - 1.300000000e-01, +3.761730158e-05, +3.843217751e-05, +0.000000000e+00, +0.000000000e+00 - 1.350000000e-01, +7.158794951e-05, +7.177794011e-05, +0.000000000e+00, +0.000000000e+00 - 1.400000000e-01, +1.611519268e-04, +1.612562358e-04, +0.000000000e+00, +0.000000000e+00 - 1.450000000e-01, +3.305914672e-04, +3.324397053e-04, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-01, +5.820784545e-04, +5.889630356e-04, +0.000000000e+00, +0.000000000e+00 - 1.550000000e-01, +8.805796322e-04, +8.966101221e-04, +0.000000000e+00, +0.000000000e+00 - 1.600000000e-01, +1.155885869e-03, +1.184347393e-03, +0.000000000e+00, +0.000000000e+00 - 1.650000000e-01, +1.331885944e-03, +1.373024871e-03, +0.000000000e+00, +0.000000000e+00 - 1.700000000e-01, +1.378531485e-03, +1.427869636e-03, +0.000000000e+00, +0.000000000e+00 - 1.750000000e-01, +1.362174796e-03, +1.410730868e-03, +0.000000000e+00, +0.000000000e+00 - 1.800000000e-01, +1.458232463e-03, +1.495509375e-03, +0.000000000e+00, +0.000000000e+00 - 1.850000000e-01, +1.899735491e-03, +1.918963559e-03, +0.000000000e+00, +0.000000000e+00 - 1.900000000e-01, +2.868535496e-03, +2.872019129e-03, +0.000000000e+00, +0.000000000e+00 - 1.950000000e-01, +4.377346610e-03, +4.378882949e-03, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-01, +6.212942789e-03, +6.234992740e-03, +0.000000000e+00, +0.000000000e+00 - 2.050000000e-01, +7.991627673e-03, +8.057270027e-03, +0.000000000e+00, +0.000000000e+00 - 2.100000000e-01, +9.319711678e-03, +9.442368641e-03, +0.000000000e+00, +0.000000000e+00 - 2.150000000e-01, +9.985360399e-03, +1.016109920e-02, +0.000000000e+00, +0.000000000e+00 - 2.200000000e-01, +1.007719115e-02, +1.028379825e-02, +0.000000000e+00, +0.000000000e+00 - 2.250000000e-01, +9.955566915e-03, +1.015955736e-02, +0.000000000e+00, +0.000000000e+00 - 2.300000000e-01, +1.008211612e-02, +1.025087432e-02, +0.000000000e+00, +0.000000000e+00 - 2.350000000e-01, +1.079468613e-02, +1.090826494e-02, +0.000000000e+00, +0.000000000e+00 - 2.400000000e-01, +1.214733434e-02, +1.220460425e-02, +0.000000000e+00, +0.000000000e+00 - 2.450000000e-01, +1.389710952e-02, +1.391385800e-02, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-01, +1.563539338e-02, +1.563595409e-02, +0.000000000e+00, +0.000000000e+00 - 2.550000000e-01, +1.698401897e-02, +1.699085868e-02, +0.000000000e+00, +0.000000000e+00 - 2.600000000e-01, +1.775068986e-02, +1.777666235e-02, +0.000000000e+00, +0.000000000e+00 - 2.650000000e-01, +1.797391969e-02, +1.801978924e-02, +0.000000000e+00, +0.000000000e+00 - 2.700000000e-01, +1.785607205e-02, +1.791291151e-02, +0.000000000e+00, +0.000000000e+00 - 2.750000000e-01, +1.764003211e-02, +1.769403714e-02, +0.000000000e+00, +0.000000000e+00 - 2.800000000e-01, +1.750077317e-02, +1.753801458e-02, +0.000000000e+00, +0.000000000e+00 - 2.850000000e-01, +1.749772466e-02, +1.750812485e-02, +0.000000000e+00, +0.000000000e+00 - 2.900000000e-01, +1.759126728e-02, +1.757311212e-02, +0.000000000e+00, +0.000000000e+00 - 2.950000000e-01, +1.769483180e-02, +1.766133549e-02, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-01, +1.772737985e-02, +1.771371997e-02, +0.000000000e+00, +0.000000000e+00 - 3.050000000e-01, +1.764527916e-02, +1.770871489e-02, +0.000000000e+00, +0.000000000e+00 - 3.100000000e-01, +1.745227074e-02, +1.765334982e-02, +0.000000000e+00, +0.000000000e+00 - 3.150000000e-01, +1.719682390e-02, +1.755294397e-02, +0.000000000e+00, +0.000000000e+00 - 3.200000000e-01, +1.696285177e-02, +1.738233820e-02, +0.000000000e+00, +0.000000000e+00 - 3.250000000e-01, +1.684902076e-02, +1.708247966e-02, +0.000000000e+00, +0.000000000e+00 - 3.300000000e-01, +1.692666529e-02, +1.659689894e-02, +0.000000000e+00, +0.000000000e+00 - 3.350000000e-01, +1.717720331e-02, +1.594178507e-02, +0.000000000e+00, +0.000000000e+00 - 3.400000000e-01, +1.743616896e-02, +1.527429745e-02, +0.000000000e+00, +0.000000000e+00 - 3.450000000e-01, +1.739589928e-02, +1.490056708e-02, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-01, +1.671561400e-02, +1.517088035e-02, +0.000000000e+00, +0.000000000e+00 - 3.550000000e-01, +1.523678145e-02, +1.626244257e-02, +0.000000000e+00, +0.000000000e+00 - 3.600000000e-01, +1.321433911e-02, +1.793930670e-02, +0.000000000e+00, +0.000000000e+00 - 3.650000000e-01, +1.140199517e-02, +1.945410268e-02, +0.000000000e+00, +0.000000000e+00 - 3.700000000e-01, +1.084342011e-02, +1.974586338e-02, +0.000000000e+00, +0.000000000e+00 - 3.750000000e-01, +1.235947263e-02, +1.795152629e-02, +0.000000000e+00, +0.000000000e+00 - 3.800000000e-01, +1.593938884e-02, +1.402828329e-02, +0.000000000e+00, +0.000000000e+00 - 3.850000000e-01, +2.040730358e-02, +9.113080665e-03, +0.000000000e+00, +0.000000000e+00 - 3.900000000e-01, +2.369372753e-02, +5.278223037e-03, +0.000000000e+00, +0.000000000e+00 - 3.950000000e-01, +2.374496442e-02, +4.633849391e-03, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-01, +1.968327954e-02, +8.152699658e-03, +0.000000000e+00, +0.000000000e+00 - 4.050000000e-01, +1.255671460e-02, +1.488013424e-02, +0.000000000e+00, +0.000000000e+00 - 4.100000000e-01, +5.127343541e-03, +2.209839097e-02, +0.000000000e+00, +0.000000000e+00 - 4.150000000e-01, +6.523555669e-04, +2.651644362e-02, +0.000000000e+00, +0.000000000e+00 - 4.200000000e-01, +1.238438121e-03, +2.592388058e-02, +0.000000000e+00, +0.000000000e+00 - 4.250000000e-01, +6.685639620e-03, +2.039195750e-02, +0.000000000e+00, +0.000000000e+00 - 4.300000000e-01, +1.451905157e-02, +1.230161512e-02, +0.000000000e+00, +0.000000000e+00 - 4.350000000e-01, +2.123084235e-02, +5.144546444e-03, +0.000000000e+00, +0.000000000e+00 - 4.400000000e-01, +2.403970108e-02, +1.767638306e-03, +0.000000000e+00, +0.000000000e+00 - 4.450000000e-01, +2.218221182e-02, +3.045670626e-03, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-01, +1.706461906e-02, +7.674930224e-03, +0.000000000e+00, +0.000000000e+00 - 4.550000000e-01, +1.130220285e-02, +1.309000194e-02, +0.000000000e+00, +0.000000000e+00 - 4.600000000e-01, +7.295242529e-03, +1.687525060e-02, +0.000000000e+00, +0.000000000e+00 - 4.650000000e-01, +6.160165116e-03, +1.785358836e-02, +0.000000000e+00, +0.000000000e+00 - 4.700000000e-01, +7.505820415e-03, +1.634669870e-02, +0.000000000e+00, +0.000000000e+00 - 4.750000000e-01, +9.992185350e-03, +1.364812220e-02, +0.000000000e+00, +0.000000000e+00 - 4.800000000e-01, +1.220146715e-02, +1.116511775e-02, +0.000000000e+00, +0.000000000e+00 - 4.850000000e-01, +1.329944961e-02, +9.750402848e-03, +0.000000000e+00, +0.000000000e+00 - 4.900000000e-01, +1.321604714e-02, +9.504025267e-03, +0.000000000e+00, +0.000000000e+00 - 4.950000000e-01, +1.240551987e-02, +9.996634752e-03, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-01, +1.144629542e-02, +1.066147867e-02, +0.000000000e+00, +0.000000000e+00 - 5.050000000e-01, +1.073468395e-02, +1.110125246e-02, +0.000000000e+00, +0.000000000e+00 - 5.100000000e-01, +1.038619049e-02, +1.119183695e-02, +0.000000000e+00, +0.000000000e+00 - 5.150000000e-01, +1.030834964e-02, +1.101416451e-02, +0.000000000e+00, +0.000000000e+00 - 5.200000000e-01, +1.033669793e-02, +1.072034711e-02, +0.000000000e+00, +0.000000000e+00 - 5.250000000e-01, +1.034029573e-02, +1.042868578e-02, +0.000000000e+00, +0.000000000e+00 - 5.300000000e-01, +1.026104623e-02, +1.018608453e-02, +0.000000000e+00, +0.000000000e+00 - 5.350000000e-01, +1.010147724e-02, +9.985116594e-03, +0.000000000e+00, +0.000000000e+00 - 5.400000000e-01, +9.894097575e-03, +9.801477664e-03, +0.000000000e+00, +0.000000000e+00 - 5.450000000e-01, +9.676531514e-03, +9.622873946e-03, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-01, +9.478660775e-03, +9.456755070e-03, +0.000000000e+00, +0.000000000e+00 - 5.550000000e-01, +9.316276790e-03, +9.318719552e-03, +0.000000000e+00, +0.000000000e+00 - 5.600000000e-01, +9.185099949e-03, +9.211499791e-03, +0.000000000e+00, +0.000000000e+00 - 5.650000000e-01, +9.055420121e-03, +9.107285232e-03, +0.000000000e+00, +0.000000000e+00 - 5.700000000e-01, +8.873688473e-03, +8.945090838e-03, +0.000000000e+00, +0.000000000e+00 - 5.750000000e-01, +8.577475113e-03, +8.649431089e-03, +0.000000000e+00, +0.000000000e+00 - 5.800000000e-01, +8.123153810e-03, +8.166438827e-03, +0.000000000e+00, +0.000000000e+00 - 5.850000000e-01, +7.515364847e-03, +7.501808123e-03, +0.000000000e+00, +0.000000000e+00 - 5.900000000e-01, +6.820793610e-03, +6.738305081e-03, +0.000000000e+00, +0.000000000e+00 - 5.950000000e-01, +6.152300664e-03, +6.015807995e-03, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-01, +5.623743088e-03, +5.474814473e-03, +0.000000000e+00, +0.000000000e+00 - 6.050000000e-01, +5.294181443e-03, +5.186989500e-03, +0.000000000e+00, +0.000000000e+00 - 6.100000000e-01, +5.131104862e-03, +5.109655202e-03, +0.000000000e+00, +0.000000000e+00 - 6.150000000e-01, +5.016756792e-03, +5.094020559e-03, +0.000000000e+00, +0.000000000e+00 - 6.200000000e-01, +4.799978675e-03, +4.949949105e-03, +0.000000000e+00, +0.000000000e+00 - 6.250000000e-01, +4.369676989e-03, +4.537422770e-03, +0.000000000e+00, +0.000000000e+00 - 6.300000000e-01, +3.711415783e-03, +3.836844442e-03, +0.000000000e+00, +0.000000000e+00 - 6.350000000e-01, +2.916160013e-03, +2.959784058e-03, +0.000000000e+00, +0.000000000e+00 - 6.400000000e-01, +2.136464826e-03, +2.094451962e-03, +0.000000000e+00, +0.000000000e+00 - 6.450000000e-01, +1.514659623e-03, +1.416484694e-03, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-01, +1.121889592e-03, +1.013320023e-03, +0.000000000e+00, +0.000000000e+00 - 6.550000000e-01, +9.380653783e-04, +8.594184132e-04, +0.000000000e+00, +0.000000000e+00 - 6.600000000e-01, +8.775750083e-04, +8.482817326e-04, +0.000000000e+00, +0.000000000e+00 - 6.650000000e-01, +8.405600725e-04, +8.561455951e-04, +0.000000000e+00, +0.000000000e+00 - 6.700000000e-01, +7.594153014e-04, +7.996706349e-04, +0.000000000e+00, +0.000000000e+00 - 6.750000000e-01, +6.185901446e-04, +6.604399884e-04, +0.000000000e+00, +0.000000000e+00 - 6.800000000e-01, +4.445602470e-04, +4.724047831e-04, +0.000000000e+00, +0.000000000e+00 - 6.850000000e-01, +2.790959772e-04, +2.885933233e-04, +0.000000000e+00, +0.000000000e+00 - 6.900000000e-01, +1.539815617e-04, +1.496285278e-04, +0.000000000e+00, +0.000000000e+00 - 6.950000000e-01, +7.914368563e-05, +6.890896763e-05, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-01, +4.539571239e-05, +3.596138566e-05, +0.000000000e+00, +0.000000000e+00 - 7.050000000e-01, +3.511387233e-05, +2.967212329e-05, +0.000000000e+00, +0.000000000e+00 - 7.100000000e-01, +3.257808557e-05, +3.113128393e-05, +0.000000000e+00, +0.000000000e+00 - 7.150000000e-01, +2.910677633e-05, +3.003230306e-05, +0.000000000e+00, +0.000000000e+00 - 7.200000000e-01, +2.276148960e-05, +2.433401660e-05, +0.000000000e+00, +0.000000000e+00 - 7.250000000e-01, +1.523198356e-05, +1.641684532e-05, +0.000000000e+00, +0.000000000e+00 - 7.300000000e-01, +8.737143253e-06, +9.252038913e-06, +0.000000000e+00, +0.000000000e+00 - 7.350000000e-01, +4.413782122e-06, +4.415061578e-06, +0.000000000e+00, +0.000000000e+00 - 7.400000000e-01, +2.180405350e-06, +1.930631642e-06, +0.000000000e+00, +0.000000000e+00 - 7.450000000e-01, +1.324210860e-06, +1.015959188e-06, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-01, +1.101032650e-06, +8.354959347e-07, +0.000000000e+00, +0.000000000e+00 - 7.550000000e-01, +1.031396012e-06, +8.682042889e-07, +0.000000000e+00, +0.000000000e+00 - 7.600000000e-01, +9.174750227e-07, +9.166799070e-07, +0.000000000e+00, +0.000000000e+00 - 7.650000000e-01, +7.377533896e-07, +9.584086614e-07, +0.000000000e+00, +0.000000000e+00 - 7.700000000e-01, +5.437857778e-07, +1.005813747e-06, +0.000000000e+00, +0.000000000e+00 - 7.750000000e-01, +4.012579653e-07, +1.041100835e-06, +0.000000000e+00, +0.000000000e+00 - 7.800000000e-01, +3.635897781e-07, +1.017905817e-06, +0.000000000e+00, +0.000000000e+00 - 7.850000000e-01, +4.560125386e-07, +8.949123288e-07, +0.000000000e+00, +0.000000000e+00 - 7.900000000e-01, +6.621902033e-07, +6.694432175e-07, +0.000000000e+00, +0.000000000e+00 - 7.950000000e-01, +9.201638388e-07, +3.911820241e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-01, +1.136957218e-06, +1.487291701e-07, +0.000000000e+00, +0.000000000e+00 - 8.050000000e-01, +1.222023797e-06, +3.387635460e-08, +0.000000000e+00, +0.000000000e+00 - 8.100000000e-01, +1.126887294e-06, +9.921092625e-08, +0.000000000e+00, +0.000000000e+00 - 8.150000000e-01, +8.711918904e-07, +3.296633999e-07, +0.000000000e+00, +0.000000000e+00 - 8.200000000e-01, +5.395257836e-07, +6.437471273e-07, +0.000000000e+00, +0.000000000e+00 - 8.250000000e-01, +2.475829571e-07, +9.262029874e-07, +0.000000000e+00, +0.000000000e+00 - 8.300000000e-01, +9.274803561e-08, +1.077317559e-06, +0.000000000e+00, +0.000000000e+00 - 8.350000000e-01, +1.132636343e-07, +1.054784346e-06, +0.000000000e+00, +0.000000000e+00 - 8.400000000e-01, +2.759882477e-07, +8.876386581e-07, +0.000000000e+00, +0.000000000e+00 - 8.450000000e-01, +4.974585551e-07, +6.567654980e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-01, +6.854930588e-07, +4.540488372e-07, +0.000000000e+00, +0.000000000e+00 - 8.550000000e-01, +7.790742866e-07, +3.421848959e-07, +0.000000000e+00, +0.000000000e+00 - 8.600000000e-01, +7.676369712e-07, +3.343257700e-07, +0.000000000e+00, +0.000000000e+00 - 8.650000000e-01, +6.840322560e-07, +3.998963258e-07, +0.000000000e+00, +0.000000000e+00 - 8.700000000e-01, +5.797195698e-07, +4.886058498e-07, +0.000000000e+00, +0.000000000e+00 - 8.750000000e-01, +4.979698021e-07, +5.571227851e-07, +0.000000000e+00, +0.000000000e+00 - 8.800000000e-01, +4.582712910e-07, +5.850966919e-07, +0.000000000e+00, +0.000000000e+00 - 8.850000000e-01, +4.561715477e-07, +5.759428011e-07, +0.000000000e+00, +0.000000000e+00 - 8.900000000e-01, +4.738927107e-07, +5.467107145e-07, +0.000000000e+00, +0.000000000e+00 - 8.950000000e-01, +4.931135511e-07, +5.154815525e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-01, +5.030764453e-07, +4.931587592e-07, +0.000000000e+00, +0.000000000e+00 - 9.050000000e-01, +5.019416198e-07, +4.818770846e-07, +0.000000000e+00, +0.000000000e+00 - 9.100000000e-01, +4.934673098e-07, +4.780929985e-07, +0.000000000e+00, +0.000000000e+00 - 9.150000000e-01, +4.825915701e-07, +4.768447382e-07, +0.000000000e+00, +0.000000000e+00 - 9.200000000e-01, +4.725305227e-07, +4.745879655e-07, +0.000000000e+00, +0.000000000e+00 - 9.250000000e-01, +4.640817810e-07, +4.699015799e-07, +0.000000000e+00, +0.000000000e+00 - 9.300000000e-01, +4.564166506e-07, +4.628036425e-07, +0.000000000e+00, +0.000000000e+00 - 9.350000000e-01, +4.482668274e-07, +4.538008123e-07, +0.000000000e+00, +0.000000000e+00 - 9.400000000e-01, +4.387790263e-07, +4.433749957e-07, +0.000000000e+00, +0.000000000e+00 - 9.450000000e-01, +4.278747852e-07, +4.320174605e-07, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-01, +4.162198624e-07, +4.204850731e-07, +0.000000000e+00, +0.000000000e+00 - 9.550000000e-01, +4.049498447e-07, +4.098925801e-07, +0.000000000e+00, +0.000000000e+00 - 9.600000000e-01, +3.952255346e-07, +4.014229648e-07, +0.000000000e+00, +0.000000000e+00 - 9.650000000e-01, +3.876444903e-07, +3.956658325e-07, +0.000000000e+00, +0.000000000e+00 - 9.700000000e-01, +3.816695783e-07, +3.918761343e-07, +0.000000000e+00, +0.000000000e+00 - 9.750000000e-01, +3.753226261e-07, +3.875569547e-07, +0.000000000e+00, +0.000000000e+00 - 9.800000000e-01, +3.654257780e-07, +3.787523412e-07, +0.000000000e+00, +0.000000000e+00 - 9.850000000e-01, +3.485123981e-07, +3.611884697e-07, +0.000000000e+00, +0.000000000e+00 - 9.900000000e-01, +3.221960735e-07, +3.319800184e-07, +0.000000000e+00, +0.000000000e+00 - 9.950000000e-01, +2.864959994e-07, +2.912581772e-07, +0.000000000e+00, +0.000000000e+00 - 1.000000000e+00, +2.444351113e-07, +2.428779988e-07, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-03, +2.483779150e-13, +2.279766032e-13, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-02, +2.276378059e-12, +2.403226901e-12, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-02, +6.974949774e-12, +6.967633381e-12, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-02, +1.068852323e-11, +1.090294512e-11, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-02, +1.063816272e-11, +1.075641631e-11, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-02, +4.202730563e-11, +4.218693243e-11, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-02, +3.050624355e-10, +3.068827427e-10, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-02, +1.439976958e-09, +1.454945004e-09, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-02, +4.931171162e-09, +5.006388444e-09, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-02, +1.336749762e-08, +1.362500393e-08, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-02, +2.985127508e-08, +3.053107528e-08, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-02, +5.562062711e-08, +5.712646741e-08, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-02, +8.601393272e-08, +8.879943839e-08, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-02, +1.083337530e-07, +1.125125483e-07, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-02, +1.114096581e-07, +1.162695644e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-02, +1.224159817e-07, +1.261101601e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-02, +2.812645825e-07, +2.821379312e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-02, +9.352103649e-07, +9.366000197e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-02, +2.681510288e-06, +2.701397407e-06, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-01, +6.231637746e-06, +6.316047208e-06, +0.000000000e+00, +0.000000000e+00 + 1.050000000e-01, +1.198909448e-05, +1.222067965e-05, +0.000000000e+00, +0.000000000e+00 + 1.100000000e-01, +1.941101090e-05, +1.989808976e-05, +0.000000000e+00, +0.000000000e+00 + 1.150000000e-01, +2.658602817e-05, +2.741744431e-05, +0.000000000e+00, +0.000000000e+00 + 1.200000000e-01, +3.084006910e-05, +3.200448516e-05, +0.000000000e+00, +0.000000000e+00 + 1.250000000e-01, +3.116938025e-05, +3.247495182e-05, +0.000000000e+00, +0.000000000e+00 + 1.300000000e-01, +3.243953094e-05, +3.351770194e-05, +0.000000000e+00, +0.000000000e+00 + 1.350000000e-01, +4.951460936e-05, +5.001117139e-05, +0.000000000e+00, +0.000000000e+00 + 1.400000000e-01, +1.076142984e-04, +1.076244444e-04, +0.000000000e+00, +0.000000000e+00 + 1.450000000e-01, +2.349993729e-04, +2.356504713e-04, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-01, +4.472801363e-04, +4.511525966e-04, +0.000000000e+00, +0.000000000e+00 + 1.550000000e-01, +7.291799861e-04, +7.401192526e-04, +0.000000000e+00, +0.000000000e+00 + 1.600000000e-01, +1.026236746e-03, +1.048199560e-03, +0.000000000e+00, +0.000000000e+00 + 1.650000000e-01, +1.259875309e-03, +1.294903116e-03, +0.000000000e+00, +0.000000000e+00 + 1.700000000e-01, +1.369839073e-03, +1.415939252e-03, +0.000000000e+00, +0.000000000e+00 + 1.750000000e-01, +1.369485226e-03, +1.419736213e-03, +0.000000000e+00, +0.000000000e+00 + 1.800000000e-01, +1.381796571e-03, +1.425914301e-03, +0.000000000e+00, +0.000000000e+00 + 1.850000000e-01, +1.621678186e-03, +1.650302782e-03, +0.000000000e+00, +0.000000000e+00 + 1.900000000e-01, +2.312297688e-03, +2.322641202e-03, +0.000000000e+00, +0.000000000e+00 + 1.950000000e-01, +3.563511952e-03, +3.563619498e-03, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-01, +5.275801512e-03, +5.284520535e-03, +0.000000000e+00, +0.000000000e+00 + 2.050000000e-01, +7.136188801e-03, +7.177535486e-03, +0.000000000e+00, +0.000000000e+00 + 2.100000000e-01, +8.731595807e-03, +8.825062915e-03, +0.000000000e+00, +0.000000000e+00 + 2.150000000e-01, +9.737443473e-03, +9.888385994e-03, +0.000000000e+00, +0.000000000e+00 + 2.200000000e-01, +1.008554902e-02, +1.028049080e-02, +0.000000000e+00, +0.000000000e+00 + 2.250000000e-01, +1.001406729e-02, +1.022385075e-02, +0.000000000e+00, +0.000000000e+00 + 2.300000000e-01, +9.961477273e-03, +1.015141018e-02, +0.000000000e+00, +0.000000000e+00 + 2.350000000e-01, +1.035427455e-02, +1.049684837e-02, +0.000000000e+00, +0.000000000e+00 + 2.400000000e-01, +1.140028272e-02, +1.148468019e-02, +0.000000000e+00, +0.000000000e+00 + 2.450000000e-01, +1.299654449e-02, +1.303081420e-02, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-01, +1.479431837e-02, +1.479981366e-02, +0.000000000e+00, +0.000000000e+00 + 2.550000000e-01, +1.637592669e-02, +1.637727921e-02, +0.000000000e+00, +0.000000000e+00 + 2.600000000e-01, +1.744273082e-02, +1.745827281e-02, +0.000000000e+00, +0.000000000e+00 + 2.650000000e-01, +1.792000725e-02, +1.795652360e-02, +0.000000000e+00, +0.000000000e+00 + 2.700000000e-01, +1.794180838e-02, +1.799471325e-02, +0.000000000e+00, +0.000000000e+00 + 2.750000000e-01, +1.774677843e-02, +1.780407365e-02, +0.000000000e+00, +0.000000000e+00 + 2.800000000e-01, +1.755419256e-02, +1.760147000e-02, +0.000000000e+00, +0.000000000e+00 + 2.850000000e-01, +1.748280210e-02, +1.750754851e-02, +0.000000000e+00, +0.000000000e+00 + 2.900000000e-01, +1.753735136e-02, +1.753295516e-02, +0.000000000e+00, +0.000000000e+00 + 2.950000000e-01, +1.764747642e-02, +1.761870358e-02, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-01, +1.772384036e-02, +1.769418265e-02, +0.000000000e+00, +0.000000000e+00 + 3.050000000e-01, +1.770163455e-02, +1.771820738e-02, +0.000000000e+00, +0.000000000e+00 + 3.100000000e-01, +1.756068127e-02, +1.768644462e-02, +0.000000000e+00, +0.000000000e+00 + 3.150000000e-01, +1.732785065e-02, +1.760935591e-02, +0.000000000e+00, +0.000000000e+00 + 3.200000000e-01, +1.707098826e-02, +1.747952341e-02, +0.000000000e+00, +0.000000000e+00 + 3.250000000e-01, +1.688513061e-02, +1.725290711e-02, +0.000000000e+00, +0.000000000e+00 + 3.300000000e-01, +1.686211596e-02, +1.686459986e-02, +0.000000000e+00, +0.000000000e+00 + 3.350000000e-01, +1.703673143e-02, +1.628462627e-02, +0.000000000e+00, +0.000000000e+00 + 3.400000000e-01, +1.732216215e-02, +1.559339428e-02, +0.000000000e+00, +0.000000000e+00 + 3.450000000e-01, +1.747607693e-02, +1.502775939e-02, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-01, +1.715292311e-02, +1.493702957e-02, +0.000000000e+00, +0.000000000e+00 + 3.550000000e-01, +1.607193770e-02, +1.561675816e-02, +0.000000000e+00, +0.000000000e+00 + 3.600000000e-01, +1.425732934e-02, +1.706303868e-02, +0.000000000e+00, +0.000000000e+00 + 3.650000000e-01, +1.221868516e-02, +1.878062245e-02, +0.000000000e+00, +0.000000000e+00 + 3.700000000e-01, +1.090198222e-02, +1.981899481e-02, +0.000000000e+00, +0.000000000e+00 + 3.750000000e-01, +1.131704946e-02, +1.913786218e-02, +0.000000000e+00, +0.000000000e+00 + 3.800000000e-01, +1.393733717e-02, +1.621324758e-02, +0.000000000e+00, +0.000000000e+00 + 3.850000000e-01, +1.817878510e-02, +1.157928584e-02, +0.000000000e+00, +0.000000000e+00 + 3.900000000e-01, +2.234078358e-02, +6.915718021e-03, +0.000000000e+00, +0.000000000e+00 + 3.950000000e-01, +2.421866038e-02, +4.456892791e-03, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-01, +2.221089322e-02, +5.883751791e-03, +0.000000000e+00, +0.000000000e+00 + 4.050000000e-01, +1.636047511e-02, +1.125355726e-02, +0.000000000e+00, +0.000000000e+00 + 4.100000000e-01, +8.668558606e-03, +1.863939940e-02, +0.000000000e+00, +0.000000000e+00 + 4.150000000e-01, +2.343723605e-03, +2.483949142e-02, +0.000000000e+00, +0.000000000e+00 + 4.200000000e-01, +2.648431248e-04, +2.690256493e-02, +0.000000000e+00, +0.000000000e+00 + 4.250000000e-01, +3.465464951e-03, +2.367161489e-02, +0.000000000e+00, +0.000000000e+00 + 4.300000000e-01, +1.051961265e-02, +1.645413827e-02, +0.000000000e+00, +0.000000000e+00 + 4.350000000e-01, +1.822570483e-02, +8.393417891e-03, +0.000000000e+00, +0.000000000e+00 + 4.400000000e-01, +2.322624516e-02, +2.873951328e-03, +0.000000000e+00, +0.000000000e+00 + 4.450000000e-01, +2.365027947e-02, +1.861502579e-03, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-01, +1.987926378e-02, +5.088380196e-03, +0.000000000e+00, +0.000000000e+00 + 4.550000000e-01, +1.409293518e-02, +1.045484449e-02, +0.000000000e+00, +0.000000000e+00 + 4.600000000e-01, +8.972232607e-03, +1.529653717e-02, +0.000000000e+00, +0.000000000e+00 + 4.650000000e-01, +6.361439578e-03, +1.772713533e-02, +0.000000000e+00, +0.000000000e+00 + 4.700000000e-01, +6.594517180e-03, +1.734288020e-02, +0.000000000e+00, +0.000000000e+00 + 4.750000000e-01, +8.703009867e-03, +1.505127177e-02, +0.000000000e+00, +0.000000000e+00 + 4.800000000e-01, +1.120191118e-02, +1.230855781e-02, +0.000000000e+00, +0.000000000e+00 + 4.850000000e-01, +1.291036359e-02, +1.030139719e-02, +0.000000000e+00, +0.000000000e+00 + 4.900000000e-01, +1.338467804e-02, +9.500088523e-03, +0.000000000e+00, +0.000000000e+00 + 4.950000000e-01, +1.286391478e-02, +9.694639813e-03, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-01, +1.191323588e-02, +1.033859374e-02, +0.000000000e+00, +0.000000000e+00 + 5.050000000e-01, +1.104598480e-02, +1.092346956e-02, +0.000000000e+00, +0.000000000e+00 + 5.100000000e-01, +1.051750922e-02, +1.118841306e-02, +0.000000000e+00, +0.000000000e+00 + 5.150000000e-01, +1.032356197e-02, +1.112716155e-02, +0.000000000e+00, +0.000000000e+00 + 5.200000000e-01, +1.031900044e-02, +1.087280744e-02, +0.000000000e+00, +0.000000000e+00 + 5.250000000e-01, +1.034695624e-02, +1.056965116e-02, +0.000000000e+00, +0.000000000e+00 + 5.300000000e-01, +1.031194749e-02, +1.030086439e-02, +0.000000000e+00, +0.000000000e+00 + 5.350000000e-01, +1.018963297e-02, +1.008194095e-02, +0.000000000e+00, +0.000000000e+00 + 5.400000000e-01, +1.000135339e-02, +9.892368707e-03, +0.000000000e+00, +0.000000000e+00 + 5.450000000e-01, +9.784486883e-03, +9.711463637e-03, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-01, +9.573798507e-03, +9.537214510e-03, +0.000000000e+00, +0.000000000e+00 + 5.550000000e-01, +9.392807642e-03, +9.383469907e-03, +0.000000000e+00, +0.000000000e+00 + 5.600000000e-01, +9.248073165e-03, +9.262119271e-03, +0.000000000e+00, +0.000000000e+00 + 5.650000000e-01, +9.123021210e-03, +9.162128636e-03, +0.000000000e+00, +0.000000000e+00 + 5.700000000e-01, +8.975084957e-03, +9.038146854e-03, +0.000000000e+00, +0.000000000e+00 + 5.750000000e-01, +8.743473340e-03, +8.818280187e-03, +0.000000000e+00, +0.000000000e+00 + 5.800000000e-01, +8.371216258e-03, +8.432734674e-03, +0.000000000e+00, +0.000000000e+00 + 5.850000000e-01, +7.835693272e-03, +7.853428679e-03, +0.000000000e+00, +0.000000000e+00 + 5.900000000e-01, +7.172497219e-03, +7.124504406e-03, +0.000000000e+00, +0.000000000e+00 + 5.950000000e-01, +6.475447979e-03, +6.362356009e-03, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-01, +5.864849137e-03, +5.715830010e-03, +0.000000000e+00, +0.000000000e+00 + 6.050000000e-01, +5.433671357e-03, +5.299087978e-03, +0.000000000e+00, +0.000000000e+00 + 6.100000000e-01, +5.197468252e-03, +5.129410162e-03, +0.000000000e+00, +0.000000000e+00 + 6.150000000e-01, +5.077202785e-03, +5.106158823e-03, +0.000000000e+00, +0.000000000e+00 + 6.200000000e-01, +4.929759807e-03, +5.049076337e-03, +0.000000000e+00, +0.000000000e+00 + 6.250000000e-01, +4.614953879e-03, +4.781820798e-03, +0.000000000e+00, +0.000000000e+00 + 6.300000000e-01, +4.065453400e-03, +4.218925385e-03, +0.000000000e+00, +0.000000000e+00 + 6.350000000e-01, +3.321976548e-03, +3.409447114e-03, +0.000000000e+00, +0.000000000e+00 + 6.400000000e-01, +2.514358764e-03, +2.513321969e-03, +0.000000000e+00, +0.000000000e+00 + 6.450000000e-01, +1.799257573e-03, +1.723920340e-03, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-01, +1.288922182e-03, +1.179616437e-03, +0.000000000e+00, +0.000000000e+00 + 6.550000000e-01, +1.008298071e-03, +9.106261224e-04, +0.000000000e+00, +0.000000000e+00 + 6.600000000e-01, +8.990338949e-04, +8.440947075e-04, +0.000000000e+00, +0.000000000e+00 + 6.650000000e-01, +8.615907150e-04, +8.564444980e-04, +0.000000000e+00, +0.000000000e+00 + 6.700000000e-01, +8.077812289e-04, +8.385986082e-04, +0.000000000e+00, +0.000000000e+00 + 6.750000000e-01, +6.955786241e-04, +7.391303591e-04, +0.000000000e+00, +0.000000000e+00 + 6.800000000e-01, +5.331767100e-04, +5.692065191e-04, +0.000000000e+00, +0.000000000e+00 + 6.850000000e-01, +3.583467518e-04, +3.768544914e-04, +0.000000000e+00, +0.000000000e+00 + 6.900000000e-01, +2.103464980e-04, +2.119867829e-04, +0.000000000e+00, +0.000000000e+00 + 6.950000000e-01, +1.105118481e-04, +1.022163451e-04, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-01, +5.816734218e-05, +4.771136942e-05, +0.000000000e+00, +0.000000000e+00 + 7.050000000e-01, +3.842410848e-05, +3.083713846e-05, +0.000000000e+00, +0.000000000e+00 + 7.100000000e-01, +3.358657835e-05, +3.030941478e-05, +0.000000000e+00, +0.000000000e+00 + 7.150000000e-01, +3.119196881e-05, +3.119244240e-05, +0.000000000e+00, +0.000000000e+00 + 7.200000000e-01, +2.621771686e-05, +2.766748660e-05, +0.000000000e+00, +0.000000000e+00 + 7.250000000e-01, +1.898139954e-05, +2.045192231e-05, +0.000000000e+00, +0.000000000e+00 + 7.300000000e-01, +1.174547974e-05, +1.260366338e-05, +0.000000000e+00, +0.000000000e+00 + 7.350000000e-01, +6.282975258e-06, +6.513443002e-06, +0.000000000e+00, +0.000000000e+00 + 7.400000000e-01, +3.073129614e-06, +2.919838482e-06, +0.000000000e+00, +0.000000000e+00 + 7.450000000e-01, +1.631996061e-06, +1.334507558e-06, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-01, +1.172609455e-06, +8.748577621e-07, +0.000000000e+00, +0.000000000e+00 + 7.550000000e-01, +1.066966607e-06, +8.430311813e-07, +0.000000000e+00, +0.000000000e+00 + 7.600000000e-01, +9.859570273e-07, +8.934205808e-07, +0.000000000e+00, +0.000000000e+00 + 7.650000000e-01, +8.350443405e-07, +9.367642561e-07, +0.000000000e+00, +0.000000000e+00 + 7.700000000e-01, +6.396481236e-07, +9.812152759e-07, +0.000000000e+00, +0.000000000e+00 + 7.750000000e-01, +4.632216136e-07, +1.027302605e-06, +0.000000000e+00, +0.000000000e+00 + 7.800000000e-01, +3.675987312e-07, +1.039850236e-06, +0.000000000e+00, +0.000000000e+00 + 7.850000000e-01, +3.939834184e-07, +9.701974674e-07, +0.000000000e+00, +0.000000000e+00 + 7.900000000e-01, +5.481632918e-07, +7.930783186e-07, +0.000000000e+00, +0.000000000e+00 + 7.950000000e-01, +7.904656681e-07, +5.319564764e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-01, +1.040248176e-06, +2.593108907e-07, +0.000000000e+00, +0.000000000e+00 + 8.050000000e-01, +1.200737810e-06, +7.069377338e-08, +0.000000000e+00, +0.000000000e+00 + 8.100000000e-01, +1.197830340e-06, +4.320731437e-08, +0.000000000e+00, +0.000000000e+00 + 8.150000000e-01, +1.015438191e-06, +1.975535841e-07, +0.000000000e+00, +0.000000000e+00 + 8.200000000e-01, +7.081609881e-07, +4.831739519e-07, +0.000000000e+00, +0.000000000e+00 + 8.250000000e-01, +3.818597930e-07, +7.960616117e-07, +0.000000000e+00, +0.000000000e+00 + 8.300000000e-01, +1.493017616e-07, +1.022440273e-06, +0.000000000e+00, +0.000000000e+00 + 8.350000000e-01, +8.194578772e-08, +1.087468561e-06, +0.000000000e+00, +0.000000000e+00 + 8.400000000e-01, +1.816808942e-07, +9.849492297e-07, +0.000000000e+00, +0.000000000e+00 + 8.450000000e-01, +3.858190834e-07, +7.740711893e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-01, +6.008995669e-07, +5.468304661e-07, +0.000000000e+00, +0.000000000e+00 + 8.550000000e-01, +7.463068032e-07, +3.846313009e-07, +0.000000000e+00, +0.000000000e+00 + 8.600000000e-01, +7.855349422e-07, +3.262709138e-07, +0.000000000e+00, +0.000000000e+00 + 8.650000000e-01, +7.320506670e-07, +3.608504532e-07, +0.000000000e+00, +0.000000000e+00 + 8.700000000e-01, +6.316190027e-07, +4.443856847e-07, +0.000000000e+00, +0.000000000e+00 + 8.750000000e-01, +5.344744333e-07, +5.271701423e-07, +0.000000000e+00, +0.000000000e+00 + 8.800000000e-01, +4.729598600e-07, +5.763245229e-07, +0.000000000e+00, +0.000000000e+00 + 8.850000000e-01, +4.537532756e-07, +5.841452615e-07, +0.000000000e+00, +0.000000000e+00 + 8.900000000e-01, +4.640725116e-07, +5.624888440e-07, +0.000000000e+00, +0.000000000e+00 + 8.950000000e-01, +4.844537042e-07, +5.303337663e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-01, +4.997776646e-07, +5.027773595e-07, +0.000000000e+00, +0.000000000e+00 + 9.050000000e-01, +5.039510729e-07, +4.861654432e-07, +0.000000000e+00, +0.000000000e+00 + 9.100000000e-01, +4.985008492e-07, +4.792528373e-07, +0.000000000e+00, +0.000000000e+00 + 9.150000000e-01, +4.882744128e-07, +4.773024922e-07, +0.000000000e+00, +0.000000000e+00 + 9.200000000e-01, +4.775716044e-07, +4.758436490e-07, +0.000000000e+00, +0.000000000e+00 + 9.250000000e-01, +4.683694073e-07, +4.724173788e-07, +0.000000000e+00, +0.000000000e+00 + 9.300000000e-01, +4.605076723e-07, +4.664470965e-07, +0.000000000e+00, +0.000000000e+00 + 9.350000000e-01, +4.528021517e-07, +4.582956136e-07, +0.000000000e+00, +0.000000000e+00 + 9.400000000e-01, +4.441150571e-07, +4.484818353e-07, +0.000000000e+00, +0.000000000e+00 + 9.450000000e-01, +4.339619655e-07, +4.374663580e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-01, +4.226525684e-07, +4.258459162e-07, +0.000000000e+00, +0.000000000e+00 + 9.550000000e-01, +4.111243670e-07, +4.145692085e-07, +0.000000000e+00, +0.000000000e+00 + 9.600000000e-01, +4.005832275e-07, +4.048549016e-07, +0.000000000e+00, +0.000000000e+00 + 9.650000000e-01, +3.919726493e-07, +3.976902679e-07, +0.000000000e+00, +0.000000000e+00 + 9.700000000e-01, +3.853733004e-07, +3.930868265e-07, +0.000000000e+00, +0.000000000e+00 + 9.750000000e-01, +3.795274377e-07, +3.894449373e-07, +0.000000000e+00, +0.000000000e+00 + 9.800000000e-01, +3.717765668e-07, +3.834516366e-07, +0.000000000e+00, +0.000000000e+00 + 9.850000000e-01, +3.586440635e-07, +3.708050801e-07, +0.000000000e+00, +0.000000000e+00 + 9.900000000e-01, +3.370207764e-07, +3.476966070e-07, +0.000000000e+00, +0.000000000e+00 + 9.950000000e-01, +3.055983668e-07, +3.125838034e-07, +0.000000000e+00, +0.000000000e+00 + 1.000000000e+00, +2.659047270e-07, +2.674496632e-07, +0.000000000e+00, +0.000000000e+00 diff --git a/test/examples/ref/coaxial/open/error-indicators.csv b/test/examples/ref/coaxial/open/error-indicators.csv index b96ddf84f..a25dc337e 100644 --- a/test/examples/ref/coaxial/open/error-indicators.csv +++ b/test/examples/ref/coaxial/open/error-indicators.csv @@ -1,2 +1,2 @@ Norm, Minimum, Maximum, Mean - +9.925002992e-03, +3.073075278e-04, +3.104669897e-03, +5.504384847e-04 + +9.669705923e-03, +3.071587403e-04, +3.000808140e-03, +5.440953971e-04 diff --git a/test/examples/ref/coaxial/open/port-I.csv b/test/examples/ref/coaxial/open/port-I.csv index 91ac9b2d4..3db214067 100644 --- a/test/examples/ref/coaxial/open/port-I.csv +++ b/test/examples/ref/coaxial/open/port-I.csv @@ -1,202 +1,202 @@ t (ns), I_inc[1] (A), I[1] (A) 0.000000000e+00, -5.666088695e-06, +0.000000000e+00 - 5.000000000e-03, -8.409123651e-06, -2.341328245e-06 - 1.000000000e-02, -1.105147275e-05, -5.826382857e-06 - 1.500000000e-02, -1.228163970e-05, -5.222852797e-06 - 2.000000000e-02, -9.778049726e-06, +3.479732768e-07 - 2.500000000e-02, -6.103350322e-20, +1.465152567e-05 - 3.000000000e-02, +2.176144987e-05, +4.434348953e-05 - 3.500000000e-02, +6.083135968e-05, +9.403287533e-05 - 4.000000000e-02, +1.218223334e-04, +1.675061721e-04 - 4.500000000e-02, +2.062970799e-04, +2.640783375e-04 - 5.000000000e-02, +3.093579607e-04, +3.746481283e-04 - 5.500000000e-02, +4.154313032e-04, +4.765161274e-04 - 6.000000000e-02, +4.940139224e-04, +5.303124776e-04 - 6.500000000e-02, +4.967592192e-04, +4.785254386e-04 - 7.000000000e-02, +3.578593563e-04, +2.464419516e-04 - 7.500000000e-02, -5.771941699e-19, -2.468286914e-04 - 8.000000000e-02, -6.520622610e-04, -1.070220787e-03 - 8.500000000e-02, -1.649298690e-03, -2.255609928e-03 - 9.000000000e-02, -2.988610073e-03, -3.763509598e-03 - 9.500000000e-02, -4.579372529e-03, -5.449045749e-03 - 1.000000000e-01, -6.213620742e-03, -7.037466294e-03 - 1.050000000e-01, -7.550108895e-03, -8.117962218e-03 - 1.100000000e-01, -8.123884454e-03, -8.168835362e-03 - 1.150000000e-01, -7.391643913e-03, -6.623897830e-03 - 1.200000000e-01, -4.818124626e-03, -2.980500538e-03 - 1.250000000e-01, +4.687776326e-18, +3.060907027e-03 - 1.300000000e-01, +7.187797314e-03, +1.144478412e-02 - 1.350000000e-01, +1.645040606e-02, +2.162946359e-02 - 1.400000000e-01, +2.697224625e-02, +3.251877276e-02 - 1.450000000e-01, +3.739593417e-02, +4.249139969e-02 - 1.500000000e-01, +4.591279224e-02, +4.955370760e-02 - 1.550000000e-01, +5.047923110e-02, +5.162043776e-02 - 1.600000000e-01, +4.914663699e-02, +4.689357277e-02 - 1.650000000e-01, +4.046146992e-02, +3.428028014e-02 - 1.700000000e-01, +2.386432750e-02, +1.376794562e-02 - 1.750000000e-01, -4.859694655e-17, -1.333615740e-02 - 1.800000000e-01, -2.914795543e-02, -4.438063934e-02 - 1.850000000e-01, -6.036142013e-02, -7.560597885e-02 - 1.900000000e-01, -8.955101123e-02, -1.026340643e-01 - 1.950000000e-01, -1.123435949e-01, -1.211478660e-01 - 2.000000000e-01, -1.248039088e-01, -1.276455366e-01 - 2.050000000e-01, -1.241588739e-01, -1.201223867e-01 - 2.100000000e-01, -1.093778521e-01, -9.853663600e-02 - 2.150000000e-01, -8.147939460e-02, -6.494807193e-02 - 2.200000000e-01, -4.348363979e-02, -2.328103409e-02 - 2.250000000e-01, +2.632536371e-16, +2.125857862e-02 - 2.300000000e-01, +4.348363979e-02, +6.300925395e-02 - 2.350000000e-01, +8.147939460e-02, +9.676630686e-02 - 2.400000000e-01, +1.093778521e-01, +1.186055850e-01 - 2.450000000e-01, +1.241588739e-01, +1.264630066e-01 - 2.500000000e-01, +1.248039088e-01, +1.203676579e-01 - 2.550000000e-01, +1.123435949e-01, +1.023011765e-01 - 2.600000000e-01, +8.955101123e-02, +7.573263818e-02 - 2.650000000e-01, +6.036142013e-02, +4.493958439e-02 - 2.700000000e-01, +2.914795543e-02, +1.425991010e-02 - 2.750000000e-01, +4.859694655e-17, -1.258094285e-02 - 2.800000000e-01, -2.386432750e-02, -3.295370088e-02 - 2.850000000e-01, -4.046146992e-02, -4.555719857e-02 - 2.900000000e-01, -4.914663699e-02, -5.039306818e-02 - 2.950000000e-01, -5.047923110e-02, -4.852842192e-02 - 3.000000000e-01, -4.591279224e-02, -4.172610814e-02 - 3.050000000e-01, -3.739593417e-02, -3.203277302e-02 - 3.100000000e-01, -2.697224625e-02, -2.140621241e-02 - 3.150000000e-01, -1.645040606e-02, -1.144050431e-02 - 3.200000000e-01, -7.187797314e-03, -3.215484308e-03 - 3.250000000e-01, -3.446700285e-16, +2.732340049e-03 - 3.300000000e-01, +4.818124626e-03, +6.342030451e-03 - 3.350000000e-01, +7.391643913e-03, +7.900799002e-03 - 3.400000000e-01, +8.123884454e-03, +7.895842767e-03 - 3.450000000e-01, +7.550108895e-03, +6.877350462e-03 - 3.500000000e-01, +6.213620742e-03, +5.353272622e-03 - 3.550000000e-01, +4.579372529e-03, +3.724889150e-03 - 3.600000000e-01, +2.988610073e-03, +2.261636930e-03 - 3.650000000e-01, +1.649298690e-03, +1.106278632e-03 - 3.700000000e-01, +6.520622610e-04, +2.994100523e-04 - 3.750000000e-01, +5.639207957e-17, -1.877215768e-04 - 3.800000000e-01, -3.578593563e-04, -4.212988284e-04 - 3.850000000e-01, -4.967592192e-04, -4.791063955e-04 - 3.900000000e-01, -4.940139224e-04, -4.330192664e-04 - 3.950000000e-01, -4.154313032e-04, -3.398058531e-04 - 4.000000000e-01, -3.093579607e-04, -2.384866096e-04 - 4.050000000e-01, -2.062970799e-04, -1.519507981e-04 - 4.100000000e-01, -1.218223334e-04, -9.061788621e-05 - 4.150000000e-01, -6.083135968e-05, -5.657699314e-05 - 4.200000000e-01, -2.176144987e-05, -4.703147657e-05 - 4.250000000e-01, -2.551434914e-18, -5.638876144e-05 - 4.300000000e-01, +9.778049726e-06, -7.709635928e-05 - 4.350000000e-01, +1.228163970e-05, -9.939274851e-05 - 4.400000000e-01, +1.105147275e-05, -1.104337822e-04 - 4.450000000e-01, +8.409123651e-06, -9.345181856e-05 - 4.500000000e-01, +5.666088695e-06, -2.757160012e-05 - 4.550000000e-01, +3.418894541e-06, +1.109098639e-04 - 4.600000000e-01, +1.826796159e-06, +3.453203865e-04 - 4.650000000e-01, +8.253938937e-07, +6.930334221e-04 - 4.700000000e-01, +2.671727168e-07, +1.157264898e-03 - 4.750000000e-01, +3.777032805e-20, +1.717043890e-03 - 4.800000000e-01, -9.828734975e-08, +2.316637421e-03 - 4.850000000e-01, -1.117049164e-07, +2.856602373e-03 - 4.900000000e-01, -9.095082526e-08, +3.189983553e-03 - 4.950000000e-01, -6.261923782e-08, +3.127563524e-03 - 5.000000000e-01, -3.817780532e-08, +2.455691203e-03 - 5.050000000e-01, -2.084413355e-08, +9.688499997e-04 - 5.100000000e-01, -1.007763869e-08, -1.483575424e-03 - 5.150000000e-01, -4.120031130e-09, -4.940966327e-03 - 5.200000000e-01, -1.206707201e-09, -9.274453358e-03 - 5.250000000e-01, -1.928824299e-22, -1.414136523e-02 - 5.300000000e-01, +3.634532244e-10, -1.896591061e-02 - 5.350000000e-01, +3.737607916e-10, -2.296063413e-02 - 5.400000000e-01, +2.753586026e-10, -2.519867816e-02 - 5.450000000e-01, +1.715419466e-10, -2.473896970e-02 - 5.500000000e-01, +9.463331804e-11, -2.079459638e-02 - 5.550000000e-01, +4.675063429e-11, -1.292100401e-02 - 5.600000000e-01, +2.045186871e-11, -1.189592827e-03 - 5.650000000e-01, +7.565632846e-12, +1.369336068e-02 - 5.700000000e-01, +2.005013126e-12, +3.036044781e-02 - 5.750000000e-01, +2.328620401e-25, +4.687646341e-02 - 5.800000000e-01, -4.944301496e-13, +6.095820497e-02 - 5.850000000e-01, -4.600666072e-13, +7.030121795e-02 - 5.900000000e-01, -3.066875683e-13, +7.296660116e-02 - 5.950000000e-01, -1.728774743e-13, +6.775924242e-02 - 6.000000000e-01, -8.629441606e-14, +5.452046086e-02 - 6.050000000e-01, -3.857417852e-14, +3.426660203e-02 - 6.100000000e-01, -1.526907493e-14, +9.129237333e-03 - 6.150000000e-01, -5.110878347e-15, -1.791083129e-02 - 6.200000000e-01, -1.225569810e-15, -4.346096665e-02 - 6.250000000e-01, -9.083457823e-29, -6.425120728e-02 - 6.300000000e-01, +2.474382771e-16, -7.766602564e-02 - 6.350000000e-01, +2.083306657e-16, -8.217045555e-02 - 6.400000000e-01, +1.256606244e-16, -7.754756590e-02 - 6.450000000e-01, +6.409320687e-17, -6.490156537e-02 - 6.500000000e-01, +2.894855159e-17, -4.642818273e-02 - 6.550000000e-01, +1.170877290e-17, -2.500208263e-02 - 6.600000000e-01, +4.193705940e-18, -3.668629077e-03 - 6.650000000e-01, +1.270139270e-18, +1.485697180e-02 - 6.700000000e-01, +2.755906037e-19, +2.858932324e-02 - 6.750000000e-01, +1.075875659e-32, +3.650516194e-02 - 6.800000000e-01, -4.555482039e-20, +3.858045844e-02 - 6.850000000e-01, -3.470493289e-20, +3.564669110e-02 - 6.900000000e-01, -1.894121233e-20, +2.911792423e-02 - 6.950000000e-01, -8.741603680e-21, +2.066017053e-02 - 7.000000000e-01, -3.572535080e-21, +1.187373405e-02 - 7.050000000e-01, -1.307469592e-21, +4.045795954e-03 - 7.100000000e-01, -4.237295397e-22, -1.991475163e-03 - 7.150000000e-01, -1.161215067e-22, -5.890643897e-03 - 7.200000000e-01, -2.279797517e-23, -7.725859078e-03 - 7.250000000e-01, -3.241225490e-37, -7.870427638e-03 - 7.300000000e-01, +3.085370426e-24, -6.851670009e-03 - 7.350000000e-01, +2.126839583e-24, -5.216425636e-03 - 7.400000000e-01, +1.050320519e-24, -3.431769700e-03 - 7.450000000e-01, +4.386071853e-25, -1.830455598e-03 - 7.500000000e-01, +1.621928417e-25, -5.972682855e-04 - 7.550000000e-01, +5.371026932e-26, +2.130226558e-04 - 7.600000000e-01, +1.575016203e-26, +6.385535506e-04 - 7.650000000e-01, +3.905525687e-27, +7.687813031e-04 - 7.700000000e-01, +6.937989919e-28, +7.088488339e-04 - 7.750000000e-01, -6.993531703e-42, +5.539640292e-04 - 7.800000000e-01, -7.687511957e-29, +3.753644806e-04 - 7.850000000e-01, -4.794946636e-29, +2.168652772e-04 - 7.900000000e-01, -2.142601701e-29, +9.846232662e-05 - 7.950000000e-01, -8.095914059e-30, +2.321542722e-05 - 8.000000000e-01, -2.708896312e-30, -1.588527022e-05 - 8.050000000e-01, -8.116869824e-31, -2.988227298e-05 - 8.100000000e-01, -2.153708036e-31, -2.906187038e-05 - 8.150000000e-01, -4.832277353e-32, -2.143948000e-05 - 8.200000000e-01, -7.767416097e-33, -1.264875586e-05 - 8.250000000e-01, +2.050715652e-46, -5.242870100e-06 - 8.300000000e-01, +7.046440907e-34, +1.332816899e-07 - 8.350000000e-01, +3.976842028e-34, +3.303535737e-06 - 8.400000000e-01, +1.607927855e-34, +4.973393460e-06 - 8.450000000e-01, +5.497453374e-35, +6.046476359e-06 - 8.500000000e-01, +1.664403419e-35, +6.919883166e-06 - 8.550000000e-01, +4.512584527e-36, +8.151899452e-06 - 8.600000000e-01, +1.083413267e-36, +1.002430154e-05 - 8.650000000e-01, +2.199529168e-37, +1.252806677e-05 - 8.700000000e-01, +3.199079223e-38, +1.587450447e-05 - 8.750000000e-01, -1.264445967e-51, +1.967572389e-05 - 8.800000000e-01, -2.376070608e-39, +2.342158691e-05 - 8.850000000e-01, -1.213384435e-39, +2.685271559e-05 - 8.900000000e-01, -4.439123120e-40, +2.874090899e-05 - 8.950000000e-01, -1.373291519e-40, +2.783103301e-05 - 9.000000000e-01, -3.762099992e-41, +2.330892613e-05 - 9.050000000e-01, -9.229276070e-42, +1.352782569e-05 - 9.100000000e-01, -2.004965889e-42, -2.719074094e-06 - 9.150000000e-01, -3.683096656e-43, -2.562726907e-05 - 9.200000000e-01, -4.847066048e-44, -5.534552869e-05 - 9.250000000e-01, +2.695492675e-57, -9.068875523e-05 - 9.300000000e-01, +2.947503899e-45, -1.288820097e-04 - 9.350000000e-01, +1.361958949e-45, -1.663232170e-04 - 9.400000000e-01, +4.508513145e-46, -1.979251650e-04 - 9.450000000e-01, +1.262029305e-46, -2.178116062e-04 - 9.500000000e-01, +3.128294188e-47, -2.201943249e-04 - 9.550000000e-01, +6.944091618e-48, -1.996586286e-04 - 9.600000000e-01, +1.364977037e-48, -1.527530818e-04 - 9.650000000e-01, +2.268830361e-49, -7.868418770e-05 - 9.700000000e-01, +2.701707935e-50, +2.030635422e-05 - 9.750000000e-01, -1.705334349e-63, +1.379091339e-04 - 9.800000000e-01, -1.345101176e-51, +2.643975828e-04 - 9.850000000e-01, -5.623868195e-52, +3.875697235e-04 - 9.900000000e-01, -1.684515487e-52, +4.936088326e-04 - 9.950000000e-01, -4.266597350e-53, +5.692109850e-04 - 1.000000000e+00, -9.569524512e-54, +6.035387639e-04 + 5.000000000e-03, -8.409123651e-06, -2.279465662e-06 + 1.000000000e-02, -1.105147275e-05, -6.104854862e-06 + 1.500000000e-02, -1.228163970e-05, -7.036201019e-06 + 2.000000000e-02, -9.778049726e-06, -4.567147137e-06 + 2.500000000e-02, -6.103350322e-20, +4.433594715e-06 + 3.000000000e-02, +2.176144987e-05, +2.603404286e-05 + 3.500000000e-02, +6.083135968e-05, +6.501699663e-05 + 4.000000000e-02, +1.218223334e-04, +1.262776913e-04 + 4.500000000e-02, +2.062970799e-04, +2.118296913e-04 + 5.000000000e-02, +3.093579607e-04, +3.173618809e-04 + 5.500000000e-02, +4.154313032e-04, +4.272823161e-04 + 6.000000000e-02, +4.940139224e-04, +5.111171470e-04 + 6.500000000e-02, +4.967592192e-04, +5.206886081e-04 + 7.000000000e-02, +3.578593563e-04, +3.886785355e-04 + 7.500000000e-02, -5.771941699e-19, +3.582147265e-05 + 8.000000000e-02, -6.520622610e-04, -6.153389310e-04 + 8.500000000e-02, -1.649298690e-03, -1.619463514e-03 + 9.000000000e-02, -2.988610073e-03, -2.976954811e-03 + 9.500000000e-02, -4.579372529e-03, -4.599372030e-03 + 1.000000000e-01, -6.213620742e-03, -6.279384829e-03 + 1.050000000e-01, -7.550108895e-03, -7.673257929e-03 + 1.100000000e-01, -8.123884454e-03, -8.308949454e-03 + 1.150000000e-01, -7.391643913e-03, -7.631639645e-03 + 1.200000000e-01, -4.818124626e-03, -5.091253532e-03 + 1.250000000e-01, +4.687776326e-18, -2.676010971e-04 + 1.300000000e-01, +7.187797314e-03, +6.979916447e-03 + 1.350000000e-01, +1.645040606e-02, +1.636584859e-02 + 1.400000000e-01, +2.697224625e-02, +2.707472498e-02 + 1.450000000e-01, +3.739593417e-02, +3.773684453e-02 + 1.500000000e-01, +4.591279224e-02, +4.651714030e-02 + 1.550000000e-01, +5.047923110e-02, +5.133402751e-02 + 1.600000000e-01, +4.914663699e-02, +5.019442015e-02 + 1.650000000e-01, +4.046146992e-02, +4.160106921e-02 + 1.700000000e-01, +2.386432750e-02, +2.496072306e-02 + 1.750000000e-01, -4.859694655e-17, +9.027416975e-04 + 1.800000000e-01, -2.914795543e-02, -2.858089172e-02 + 1.850000000e-01, -6.036142013e-02, -6.023860350e-02 + 1.900000000e-01, -8.955101123e-02, -8.992623717e-02 + 1.950000000e-01, -1.123435949e-01, -1.132034053e-01 + 2.000000000e-01, -1.248039088e-01, -1.260674341e-01 + 2.050000000e-01, -1.241588739e-01, -1.256901005e-01 + 2.100000000e-01, -1.093778521e-01, -1.110084115e-01 + 2.150000000e-01, -8.147939460e-02, -8.303731511e-02 + 2.200000000e-01, -4.348363979e-02, -4.482170606e-02 + 2.250000000e-01, +2.632536371e-16, -1.017952044e-03 + 2.300000000e-01, +4.348363979e-02, +4.282753850e-02 + 2.350000000e-01, +8.147939460e-02, +8.116905378e-02 + 2.400000000e-01, +1.093778521e-01, +1.093513159e-01 + 2.450000000e-01, +1.241588739e-01, +1.243278841e-01 + 2.500000000e-01, +1.248039088e-01, +1.250757389e-01 + 2.550000000e-01, +1.123435949e-01, +1.126400748e-01 + 2.600000000e-01, +8.955101123e-02, +8.982093901e-02 + 2.650000000e-01, +6.036142013e-02, +6.058437068e-02 + 2.700000000e-01, +2.914795543e-02, +2.933003651e-02 + 2.750000000e-01, +4.859694655e-17, +1.640427998e-04 + 2.800000000e-01, -2.386432750e-02, -2.369071496e-02 + 2.850000000e-01, -4.046146992e-02, -4.025665607e-02 + 2.900000000e-01, -4.914663699e-02, -4.890201756e-02 + 2.950000000e-01, -5.047923110e-02, -5.020114773e-02 + 3.000000000e-01, -4.591279224e-02, -4.562002034e-02 + 3.050000000e-01, -3.739593417e-02, -3.711414519e-02 + 3.100000000e-01, -2.697224625e-02, -2.672715668e-02 + 3.150000000e-01, -1.645040606e-02, -1.626186381e-02 + 3.200000000e-01, -7.187797314e-03, -7.066117894e-03 + 3.250000000e-01, -3.446700285e-16, +5.515303396e-05 + 3.300000000e-01, +4.818124626e-03, +4.816373871e-03 + 3.350000000e-01, +7.391643913e-03, +7.348725045e-03 + 3.400000000e-01, +8.123884454e-03, +8.057871019e-03 + 3.450000000e-01, +7.550108895e-03, +7.478021128e-03 + 3.500000000e-01, +6.213620742e-03, +6.148888559e-03 + 3.550000000e-01, +4.579372529e-03, +4.530539126e-03 + 3.600000000e-01, +2.988610073e-03, +2.959384056e-03 + 3.650000000e-01, +1.649298690e-03, +1.639365017e-03 + 3.700000000e-01, +6.520622610e-04, +6.583132266e-04 + 3.750000000e-01, +5.639207957e-17, +1.798187589e-05 + 3.800000000e-01, -3.578593563e-04, -3.327979443e-04 + 3.850000000e-01, -4.967592192e-04, -4.687482842e-04 + 3.900000000e-01, -4.940139224e-04, -4.663240107e-04 + 3.950000000e-01, -4.154313032e-04, -3.905392884e-04 + 4.000000000e-01, -3.093579607e-04, -2.893169810e-04 + 4.050000000e-01, -2.062970799e-04, -1.932572031e-04 + 4.100000000e-01, -1.218223334e-04, -1.185003095e-04 + 4.150000000e-01, -6.083135968e-05, -7.083741475e-05 + 4.200000000e-01, -2.176144987e-05, -4.959943871e-05 + 4.250000000e-01, -2.551434914e-18, -5.040158223e-05 + 4.300000000e-01, +9.778049726e-06, -6.662034254e-05 + 4.350000000e-01, +1.228163970e-05, -8.963785103e-05 + 4.400000000e-01, +1.105147275e-05, -1.082181466e-04 + 4.450000000e-01, +8.409123651e-06, -1.076032578e-04 + 4.500000000e-01, +5.666088695e-06, -6.891683625e-05 + 4.550000000e-01, +3.418894541e-06, +3.033423391e-05 + 4.600000000e-01, +1.826796159e-06, +2.141425316e-04 + 4.650000000e-01, +8.253938937e-07, +5.036982409e-04 + 4.700000000e-01, +2.671727168e-07, +9.104394389e-04 + 4.750000000e-01, +3.777032805e-20, +1.426879333e-03 + 4.800000000e-01, -9.828734975e-08, +2.016053765e-03 + 4.850000000e-01, -1.117049164e-07, +2.601282529e-03 + 4.900000000e-01, -9.095082526e-08, +3.059322132e-03 + 4.950000000e-01, -6.261923782e-08, +3.220640886e-03 + 5.000000000e-01, -3.817780532e-08, +2.880612905e-03 + 5.050000000e-01, -2.084413355e-08, +1.824643358e-03 + 5.100000000e-01, -1.007763869e-08, -1.318240696e-04 + 5.150000000e-01, -4.120031130e-09, -3.091022609e-03 + 5.200000000e-01, -1.206707201e-09, -7.014995127e-03 + 5.250000000e-01, -1.928824299e-22, -1.167249172e-02 + 5.300000000e-01, +3.634532244e-10, -1.660451755e-02 + 5.350000000e-01, +3.737607916e-10, -2.112373949e-02 + 5.400000000e-01, +2.753586026e-10, -2.436045456e-02 + 5.450000000e-01, +1.715419466e-10, -2.536187353e-02 + 5.500000000e-01, +9.463331804e-11, -2.324111735e-02 + 5.550000000e-01, +4.675063429e-11, -1.735907798e-02 + 5.600000000e-01, +2.045186871e-11, -7.509945122e-03 + 5.650000000e-01, +7.565632846e-12, +5.927458562e-03 + 5.700000000e-01, +2.005013126e-12, +2.191263319e-02 + 5.750000000e-01, +2.328620401e-25, +3.877451310e-02 + 5.800000000e-01, -4.944301496e-13, +5.436879699e-02 + 5.850000000e-01, -4.600666072e-13, +6.635561375e-02 + 5.900000000e-01, -3.066875683e-13, +7.256384413e-02 + 5.950000000e-01, -1.728774743e-13, +7.138288589e-02 + 6.000000000e-01, -8.629441606e-14, +6.210737871e-02 + 6.050000000e-01, -3.857417852e-14, +4.516040387e-02 + 6.100000000e-01, -1.526907493e-14, +2.213662937e-02 + 6.150000000e-01, -5.110878347e-15, -4.362280688e-03 + 6.200000000e-01, -1.225569810e-15, -3.108669484e-02 + 6.250000000e-01, -9.083457823e-29, -5.463638011e-02 + 6.300000000e-01, +2.474382771e-16, -7.200652759e-02 + 6.350000000e-01, +2.083306657e-16, -8.107865508e-02 + 6.400000000e-01, +1.256606244e-16, -8.096109780e-02 + 6.450000000e-01, +6.409320687e-17, -7.211243226e-02 + 6.500000000e-01, +2.894855159e-17, -5.622463705e-02 + 6.550000000e-01, +1.170877290e-17, -3.589267574e-02 + 6.600000000e-01, +4.193705940e-18, -1.414183746e-02 + 6.650000000e-01, +1.270139270e-18, +6.089239024e-03 + 6.700000000e-01, +2.755906037e-19, +2.240938153e-02 + 6.750000000e-01, +1.075875659e-32, +3.329738422e-02 + 6.800000000e-01, -4.555482039e-20, +3.823734807e-02 + 6.850000000e-01, -3.470493289e-20, +3.766044194e-02 + 6.900000000e-01, -1.894121233e-20, +3.272866847e-02 + 6.950000000e-01, -8.741603680e-21, +2.502430912e-02 + 7.000000000e-01, -3.572535080e-21, +1.621716482e-02 + 7.050000000e-01, -1.307469592e-21, +7.775620077e-03 + 7.100000000e-01, -4.237295397e-22, +7.697310683e-04 + 7.150000000e-01, -1.161215067e-22, -4.213272189e-03 + 7.200000000e-01, -2.279797517e-23, -7.049086115e-03 + 7.250000000e-01, -3.241225490e-37, -7.979227496e-03 + 7.300000000e-01, +3.085370426e-24, -7.472284010e-03 + 7.350000000e-01, +2.126839583e-24, -6.080112542e-03 + 7.400000000e-01, +1.050320519e-24, -4.319305044e-03 + 7.450000000e-01, +4.386071853e-25, -2.594106652e-03 + 7.500000000e-01, +1.621928417e-25, -1.162687821e-03 + 7.550000000e-01, +5.371026932e-26, -1.408438988e-04 + 7.600000000e-01, +1.575016203e-26, +4.682027305e-04 + 7.650000000e-01, +3.905525687e-27, +7.331267312e-04 + 7.700000000e-01, +6.937989919e-28, +7.552669739e-04 + 7.750000000e-01, -6.993531703e-42, +6.373124650e-04 + 7.800000000e-01, -7.687511957e-29, +4.634122058e-04 + 7.850000000e-01, -4.794946636e-29, +2.909699949e-04 + 7.900000000e-01, -2.142601701e-29, +1.512283973e-04 + 7.950000000e-01, -8.095914059e-30, +5.487228030e-05 + 8.000000000e-01, -2.708896312e-30, -1.038804897e-06 + 8.050000000e-01, -8.116869824e-31, -2.627034692e-05 + 8.100000000e-01, -2.153708036e-31, -3.164381107e-05 + 8.150000000e-01, -4.832277353e-32, -2.650277563e-05 + 8.200000000e-01, -7.767416097e-33, -1.789861163e-05 + 8.250000000e-01, +2.050715652e-46, -9.605564661e-06 + 8.300000000e-01, +7.046440907e-34, -3.093234898e-06 + 8.350000000e-01, +3.976842028e-34, +1.055734890e-06 + 8.400000000e-01, +1.607927855e-34, +3.362944132e-06 + 8.450000000e-01, +5.497453374e-35, +4.708299429e-06 + 8.500000000e-01, +1.664403419e-35, +5.575026565e-06 + 8.550000000e-01, +4.512584527e-36, +6.595329493e-06 + 8.600000000e-01, +1.083413267e-36, +8.135592089e-06 + 8.650000000e-01, +2.199529168e-37, +1.027185492e-05 + 8.700000000e-01, +3.199079223e-38, +1.327329946e-05 + 8.750000000e-01, -1.264445967e-51, +1.686284935e-05 + 8.800000000e-01, -2.376070608e-39, +2.063901018e-05 + 8.850000000e-01, -1.213384435e-39, +2.443350519e-05 + 8.900000000e-01, -4.439123120e-40, +2.718187408e-05 + 8.950000000e-01, -1.373291519e-40, +2.773946072e-05 + 9.000000000e-01, -3.762099992e-41, +2.531476622e-05 + 9.050000000e-01, -9.229276070e-42, +1.828262610e-05 + 9.100000000e-01, -2.004965889e-42, +5.303549001e-06 + 9.150000000e-01, -3.683096656e-43, -1.413025411e-05 + 9.200000000e-01, -4.847066048e-44, -4.056119047e-05 + 9.250000000e-01, +2.695492675e-57, -7.337177084e-05 + 9.300000000e-01, +2.947503899e-45, -1.104648449e-04 + 9.350000000e-01, +1.361958949e-45, -1.488772042e-04 + 9.400000000e-01, +4.508513145e-46, -1.840901569e-04 + 9.450000000e-01, +1.262029305e-46, -2.105602997e-04 + 9.500000000e-01, +3.128294188e-47, -2.224604783e-04 + 9.550000000e-01, +6.944091618e-48, -2.139153398e-04 + 9.600000000e-01, +1.364977037e-48, -1.804917306e-04 + 9.650000000e-01, +2.268830361e-49, -1.199649268e-04 + 9.700000000e-01, +2.701707935e-50, -3.284443206e-05 + 9.750000000e-01, -1.705334349e-63, +7.643907554e-05 + 9.800000000e-01, -1.345101176e-51, +1.998517569e-04 + 9.850000000e-01, -5.623868195e-52, +3.263928552e-04 + 9.900000000e-01, -1.684515487e-52, +4.427266851e-04 + 9.950000000e-01, -4.266597350e-53, +5.350871054e-04 + 1.000000000e+00, -9.569524512e-54, +5.911873106e-04 diff --git a/test/examples/ref/coaxial/open/port-V.csv b/test/examples/ref/coaxial/open/port-V.csv index 0f7a5690f..84d0750c3 100644 --- a/test/examples/ref/coaxial/open/port-V.csv +++ b/test/examples/ref/coaxial/open/port-V.csv @@ -1,202 +1,202 @@ t (ns), V_inc[1] (V), V[1] (V) 0.000000000e+00, -2.833044348e-04, +0.000000000e+00 - 5.000000000e-03, -4.204561825e-04, -1.409600057e-04 - 1.000000000e-02, -5.525736376e-04, -2.576208519e-04 - 1.500000000e-02, -6.140819852e-04, -2.326884943e-04 - 2.000000000e-02, -4.889024863e-04, +1.474786102e-05 - 2.500000000e-02, -3.051675161e-18, +7.795612050e-04 - 3.000000000e-02, +1.088072493e-03, +2.242751383e-03 - 3.500000000e-02, +3.041567984e-03, +4.700349857e-03 - 4.000000000e-02, +6.091116670e-03, +8.325047125e-03 - 4.500000000e-02, +1.031485399e-02, +1.305720735e-02 - 5.000000000e-02, +1.546789803e-02, +1.841840504e-02 - 5.500000000e-02, +2.077156516e-02, +2.329007028e-02 - 6.000000000e-02, +2.470069612e-02, +2.573350592e-02 - 6.500000000e-02, +2.483796096e-02, +2.286439221e-02 - 7.000000000e-02, +1.789296781e-02, +1.105721800e-02 - 7.500000000e-02, -2.885970849e-17, -1.359924149e-02 - 8.000000000e-02, -3.260311305e-02, -5.445708636e-02 - 8.500000000e-02, -8.246493451e-02, -1.129251561e-01 - 9.000000000e-02, -1.494305036e-01, -1.868767856e-01 - 9.500000000e-02, -2.289686265e-01, -2.690380943e-01 - 1.000000000e-01, -3.106810371e-01, -3.457241810e-01 - 1.050000000e-01, -3.775054448e-01, -3.966135813e-01 - 1.100000000e-01, -4.061942227e-01, -3.960888280e-01 - 1.150000000e-01, -3.695821957e-01, -3.165165359e-01 - 1.200000000e-01, -2.409062313e-01, -1.335577495e-01 - 1.250000000e-01, +2.343888163e-16, +1.669052709e-01 - 1.300000000e-01, +3.593898657e-01, +5.813329112e-01 - 1.350000000e-01, +8.225203029e-01, +1.082240954e+00 - 1.400000000e-01, +1.348612313e+00, +1.614902943e+00 - 1.450000000e-01, +1.869796708e+00, +2.098941344e+00 - 1.500000000e-01, +2.295639612e+00, +2.436078661e+00 - 1.550000000e-01, +2.523961555e+00, +2.524037283e+00 - 1.600000000e-01, +2.457331849e+00, +2.275240314e+00 - 1.650000000e-01, +2.023073496e+00, +1.637412542e+00 - 1.700000000e-01, +1.193216375e+00, +6.119189859e-01 - 1.750000000e-01, -2.429847328e-15, -7.346571262e-01 - 1.800000000e-01, -1.457397771e+00, -2.269579629e+00 - 1.850000000e-01, -3.018071006e+00, -3.805872481e+00 - 1.900000000e-01, -4.477550561e+00, -5.126751444e+00 - 1.950000000e-01, -5.617179743e+00, -6.019342246e+00 - 2.000000000e-01, -6.240195442e+00, -6.311939346e+00 - 2.050000000e-01, -6.207943693e+00, -5.907639100e+00 - 2.100000000e-01, -5.468892605e+00, -4.807164232e+00 - 2.150000000e-01, -4.073969730e+00, -3.115417780e+00 - 2.200000000e-01, -2.174181990e+00, -1.029451119e+00 - 2.250000000e-01, +1.316268185e-14, +1.190700710e+00 - 2.300000000e-01, +2.174181990e+00, +3.263171034e+00 - 2.350000000e-01, +4.073969730e+00, +4.929624194e+00 - 2.400000000e-01, +5.468892605e+00, +5.996135954e+00 - 2.450000000e-01, +6.207943693e+00, +6.361863081e+00 - 2.500000000e-01, +6.240195442e+00, +6.030465394e+00 - 2.550000000e-01, +5.617179743e+00, +5.102911694e+00 - 2.600000000e-01, +4.477550561e+00, +3.754115651e+00 - 2.650000000e-01, +3.018071006e+00, +2.198951398e+00 - 2.700000000e-01, +1.457397771e+00, +6.548446195e-01 - 2.750000000e-01, +2.429847328e-15, -6.918569599e-01 - 2.800000000e-01, -1.193216375e+00, -1.710040781e+00 - 2.850000000e-01, -2.023073496e+00, -2.335368116e+00 - 2.900000000e-01, -2.457331849e+00, -2.568925943e+00 - 2.950000000e-01, -2.523961555e+00, -2.465273997e+00 - 3.000000000e-01, -2.295639612e+00, -2.113823015e+00 - 3.050000000e-01, -1.869796708e+00, -1.618090956e+00 - 3.100000000e-01, -1.348612313e+00, -1.076964915e+00 - 3.150000000e-01, -8.225203029e-01, -5.708552889e-01 - 3.200000000e-01, -3.593898657e-01, -1.541107244e-01 - 3.250000000e-01, -1.723350142e-14, +1.464156523e-01 - 3.300000000e-01, +2.409062313e-01, +3.279264889e-01 - 3.350000000e-01, +3.695821957e-01, +4.052333730e-01 - 3.400000000e-01, +4.061942227e-01, +4.032438919e-01 - 3.450000000e-01, +3.775054448e-01, +3.500076048e-01 - 3.500000000e-01, +3.106810371e-01, +2.713867794e-01 - 3.550000000e-01, +2.289686265e-01, +1.877924241e-01 - 3.600000000e-01, +1.494305036e-01, +1.128965002e-01 - 3.650000000e-01, +8.246493451e-02, +5.391049017e-02 - 3.700000000e-01, +3.260311305e-02, +1.284754723e-02 - 3.750000000e-01, +2.819603979e-15, -1.181376421e-02 - 3.800000000e-01, -1.789296781e-02, -2.349177650e-02 - 3.850000000e-01, -2.483796096e-02, -2.617395229e-02 - 3.900000000e-01, -2.470069612e-02, -2.352491519e-02 - 3.950000000e-01, -2.077156516e-02, -1.841081207e-02 - 4.000000000e-01, -1.546789803e-02, -1.275961299e-02 - 4.050000000e-01, -1.031485399e-02, -7.644740047e-03 - 4.100000000e-01, -6.091116670e-03, -3.484563624e-03 - 4.150000000e-01, -3.041567984e-03, -2.749348208e-04 - 4.200000000e-01, -1.088072493e-03, +2.197396963e-03 - 4.250000000e-01, -1.275717457e-16, +4.174323599e-03 - 4.300000000e-01, +4.889024863e-04, +5.787574427e-03 - 4.350000000e-01, +6.140819852e-04, +6.958058682e-03 - 4.400000000e-01, +5.525736376e-04, +7.325231202e-03 - 4.450000000e-01, +4.204561825e-04, +6.216282725e-03 - 4.500000000e-01, +2.833044348e-04, +2.665150570e-03 - 4.550000000e-01, +1.709447271e-04, -4.495236385e-03 - 4.600000000e-01, +9.133980795e-05, -1.644346541e-02 - 4.650000000e-01, +4.126969468e-05, -3.406903331e-02 - 4.700000000e-01, +1.335863584e-05, -5.754845571e-02 - 4.750000000e-01, +1.888516403e-18, -8.582974347e-02 - 4.800000000e-01, -4.914367487e-06, -1.160964098e-01 - 4.850000000e-01, -5.585245819e-06, -1.433196972e-01 - 4.900000000e-01, -4.547541263e-06, -1.600735153e-01 - 4.950000000e-01, -3.130961891e-06, -1.568101880e-01 - 5.000000000e-01, -1.908890266e-06, -1.227732265e-01 - 5.050000000e-01, -1.042206678e-06, -4.765233297e-02 - 5.100000000e-01, -5.038819347e-07, +7.605576968e-02 - 5.150000000e-01, -2.060015565e-07, +2.502118497e-01 - 5.200000000e-01, -6.033536005e-08, +4.681736657e-01 - 5.250000000e-01, -9.644121496e-21, +7.125336177e-01 - 5.300000000e-01, +1.817266122e-08, +9.541904299e-01 - 5.350000000e-01, +1.868803958e-08, +1.153482855e+00 - 5.400000000e-01, +1.376793013e-08, +1.263883808e+00 - 5.450000000e-01, +8.577097330e-09, +1.238335191e+00 - 5.500000000e-01, +4.731665902e-09, +1.037716448e+00 - 5.550000000e-01, +2.337531714e-09, +6.402634116e-01 - 5.600000000e-01, +1.022593435e-09, +5.020466059e-02 - 5.650000000e-01, +3.782816423e-10, -6.963917749e-01 - 5.700000000e-01, +1.002506563e-10, -1.530454085e+00 - 5.750000000e-01, +1.164310201e-23, -2.354742973e+00 - 5.800000000e-01, -2.472150748e-11, -3.054993739e+00 - 5.850000000e-01, -2.300333036e-11, -3.516341491e+00 - 5.900000000e-01, -1.533437842e-11, -3.642648861e+00 - 5.950000000e-01, -8.643873713e-12, -3.375304639e+00 - 6.000000000e-01, -4.314720803e-12, -2.707656239e+00 - 6.050000000e-01, -1.928708926e-12, -1.691682636e+00 - 6.100000000e-01, -7.634537466e-13, -4.347432898e-01 - 6.150000000e-01, -2.555439173e-13, +9.139218398e-01 - 6.200000000e-01, -6.127849048e-14, +2.185136591e+00 - 6.250000000e-01, -4.541728911e-27, +3.216440182e+00 - 6.300000000e-01, +1.237191386e-14, +3.878476998e+00 - 6.350000000e-01, +1.041653328e-14, +4.096020936e+00 - 6.400000000e-01, +6.283031218e-15, +3.859537364e+00 - 6.450000000e-01, +3.204660344e-15, +3.225065430e+00 - 6.500000000e-01, +1.447427579e-15, +2.302579285e+00 - 6.550000000e-01, +5.854386450e-16, +1.235359885e+00 - 6.600000000e-01, +2.096852970e-16, +1.747203518e-01 - 6.650000000e-01, +6.350696352e-17, -7.448127212e-01 - 6.700000000e-01, +1.377953018e-17, -1.425213505e+00 - 6.750000000e-01, +5.379378296e-31, -1.816312279e+00 - 6.800000000e-01, -2.277741020e-18, -1.917472974e+00 - 6.850000000e-01, -1.735246645e-18, -1.770362602e+00 - 6.900000000e-01, -9.470606165e-19, -1.445363419e+00 - 6.950000000e-01, -4.370801840e-19, -1.025161210e+00 - 7.000000000e-01, -1.786267540e-19, -5.890357879e-01 - 7.050000000e-01, -6.537347961e-20, -2.006727164e-01 - 7.100000000e-01, -2.118647699e-20, +9.880648125e-02 - 7.150000000e-01, -5.806075333e-21, +2.922831707e-01 - 7.200000000e-01, -1.139898758e-21, +3.834887377e-01 - 7.250000000e-01, -1.620612745e-35, +3.909238165e-01 - 7.300000000e-01, +1.542685213e-22, +3.406847107e-01 - 7.350000000e-01, +1.063419792e-22, +2.598346904e-01 - 7.400000000e-01, +5.251602594e-23, +1.714947528e-01 - 7.450000000e-01, +2.193035927e-23, +9.213970540e-02 - 7.500000000e-01, +8.109642085e-24, +3.093696304e-02 - 7.550000000e-01, +2.685513466e-24, -9.364835194e-03 - 7.600000000e-01, +7.875081013e-25, -3.062105112e-02 - 7.650000000e-01, +1.952762843e-25, -3.723643096e-02 - 7.700000000e-01, +3.468994959e-26, -3.439666911e-02 - 7.750000000e-01, -3.496765852e-40, -2.680757108e-02 - 7.800000000e-01, -3.843755978e-27, -1.800012032e-02 - 7.850000000e-01, -2.397473318e-27, -1.015585172e-02 - 7.900000000e-01, -1.071300850e-27, -4.277951386e-03 - 7.950000000e-01, -4.047957029e-28, -5.241873581e-04 - 8.000000000e-01, -1.354448156e-28, +1.440640037e-03 - 8.050000000e-01, -4.058434912e-29, +2.152717799e-03 - 8.100000000e-01, -1.076854018e-29, +2.128218624e-03 - 8.150000000e-01, -2.416138676e-30, +1.762576112e-03 - 8.200000000e-01, -3.883708049e-31, +1.327860172e-03 - 8.250000000e-01, +1.025357826e-44, +9.617140651e-04 - 8.300000000e-01, +3.523220453e-32, +6.971464430e-04 - 8.350000000e-01, +1.988421014e-32, +5.360841800e-04 - 8.400000000e-01, +8.039639276e-33, +4.521411530e-04 - 8.450000000e-01, +2.748726687e-33, +3.989156978e-04 - 8.500000000e-01, +8.322017093e-34, +3.524540512e-04 - 8.550000000e-01, +2.256292263e-34, +2.918355057e-04 - 8.600000000e-01, +5.417066333e-35, +1.970272109e-04 - 8.650000000e-01, +1.099764584e-35, +6.875606668e-05 - 8.700000000e-01, +1.599539611e-36, -9.633843248e-05 - 8.750000000e-01, -6.322229835e-50, -2.895527078e-04 - 8.800000000e-01, -1.188035304e-37, -4.808073444e-04 - 8.850000000e-01, -6.066922176e-38, -6.488546639e-04 - 8.900000000e-01, -2.219561560e-38, -7.462451552e-04 - 8.950000000e-01, -6.866457597e-39, -7.030784005e-04 - 9.000000000e-01, -1.881049996e-39, -4.705795117e-04 - 9.050000000e-01, -4.614638035e-40, +1.929950575e-05 - 9.100000000e-01, -1.002482944e-40, +8.347359131e-04 - 9.150000000e-01, -1.841548328e-41, +1.990201628e-03 - 9.200000000e-01, -2.423533024e-42, +3.480882465e-03 - 9.250000000e-01, +1.347746337e-55, +5.254459765e-03 - 9.300000000e-01, +1.473751950e-43, +7.171294058e-03 - 9.350000000e-01, +6.809794745e-44, +9.043435161e-03 - 9.400000000e-01, +2.254256572e-44, +1.062266199e-02 - 9.450000000e-01, +6.310146526e-45, +1.160981985e-02 - 9.500000000e-01, +1.564147094e-45, +1.171426548e-02 - 9.550000000e-01, +3.472045809e-46, +1.067238680e-02 - 9.600000000e-01, +6.824885183e-47, +8.306324984e-03 - 9.650000000e-01, +1.134415180e-47, +4.581837223e-03 - 9.700000000e-01, +1.350853967e-48, -3.815369989e-04 - 9.750000000e-01, -8.526671746e-62, -6.271583148e-03 - 9.800000000e-01, -6.725505882e-50, -1.259552819e-02 - 9.850000000e-01, -2.811934097e-50, -1.874054183e-02 - 9.900000000e-01, -8.422577434e-51, -2.401912511e-02 - 9.950000000e-01, -2.133298675e-51, -2.776639048e-02 - 1.000000000e+00, -4.784762256e-52, -2.944631145e-02 + 5.000000000e-03, -4.204561825e-04, -1.372355600e-04 + 1.000000000e-02, -5.525736376e-04, -2.768477037e-04 + 1.500000000e-02, -6.140819852e-04, -3.268163859e-04 + 2.000000000e-02, -4.889024863e-04, -2.310789623e-04 + 2.500000000e-02, -3.051675161e-18, +2.666703698e-04 + 3.000000000e-02, +1.088072493e-03, +1.333462552e-03 + 3.500000000e-02, +3.041567984e-03, +3.267358426e-03 + 4.000000000e-02, +6.091116670e-03, +6.298866841e-03 + 4.500000000e-02, +1.031485399e-02, +1.050499965e-02 + 5.000000000e-02, +1.546789803e-02, +1.564546720e-02 + 5.500000000e-02, +2.077156516e-02, +2.094951513e-02 + 6.000000000e-02, +2.470069612e-02, +2.491313898e-02 + 6.500000000e-02, +2.483796096e-02, +2.510856003e-02 + 7.000000000e-02, +1.789296781e-02, +1.825786070e-02 + 7.500000000e-02, -2.885970849e-17, +5.116704638e-04 + 8.000000000e-02, -3.260311305e-02, -3.191785195e-02 + 8.500000000e-02, -8.246493451e-02, -8.158501484e-02 + 9.000000000e-02, -1.494305036e-01, -1.483421678e-01 + 9.500000000e-02, -2.289686265e-01, -2.276918608e-01 + 1.000000000e-01, -3.106810371e-01, -3.092516108e-01 + 1.050000000e-01, -3.775054448e-01, -3.759601744e-01 + 1.100000000e-01, -4.061942227e-01, -4.045725400e-01 + 1.150000000e-01, -3.695821957e-01, -3.679216876e-01 + 1.200000000e-01, -2.409062313e-01, -2.392327277e-01 + 1.250000000e-01, +2.343888163e-16, +1.648793990e-03 + 1.300000000e-01, +3.593898657e-01, +3.609079016e-01 + 1.350000000e-01, +8.225203029e-01, +8.236876014e-01 + 1.400000000e-01, +1.348612313e+00, +1.349024689e+00 + 1.450000000e-01, +1.869796708e+00, +1.868794378e+00 + 1.500000000e-01, +2.295639612e+00, +2.292310507e+00 + 1.550000000e-01, +2.523961555e+00, +2.517204835e+00 + 1.600000000e-01, +2.457331849e+00, +2.446003413e+00 + 1.650000000e-01, +2.023073496e+00, +2.006245268e+00 + 1.700000000e-01, +1.193216375e+00, +1.170501686e+00 + 1.750000000e-01, -2.429847328e-15, -2.811424978e-02 + 1.800000000e-01, -1.457397771e+00, -1.489281056e+00 + 1.850000000e-01, -3.018071006e+00, -3.050826731e+00 + 1.900000000e-01, -4.477550561e+00, -4.507130087e+00 + 1.950000000e-01, -5.617179743e+00, -5.638770098e+00 + 2.000000000e-01, -6.240195442e+00, -6.248845777e+00 + 2.050000000e-01, -6.207943693e+00, -6.199369191e+00 + 2.100000000e-01, -5.468892605e+00, -5.440318963e+00 + 2.150000000e-01, -4.073969730e+00, -4.024835976e+00 + 2.200000000e-01, -2.174181990e+00, -2.106553983e+00 + 2.250000000e-01, +1.316268185e-14, +8.143006831e-02 + 2.300000000e-01, +2.174181990e+00, +2.262556595e+00 + 2.350000000e-01, +4.073969730e+00, +4.161132300e+00 + 2.400000000e-01, +5.468892605e+00, +5.546524634e+00 + 2.450000000e-01, +6.207943693e+00, +6.268764628e+00 + 2.500000000e-01, +6.240195442e+00, +6.279010884e+00 + 2.550000000e-01, +5.617179743e+00, +5.631588195e+00 + 2.600000000e-01, +4.477550561e+00, +4.468177987e+00 + 2.650000000e-01, +3.018071006e+00, +2.988313662e+00 + 2.700000000e-01, +1.457397771e+00, +1.412743251e+00 + 2.750000000e-01, +2.429847328e-15, -5.292842286e-02 + 2.800000000e-01, -1.193216375e+00, -1.247700830e+00 + 2.850000000e-01, -2.023073496e+00, -2.073237824e+00 + 2.900000000e-01, -2.457331849e+00, -2.498821394e+00 + 2.950000000e-01, -2.523961555e+00, -2.554292475e+00 + 3.000000000e-01, -2.295639612e+00, -2.314203094e+00 + 3.050000000e-01, -1.869796708e+00, -1.877568047e+00 + 3.100000000e-01, -1.348612313e+00, -1.347678916e+00 + 3.150000000e-01, -8.225203029e-01, -8.155374452e-01 + 3.200000000e-01, -3.593898657e-01, -3.490662049e-01 + 3.250000000e-01, -1.723350142e-14, +1.129721318e-02 + 3.300000000e-01, +2.409062313e-01, +2.513918701e-01 + 3.350000000e-01, +3.695821957e-01, +3.781420395e-01 + 3.400000000e-01, +4.061942227e-01, +4.123438302e-01 + 3.450000000e-01, +3.775054448e-01, +3.812599797e-01 + 3.500000000e-01, +3.106810371e-01, +3.123871889e-01 + 3.550000000e-01, +2.289686265e-01, +2.291407502e-01 + 3.600000000e-01, +1.494305036e-01, +1.486109362e-01 + 3.650000000e-01, +8.246493451e-02, +8.112895780e-02 + 3.700000000e-01, +3.260311305e-02, +3.111359086e-02 + 3.750000000e-01, +2.819603979e-15, -1.405882894e-03 + 3.800000000e-01, -1.789296781e-02, -1.908977192e-02 + 3.850000000e-01, -2.483796096e-02, -2.578002166e-02 + 3.900000000e-01, -2.470069612e-02, -2.538757709e-02 + 3.950000000e-01, -2.077156516e-02, -2.121357888e-02 + 4.000000000e-01, -1.546789803e-02, -1.565507699e-02 + 4.050000000e-01, -1.031485399e-02, -1.019180358e-02 + 4.100000000e-01, -6.091116670e-03, -5.540213304e-03 + 4.150000000e-01, -3.041567984e-03, -1.877704052e-03 + 4.200000000e-01, -1.088072493e-03, +9.310318786e-04 + 4.250000000e-01, -1.275717457e-16, +3.133201664e-03 + 4.300000000e-01, +4.889024863e-04, +4.928888368e-03 + 4.350000000e-01, +6.140819852e-04, +6.353132238e-03 + 4.400000000e-01, +5.525736376e-04, +7.189776845e-03 + 4.450000000e-01, +4.204561825e-04, +6.921923233e-03 + 4.500000000e-01, +2.833044348e-04, +4.724069233e-03 + 4.550000000e-01, +1.709447271e-04, -4.848891857e-04 + 4.600000000e-01, +9.133980795e-05, -9.904489803e-03 + 4.650000000e-01, +4.126969468e-05, -2.461298755e-02 + 4.700000000e-01, +1.335863584e-05, -4.520322375e-02 + 4.750000000e-01, +1.888516403e-18, -7.130782433e-02 + 4.800000000e-01, -4.914367487e-06, -1.010619559e-01 + 4.850000000e-01, -5.585245819e-06, -1.305881072e-01 + 4.900000000e-01, -4.547541263e-06, -1.536553540e-01 + 4.950000000e-01, -3.130961891e-06, -1.617024715e-01 + 5.000000000e-01, -1.908890266e-06, -1.444153155e-01 + 5.050000000e-01, -1.042206678e-06, -9.100747730e-02 + 5.100000000e-01, -5.038819347e-07, +7.756098770e-03 + 5.150000000e-01, -2.060015565e-07, +1.569221066e-01 + 5.200000000e-01, -6.033536005e-08, +3.544383403e-01 + 5.250000000e-01, -9.644121496e-21, +5.885025908e-01 + 5.300000000e-01, +1.817266122e-08, +8.358652474e-01 + 5.350000000e-01, +1.868803958e-08, +1.061849656e+00 + 5.400000000e-01, +1.376793013e-08, +1.222725541e+00 + 5.450000000e-01, +8.577097330e-09, +1.270751817e+00 + 5.500000000e-01, +4.731665902e-09, +1.161690040e+00 + 5.550000000e-01, +2.337531714e-09, +8.639297117e-01 + 5.600000000e-01, +1.022593435e-09, +3.677500397e-01 + 5.650000000e-01, +3.782816423e-10, -3.071843138e-01 + 5.700000000e-01, +1.002506563e-10, -1.108098882e+00 + 5.750000000e-01, +1.164310201e-23, -1.950829150e+00 + 5.800000000e-01, -2.472150748e-11, -2.727853974e+00 + 5.850000000e-01, -2.300333036e-11, -3.322302211e+00 + 5.900000000e-01, -1.533437842e-11, -3.626206502e+00 + 5.950000000e-01, -8.643873713e-12, -3.560031427e+00 + 6.000000000e-01, -4.314720803e-12, -3.089752893e+00 + 6.050000000e-01, -1.928708926e-12, -2.237782366e+00 + 6.100000000e-01, -7.634537466e-13, -1.084854662e+00 + 6.150000000e-01, -2.555439173e-13, +2.384411874e-01 + 6.200000000e-01, -6.127849048e-14, +1.569751787e+00 + 6.250000000e-01, -4.541728911e-27, +2.739826799e+00 + 6.300000000e-01, +1.237191386e-14, +3.599685112e+00 + 6.350000000e-01, +1.041653328e-14, +4.044915339e+00 + 6.400000000e-01, +6.283031218e-15, +4.032391521e+00 + 6.450000000e-01, +3.204660344e-15, +3.586138654e+00 + 6.500000000e-01, +1.447427579e-15, +2.791271269e+00 + 6.550000000e-01, +5.854386450e-16, +1.777398404e+00 + 6.600000000e-01, +2.096852970e-16, +6.950601359e-01 + 6.650000000e-01, +6.350696352e-17, -3.099405221e-01 + 6.700000000e-01, +1.377953018e-17, -1.119322012e+00 + 6.750000000e-01, +5.379378296e-31, -1.658168885e+00 + 6.800000000e-01, -2.277741020e-18, -1.901475793e+00 + 6.850000000e-01, -1.735246645e-18, -1.871132388e+00 + 6.900000000e-01, -9.470606165e-19, -1.625116376e+00 + 6.950000000e-01, -4.370801840e-19, -1.242050597e+00 + 7.000000000e-01, -1.786267540e-19, -8.047242253e-01 + 7.050000000e-01, -6.537347961e-20, -3.858359231e-01 + 7.100000000e-01, -2.118647699e-20, -3.829917962e-02 + 7.150000000e-01, -5.806075333e-21, +2.089007254e-01 + 7.200000000e-01, -1.139898758e-21, +3.496853967e-01 + 7.250000000e-01, -1.620612745e-35, +3.960476321e-01 + 7.300000000e-01, +1.542685213e-22, +3.711871413e-01 + 7.350000000e-01, +1.063419792e-22, +3.024175883e-01 + 7.400000000e-01, +5.251602594e-23, +2.153068470e-01 + 7.450000000e-01, +2.193035927e-23, +1.298621516e-01 + 7.500000000e-01, +8.109642085e-24, +5.887692498e-02 + 7.550000000e-01, +2.685513466e-24, +8.116357603e-03 + 7.600000000e-01, +7.875081013e-25, -2.222714262e-02 + 7.650000000e-01, +1.952762843e-25, -3.552555383e-02 + 7.700000000e-01, +3.468994959e-26, -3.677097815e-02 + 7.750000000e-01, -3.496765852e-40, -3.103396062e-02 + 7.800000000e-01, -3.843755978e-27, -2.247998633e-02 + 7.850000000e-01, -2.397473318e-27, -1.396045159e-02 + 7.900000000e-01, -1.071300850e-27, -7.034699268e-03 + 7.950000000e-01, -4.047957029e-28, -2.239238312e-03 + 8.000000000e-01, -1.354448156e-28, +5.584923809e-04 + 8.050000000e-01, -4.058434912e-29, +1.829978718e-03 + 8.100000000e-01, -1.076854018e-29, +2.115510606e-03 + 8.150000000e-01, -2.416138676e-30, +1.875664971e-03 + 8.200000000e-01, -3.883708049e-31, +1.452843891e-03 + 8.250000000e-01, +1.025357826e-44, +1.044094950e-03 + 8.300000000e-01, +3.523220453e-32, +7.236911579e-04 + 8.350000000e-01, +1.988421014e-32, +5.145846560e-04 + 8.400000000e-01, +8.039639276e-33, +3.989443381e-04 + 8.450000000e-01, +2.748726687e-33, +3.320318754e-04 + 8.500000000e-01, +8.322017093e-34, +2.860329405e-04 + 8.550000000e-01, +2.256292263e-34, +2.358153054e-04 + 8.600000000e-01, +5.417066333e-35, +1.577389454e-04 + 8.650000000e-01, +1.099764584e-35, +4.807422246e-05 + 8.700000000e-01, +1.599539611e-36, -9.996805373e-05 + 8.750000000e-01, -6.322229835e-50, -2.822796779e-04 + 8.800000000e-01, -1.188035304e-37, -4.749162584e-04 + 8.850000000e-01, -6.066922176e-38, -6.617188045e-04 + 8.900000000e-01, -2.219561560e-38, -8.021461627e-04 + 8.950000000e-01, -6.866457597e-39, -8.327379329e-04 + 9.000000000e-01, -1.881049996e-39, -7.062688593e-04 + 9.050000000e-01, -4.614638035e-40, -3.543666083e-04 + 9.100000000e-01, -1.002482944e-40, +2.969492618e-04 + 9.150000000e-01, -1.841548328e-41, +1.277706471e-03 + 9.200000000e-01, -2.423533024e-42, +2.604001633e-03 + 9.250000000e-01, +1.347746337e-55, +4.251217322e-03 + 9.300000000e-01, +1.473751950e-43, +6.113852167e-03 + 9.350000000e-01, +6.809794745e-44, +8.036442749e-03 + 9.400000000e-01, +2.254256572e-44, +9.798404902e-03 + 9.450000000e-01, +6.310146526e-45, +1.111745730e-02 + 9.500000000e-01, +1.564147094e-45, +1.170057041e-02 + 9.550000000e-01, +3.472045809e-46, +1.126009915e-02 + 9.600000000e-01, +6.824885183e-47, +9.569259409e-03 + 9.650000000e-01, +1.134415180e-47, +6.521434264e-03 + 9.700000000e-01, +1.350853967e-48, +2.149067214e-03 + 9.750000000e-01, -8.526671746e-62, -3.328876334e-03 + 9.800000000e-01, -6.725505882e-50, -9.504275809e-03 + 9.850000000e-01, -2.811934097e-50, -1.582366796e-02 + 9.900000000e-01, -8.422577434e-51, -2.162236117e-02 + 9.950000000e-01, -2.133298675e-51, -2.621152993e-02 + 1.000000000e+00, -4.784762256e-52, -2.898166807e-02 From b9ce371891b79b05f194e87781b6eb4bc46efcc7 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 21:41:10 +0000 Subject: [PATCH 11/32] Clean up --- palace/models/timeoperator.cpp | 3 +-- palace/models/timeoperator.hpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index f415666a2..5968a8424 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -29,7 +29,7 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator Vector NegJ; // Time dependence of current pulse for excitation: -J'(t) = -g'(t) J. This function - // returns g(t). + // returns g'(t). std::function &dJ_coef; // Internal objects for solution of linear systems during time stepping. @@ -39,7 +39,6 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator mutable Vector RHS; int size_E; - // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. std::function ConfigureLinearSolver; diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index c32e72f52..b9640280b 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -46,8 +46,8 @@ class TimeOperator std::function &dJ_coef); // Access solution vectors for E- and B-fields. - virtual const Vector &GetE() const { return E; } - virtual const Vector &GetB() const { return B; } + const Vector &GetE() const { return E; } + const Vector &GetB() const { return B; } // Return the linear solver associated with the implicit or explicit time integrator. const KspSolver &GetLinearSolver() const; From 11092e9686243434cdbfebc980380e920cbfd067 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 21:41:29 +0000 Subject: [PATCH 12/32] Add SUNDIALS to spack install instructions --- spack/local/packages/palace/package.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spack/local/packages/palace/package.py b/spack/local/packages/palace/package.py index 4eceb470a..392eee9b2 100644 --- a/spack/local/packages/palace/package.py +++ b/spack/local/packages/palace/package.py @@ -27,6 +27,7 @@ class Palace(CMakePackage, CudaPackage, ROCmPackage): "superlu-dist", default=True, description="Build with SuperLU_DIST sparse direct solver" ) variant("strumpack", default=False, description="Build with STRUMPACK sparse direct solver") + variant("sundials", default=True, description="Build with SUNDIALS differential/algebraic equations solver") variant("mumps", default=False, description="Build with MUMPS sparse direct solver") variant("slepc", default=True, description="Build with SLEPc eigenvalue solver") variant("arpack", default=False, description="Build with ARPACK eigenvalue solver") @@ -76,6 +77,13 @@ class Palace(CMakePackage, CudaPackage, ROCmPackage): depends_on("strumpack+openmp", when="+openmp") depends_on("strumpack~openmp", when="~openmp") + with when("+sundials"): + depends_on("sundials") + depends_on("sundials+shared", when="+shared") + depends_on("sundials~shared", when="~shared") + depends_on("sundials+openmp", when="+openmp") + depends_on("sundials~openmp", when="~openmp") + with when("+mumps"): depends_on("mumps+metis+parmetis") depends_on("mumps+shared", when="+shared") @@ -116,6 +124,7 @@ class Palace(CMakePackage, CudaPackage, ROCmPackage): depends_on(f"hypre{cuda_variant}", when=f"{cuda_variant}") depends_on(f"superlu-dist{cuda_variant}", when=f"+superlu-dist{cuda_variant}") depends_on(f"strumpack{cuda_variant}", when=f"+strumpack{cuda_variant}") + depends_on(f"sundials{cuda_variant}", when=f"+sundials{cuda_variant}") depends_on(f"slepc{cuda_variant} ^petsc{cuda_variant}", when=f"+slepc{cuda_variant}") depends_on(f"magma{cuda_variant}", when=f"+magma{cuda_variant}") with when("+rocm"): @@ -124,6 +133,7 @@ class Palace(CMakePackage, CudaPackage, ROCmPackage): depends_on(f"hypre{rocm_variant}", when=f"{rocm_variant}") depends_on(f"superlu-dist{rocm_variant}", when=f"+superlu-dist{rocm_variant}") depends_on(f"strumpack{rocm_variant}", when=f"+strumpack{rocm_variant}") + depends_on(f"sundials{rocm_variant}", when=f"+sundials{rocm_variant}") depends_on(f"slepc{rocm_variant} ^petsc{rocm_variant}", when=f"+slepc{rocm_variant}") depends_on(f"magma{rocm_variant}", when=f"+magma{rocm_variant}") @@ -145,6 +155,7 @@ def cmake_args(self): self.define_from_variant("PALACE_WITH_OPENMP", "openmp"), self.define_from_variant("PALACE_WITH_SUPERLU", "superlu-dist"), self.define_from_variant("PALACE_WITH_STRUMPACK", "strumpack"), + self.define_from_variant("PALACE_WITH_SUNDIALS", "sundials"), self.define_from_variant("PALACE_WITH_MUMPS", "mumps"), self.define_from_variant("PALACE_WITH_SLEPC", "slepc"), self.define_from_variant("PALACE_WITH_ARPACK", "arpack"), @@ -183,6 +194,8 @@ def cmake_args(self): # against MPI libraries if "+superlu-dist" in self.spec: args += [self.define("SuperLUDist_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI")] + if "+sundials" in self.spec: + args += [self.define("SUNDIALS_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI")] if "+strumpack" in self.spec: args += [self.define("STRUMPACK_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI;MPI_Fortran")] if "+mumps" in self.spec: From 11ad777211a52299cbb98d3a41a91df5f2bf3585 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 22:15:43 +0000 Subject: [PATCH 13/32] Change SUNDIALS version for spack installer --- spack/local/packages/palace/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spack/local/packages/palace/package.py b/spack/local/packages/palace/package.py index 392eee9b2..e3dd6a4a9 100644 --- a/spack/local/packages/palace/package.py +++ b/spack/local/packages/palace/package.py @@ -78,7 +78,7 @@ class Palace(CMakePackage, CudaPackage, ROCmPackage): depends_on("strumpack~openmp", when="~openmp") with when("+sundials"): - depends_on("sundials") + depends_on("sundials@6.7.0") depends_on("sundials+shared", when="+shared") depends_on("sundials~shared", when="~shared") depends_on("sundials+openmp", when="+openmp") From aea8d7f89bb42b6d4efa5dbf7dff7e7cc3cec6f9 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 5 Nov 2024 23:10:29 +0000 Subject: [PATCH 14/32] Fix formatting issues --- docs/src/config/solver.md | 4 +- docs/src/install.md | 4 +- palace/models/timeoperator.cpp | 97 ++++++++++++++-------------------- palace/utils/configfile.hpp | 6 +-- palace/utils/iodata.cpp | 7 +-- 5 files changed, 51 insertions(+), 67 deletions(-) diff --git a/docs/src/config/solver.md b/docs/src/config/solver.md index 37cf02304..cbc3f6da2 100644 --- a/docs/src/config/solver.md +++ b/docs/src/config/solver.md @@ -266,10 +266,10 @@ saved in the `paraview/` directory under the directory specified by Only relevant when `"Type"` is `"ARKODE"`, `"Runge-Kutta"` or `"CVODE"`. `"RelTol" [1e-4]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"CVODE"` or `"ARKODE"` . +when `"Type"` is `"CVODE"` or `"ARKODE"` . `"AbsTol" [1e-9]` : Absolute tolerance used in adaptive time-stepping schemes. Only relevant - when `"Type"` is `"CVODE"` or `"ARKODE"`. +when `"Type"` is `"CVODE"` or `"ARKODE"`. ## `solver["Electrostatic"]` diff --git a/docs/src/install.md b/docs/src/install.md index cea342c06..2c6f74619 100644 --- a/docs/src/install.md +++ b/docs/src/install.md @@ -156,7 +156,7 @@ and LAPACK libraries depending on the system architecture according to the follo procedure: - For `x86_64` systems: - + + If the `MKLROOT` environment variable is set, looks for an [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html) installation. @@ -167,7 +167,7 @@ procedure: which is permissively licensed and available from most package managers. - For `aarch64`/`arm64` systems: - + + If the `ARMPL_DIR` environment variable is set, looks for an [Arm Performance Libraries (PL)](https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries) installation. diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 5968a8424..8af900e28 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -18,7 +18,7 @@ namespace palace namespace { -class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator +class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator { public: // MPI communicator. @@ -45,10 +45,9 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator public: TimeDependentFirstOrderOperator(const IoData &iodata, SpaceOperator &space_op, - std::function &dJ_coef, double t0, - mfem::TimeDependentOperator::Type type) - : mfem::TimeDependentOperator(2*space_op.GetNDSpace().GetTrueVSize(), - t0, type), + std::function &dJ_coef, double t0, + mfem::TimeDependentOperator::Type type) + : mfem::TimeDependentOperator(2 * space_op.GetNDSpace().GetTrueVSize(), t0, type), comm(space_op.GetComm()), dJ_coef(dJ_coef) { // Get dimensions of E and Edot vectors. @@ -65,7 +64,7 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator // Set up RHS vector for the current source term: -g(t) J, where g(t) handles the time // dependence. space_op.GetExcitationVector(NegJ); - RHS.SetSize(2*size_E); + RHS.SetSize(2 * size_E); RHS.UseDevice(true); // Set up linear solvers. @@ -88,8 +87,8 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator { // Configure the system matrix and also the matrix (matrices) from which the // preconditioner will be constructed. - A = space_op.GetSystemMatrix(dt*dt, dt, 1.0, K.get(), C.get(), M.get()); - B = space_op.GetPreconditionerMatrix(dt*dt, dt, 1.0, 0.0); + A = space_op.GetSystemMatrix(dt * dt, dt, 1.0, K.get(), C.get(), M.get()); + B = space_op.GetPreconditionerMatrix(dt * dt, dt, 1.0, 0.0); // Configure the solver. if (!kspA) @@ -105,9 +104,9 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator // Form the RHS for the first-order ODE system void FormRHS(const Vector &u, Vector &rhs) const { - Vector u1(u.GetData() + 0, size_E); - Vector u2(u.GetData() + size_E, size_E); - Vector rhs1(rhs.GetData() + 0, size_E); + Vector u1(u.GetData() + 0, size_E); + Vector u2(u.GetData() + size_E, size_E); + Vector rhs1(rhs.GetData() + 0, size_E); Vector rhs2(rhs.GetData() + size_E, size_E); // u1 = Edot, u2 = E // rhs_u1 = -C*u1 - K*u2 - J(t) @@ -131,9 +130,9 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator du = 0.0; } FormRHS(u, RHS); - Vector du1(du.GetData() + 0, size_E); - Vector du2(du.GetData() + size_E, size_E); - Vector rhs1(RHS.GetData() + 0, size_E); + Vector du1(du.GetData() + 0, size_E); + Vector du2(du.GetData() + size_E, size_E); + Vector rhs1(RHS.GetData() + 0, size_E); Vector rhs2(RHS.GetData() + size_E, size_E); kspM->Mult(rhs1, du1); du2 = rhs2; @@ -153,9 +152,9 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator } Mpi::Print("\n"); FormRHS(u, RHS); - Vector k1(k.GetData() + 0, size_E); - Vector k2(k.GetData() + size_E, size_E); - Vector rhs1(RHS.GetData() + 0, size_E); + Vector k1(k.GetData() + 0, size_E); + Vector k2(k.GetData() + size_E, size_E); + Vector rhs1(RHS.GetData() + 0, size_E); Vector rhs2(RHS.GetData() + size_E, size_E); // A k1 = rhs1 - dt K rhs2 K->AddMult(rhs2, rhs1, -dt); @@ -165,14 +164,10 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator linalg::AXPBYPCZ(1.0, rhs2, dt, k1, 0.0, k2); } - void ExplicitMult(const Vector &u, Vector &v) const override - { - Mult(u, v); - } + void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } // Setup A = M - gamma J = M + gamma C + gamma^2 K - int SUNImplicitSetup(const Vector &y, const Vector &fy, - int jok, int *jcur, double gamma) + int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, double gamma) { // Update Jacobian matrix if (!kspA || gamma != saved_gamma) @@ -192,9 +187,9 @@ class TimeDependentFirstOrderOperator: public mfem::TimeDependentOperator // Solve (Mass - dt Jacobian) x = Mass b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) { - Vector b1(b.GetData() + 0, size_E); + Vector b1(b.GetData() + 0, size_E); Vector b2(b.GetData() + size_E, size_E); - Vector x1(x.GetData() + 0, size_E); + Vector x1(x.GetData() + 0, size_E); Vector x2(x.GetData() + size_E, size_E); Vector rhs(RHS.GetData() + 0, size_E); @@ -223,7 +218,7 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, int size_B = space_op.GetRTSpace().GetTrueVSize(); // Allocate space for solution vectors. - sol.SetSize(2*size_E); + sol.SetSize(2 * size_E); E.SetSize(size_E); En.SetSize(size_E); B.SetSize(size_B); @@ -251,7 +246,8 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, constexpr double rho_inf = 1.0; use_mfem_integrator = true; ode = std::make_unique(rho_inf); - op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); + op = std::make_unique(iodata, space_op, dJ_coef, + 0.0, type); } break; case config::TransientSolverData::Type::ARKODE: @@ -263,7 +259,8 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, arkode = std::make_unique(space_op.GetComm(), mfem::ARKStepSolver::IMPLICIT); // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); + op = std::make_unique(iodata, space_op, dJ_coef, + 0.0, type); // Initialize ARKODE. arkode->Init(*op); // Use implicit setup/solve defined in SUNImplicit*. @@ -294,7 +291,8 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, cvode = std::make_unique(space_op.GetComm(), CV_BDF); type = mfem::TimeDependentOperator::IMPLICIT; // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, dJ_coef, 0.0, type); + op = std::make_unique(iodata, space_op, dJ_coef, + 0.0, type); // Initialize CVODE. cvode->Init(*op); // Relative and absolute tolerances for time step control. @@ -305,7 +303,7 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, // CV_BDF can go up to 5, but >= 3 is not unconditionally stable. cvode->SetMaxOrder(order); // Set the max number of steps allowed in one CVODE step() call. - cvode->SetMaxNSteps(10000); //default 500 + cvode->SetMaxNSteps(10000); // default 500 // Set the ODE solver to CVODE. ode = std::move(cvode); #else @@ -370,9 +368,9 @@ void TimeOperator::Init(double &dt) ode->Init(*op); } #if defined(MFEM_USE_SUNDIALS) - if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + if (mfem::ARKStepSolver *arkode = dynamic_cast(ode.get())) { - if(!adapt_dt) + if (!adapt_dt) { // Disable adaptive time stepping. arkode->SetFixedStep(dt); @@ -397,17 +395,11 @@ void TimeOperator::Step(double &t, double &dt) void TimeOperator::PrintStats() { #if defined(MFEM_USE_SUNDIALS) - if (mfem::ARKStepSolver* arkode = dynamic_cast(ode.get())) + if (mfem::ARKStepSolver *arkode = dynamic_cast(ode.get())) { long int expsteps, accsteps, step_attempts, nfe_evals, nfi_evals, nlinsetups, netfails; - ARKStepGetTimestepperStats(arkode->GetMem(), - &expsteps, - &accsteps, - &step_attempts, - &nfe_evals, - &nfi_evals, - &nlinsetups, - &netfails); + ARKStepGetTimestepperStats(arkode->GetMem(), &expsteps, &accsteps, &step_attempts, + &nfe_evals, &nfi_evals, &nlinsetups, &netfails); long int nniters; ARKStepGetNumNonlinSolvIters(arkode->GetMem(), &nniters); @@ -421,24 +413,15 @@ void TimeOperator::PrintStats() Mpi::Print(" Calls to linear solver solve function: {:d}\n", nniters); Mpi::Print(" Number of error test failures: {:d}\n", netfails); } - else if (mfem::CVODESolver* cvode = dynamic_cast(ode.get())) + else if (mfem::CVODESolver *cvode = dynamic_cast(ode.get())) { long int nsteps, nfevals, nlinsetups, netfails; - int qlast, qcur; - double hinused, hlast, hcur, tcur; - - // Get integrator stats. - CVodeGetIntegratorStats(cvode->GetMem(), - &nsteps, - &nfevals, - &nlinsetups, - &netfails, - &qlast, - &qcur, - &hinused, - &hlast, - &hcur, - &tcur); + int qlast, qcur; + double hinused, hlast, hcur, tcur; + + // Get integrator stats. + CVodeGetIntegratorStats(cvode->GetMem(), &nsteps, &nfevals, &nlinsetups, &netfails, + &qlast, &qcur, &hinused, &hlast, &hcur, &tcur); Mpi::Print("\n CVODE time-stepper statistics\n"); Mpi::Print(" Number of steps: {:d}\n", nsteps); Mpi::Print(" Calls to RHS function: {:d}\n", nfevals); diff --git a/palace/utils/configfile.hpp b/palace/utils/configfile.hpp index 1ce6940a7..7000701e2 100644 --- a/palace/utils/configfile.hpp +++ b/palace/utils/configfile.hpp @@ -776,11 +776,11 @@ struct TransientSolverData // RK scheme order for SUNDIALS ARKODE integrators. // Max order for SUNDIALS CVODE integrator. - int order = -1;//2 + int order = -1; // Adaptive time-stepping tolerances - double rel_tol = -1;//1e-4; - double abs_tol = -1;//1e-9; + double rel_tol = -1; + double abs_tol = -1; void SetUp(json &solver); }; diff --git a/palace/utils/iodata.cpp b/palace/utils/iodata.cpp index f43d3b52e..ac13a9373 100644 --- a/palace/utils/iodata.cpp +++ b/palace/utils/iodata.cpp @@ -433,7 +433,7 @@ void IoData::CheckConfiguration() if (solver.transient.rel_tol > 0 || solver.transient.abs_tol > 0) { Mpi::Warning("Generalized alpha transient solver does not use relative " - "and absolute tolerance parameters!\n"); + "and absolute tolerance parameters!\n"); } if (solver.transient.order > 0) { @@ -465,7 +465,7 @@ void IoData::CheckConfiguration() solver.transient.order = 5; } } - else // ARKODE and RUNGE_KUTTA + else // ARKODE and RUNGE_KUTTA { if (solver.transient.rel_tol < 0) { @@ -486,7 +486,8 @@ void IoData::CheckConfiguration() } else if (solver.transient.order > 5) { - Mpi::Warning("Runge-Kutta/ARKODE transient solver order cannot be greater than 5!\n"); + Mpi::Warning( + "Runge-Kutta/ARKODE transient solver order cannot be greater than 5!\n"); solver.transient.order = 5; } } From cd7cfc4cb9ec8c52560cdc2798d5a7bbd2f37ccd Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Thu, 7 Nov 2024 23:52:28 +0000 Subject: [PATCH 15/32] Use MFEM's SDIRK23 solver as the fixed step Runge-Kutta option, along with small fixes --- cmake/ExternalMFEM.cmake | 2 +- cmake/ExternalSUNDIALS.cmake | 2 +- docs/src/config/solver.md | 8 ++-- palace/drivers/transientsolver.cpp | 2 +- palace/models/timeoperator.cpp | 72 ++++++++++-------------------- palace/models/timeoperator.hpp | 3 +- palace/utils/iodata.cpp | 13 +++--- scripts/schema/config/solver.json | 2 +- 8 files changed, 39 insertions(+), 65 deletions(-) diff --git a/cmake/ExternalMFEM.cmake b/cmake/ExternalMFEM.cmake index 2593e5345..e9fc16019 100644 --- a/cmake/ExternalMFEM.cmake +++ b/cmake/ExternalMFEM.cmake @@ -317,7 +317,7 @@ Intel C++ compiler for MUMPS and STRUMPACK dependencies") list(APPEND MFEM_OPTIONS "-DSUNDIALS_DIR=${CMAKE_INSTALL_PREFIX}" "-DSUNDIALS_OPT=-I${CMAKE_INSTALL_PREFIX}/include" - "-DSUNDIALS_LIB=-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib64 -L${CMAKE_INSTALL_PREFIX}/lib64 -lsundials_arkode, -lsundials_cvode -lsundials_nvecserial -lsundials_kinsol -lsundials_nvecparhyp -lsundials_nvecparallel" + "-DSUNDIALS_LIB=-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib64 -L${CMAKE_INSTALL_PREFIX}/lib64 -lsundials_arkode, -lsundials_cvode -lsundials_kinsol -lsundials_nvecparhyp -lsundials_nvecparallel" "-DSUNDIALS_REQUIRED_PACKAGES=${SUNDIALS_REQUIRED_PACKAGES}" ) if(NOT "${SUNDIALS_REQUIRED_LIBRARIES}" STREQUAL "") diff --git a/cmake/ExternalSUNDIALS.cmake b/cmake/ExternalSUNDIALS.cmake index 5ddcb224c..b08e7256b 100644 --- a/cmake/ExternalSUNDIALS.cmake +++ b/cmake/ExternalSUNDIALS.cmake @@ -6,7 +6,7 @@ # # Force build order -set(SUNDIALS_DEPENDENCIES ) +set(SUNDIALS_DEPENDENCIES) set(SUNDIALS_OPTIONS ${PALACE_SUPERBUILD_DEFAULT_ARGS}) list(APPEND SUNDIALS_OPTIONS diff --git a/docs/src/config/solver.md b/docs/src/config/solver.md index cbc3f6da2..3f4494685 100644 --- a/docs/src/config/solver.md +++ b/docs/src/config/solver.md @@ -226,8 +226,7 @@ the second-order system of differential equations. The available options are: ODE system for the electric field with adaptive time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). - `"CVODE"` : SUNDIALS CVODE implicit multistep method scheme applied to the first-order ODE system for the electric field with adaptive time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). - - `"RungeKutta"` : SUNDIALS ARKode implicit Runge-Kutta scheme applied to the first-order - ODE system for the electric field with fixed time-stepping. This option is only available when *Palace* has been [built with SUNDIALS support](../install.md#Configuration-options). + - `"RungeKutta"` : Two stage, singly diagonal implicit Runge-Kutta (SDIRK) method. Second order and L-stable. - `"Default"` : Use the default `"GeneralizedAlpha"` time integration scheme. `"Excitation" [None]` : Controls the time dependence of the source excitation. The @@ -262,8 +261,9 @@ disk for [visualization with ParaView](../guide/postprocessing.md#Visualization) saved in the `paraview/` directory under the directory specified by [`config["Problem"]["Output"]`](problem.md#config%5B%22Problem%22%5D). -`"Order" [2]` : Order of the Runge-Kutta integrators or maximum order of the multistep method. -Only relevant when `"Type"` is `"ARKODE"`, `"Runge-Kutta"` or `"CVODE"`. +`"Order" [0]` : Order of the adaptive Runge-Kutta integrators or maximum order of the multistep method. +Only relevant when `"Type"` is `"ARKODE"` or `"CVODE"`. A value less than 1 defaults to 3 for `"ARKODE"` +and 2 for `"CVODE"`. `"RelTol" [1e-4]` : Relative tolerance used in adaptive time-stepping schemes. Only relevant when `"Type"` is `"CVODE"` or `"ARKODE"` . diff --git a/palace/drivers/transientsolver.cpp b/palace/drivers/transientsolver.cpp index 873fb5cea..32e2c58c4 100644 --- a/palace/drivers/transientsolver.cpp +++ b/palace/drivers/transientsolver.cpp @@ -102,7 +102,7 @@ TransientSolver::Solve(const std::vector> &mesh) const { Mpi::Print("\n"); t += delta_t; - time_op.Init(delta_t); // Initial conditions + time_op.Init(); // Initial conditions } else { diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 8af900e28..777f2c642 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -61,7 +61,7 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator C = space_op.GetDampingMatrix(Operator::DIAG_ZERO); M = space_op.GetMassMatrix(Operator::DIAG_ONE); - // Set up RHS vector for the current source term: -g(t) J, where g(t) handles the time + // Set up RHS vector for the current source term: -g'(t) J, where g(t) handles the time // dependence. space_op.GetExcitationVector(NegJ); RHS.SetSize(2 * size_E); @@ -109,8 +109,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator Vector rhs1(rhs.GetData() + 0, size_E); Vector rhs2(rhs.GetData() + size_E, size_E); // u1 = Edot, u2 = E - // rhs_u1 = -C*u1 - K*u2 - J(t) - // rhs_u2 = u1 + // rhs1 = -(K * u2 + C * u1) - J(t) + // rhs2 = u1 K->Mult(u2, rhs1); if (C) { @@ -122,6 +122,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator } // Solve M du = rhs + // |M 0| |du1| = |-(K * u2 + C * u1) - J(t) | + // |0 I| |du2| | u1 | void Mult(const Vector &u, Vector &du) const override { if (kspM->NumTotalMult() == 0) @@ -167,7 +169,7 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } // Setup A = M - gamma J = M + gamma C + gamma^2 K - int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, double gamma) + int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, double gamma) override { // Update Jacobian matrix if (!kspA || gamma != saved_gamma) @@ -185,7 +187,7 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator } // Solve (Mass - dt Jacobian) x = Mass b - int SUNImplicitSolve(const Vector &b, Vector &x, double tol) + int SUNImplicitSolve(const Vector &b, Vector &x, double tol) override { Vector b1(b.GetData() + 0, size_E); Vector b2(b.GetData() + size_E, size_E); @@ -209,6 +211,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef) + : rel_tol(iodata.solver.transient.rel_tol), abs_tol(iodata.solver.transient.abs_tol), + order(iodata.solver.transient.order) { // Construct discrete curl matrix for B-field time integration. Curl = &space_op.GetCurlMatrix(); @@ -230,14 +234,10 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, // Sol = [Edot, E] E.MakeRef(sol, size_E); - // SUNDIALS adaptive time-stepping parameters. - adapt_dt = true; - rel_tol = iodata.solver.transient.rel_tol; - abs_tol = iodata.solver.transient.abs_tol; - order = iodata.solver.transient.order; - // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; + op = std::make_unique(iodata, space_op, dJ_coef, + 0.0, type); switch (iodata.solver.transient.type) { case config::TransientSolverData::Type::GEN_ALPHA: @@ -246,21 +246,22 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, constexpr double rho_inf = 1.0; use_mfem_integrator = true; ode = std::make_unique(rho_inf); - op = std::make_unique(iodata, space_op, dJ_coef, - 0.0, type); } break; - case config::TransientSolverData::Type::ARKODE: case config::TransientSolverData::Type::RUNGE_KUTTA: { + constexpr int gamma_opt = 2; + use_mfem_integrator = true; + ode = std::make_unique(gamma_opt); + } + break; + case config::TransientSolverData::Type::ARKODE: + { #if defined(MFEM_USE_SUNDIALS) // SUNDIALS ARKODE solver. std::unique_ptr arkode; arkode = std::make_unique(space_op.GetComm(), mfem::ARKStepSolver::IMPLICIT); - // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, dJ_coef, - 0.0, type); // Initialize ARKODE. arkode->Init(*op); // Use implicit setup/solve defined in SUNImplicit*. @@ -271,10 +272,6 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, arkode->SetSStolerances(rel_tol, abs_tol); // Set the order of the RK scheme. ARKStepSetOrder(arkode->GetMem(), order); - if (iodata.solver.transient.type == config::TransientSolverData::Type::RUNGE_KUTTA) - { - adapt_dt = false; - } // Set the ODE solver to ARKODE. ode = std::move(arkode); #else @@ -289,10 +286,6 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, // SUNDIALS CVODE solver. std::unique_ptr cvode; cvode = std::make_unique(space_op.GetComm(), CV_BDF); - type = mfem::TimeDependentOperator::IMPLICIT; - // Operator for first-order ODE system. - op = std::make_unique(iodata, space_op, dJ_coef, - 0.0, type); // Initialize CVODE. cvode->Init(*op); // Relative and absolute tolerances for time step control. @@ -303,7 +296,7 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, // CV_BDF can go up to 5, but >= 3 is not unconditionally stable. cvode->SetMaxOrder(order); // Set the max number of steps allowed in one CVODE step() call. - cvode->SetMaxNSteps(10000); // default 500 + cvode->SetMaxNSteps(10000); // Set the ODE solver to CVODE. ode = std::move(cvode); #else @@ -318,18 +311,9 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, const KspSolver &TimeOperator::GetLinearSolver() const { const auto &firstOrder = dynamic_cast(*op); - if (isExplicit()) - { - MFEM_VERIFY(firstOrder.kspM, - "No linear solver for time-dependent operator has been constructed!\n"); - return *firstOrder.kspM; - } - else - { - MFEM_VERIFY(firstOrder.kspA, - "No linear solver for time-dependent operator has been constructed!\n"); - return *firstOrder.kspA; - } + MFEM_VERIFY(firstOrder.kspA, + "No linear solver for time-dependent operator has been constructed!\n"); + return *firstOrder.kspA; } double TimeOperator::GetMaxTimeStep() const @@ -358,7 +342,7 @@ double TimeOperator::GetMaxTimeStep() const return 2.0 / std::sqrt(lam); } -void TimeOperator::Init(double &dt) +void TimeOperator::Init() { // Always use zero initial conditions. sol = 0.0; @@ -367,16 +351,6 @@ void TimeOperator::Init(double &dt) { ode->Init(*op); } -#if defined(MFEM_USE_SUNDIALS) - if (mfem::ARKStepSolver *arkode = dynamic_cast(ode.get())) - { - if (!adapt_dt) - { - // Disable adaptive time stepping. - arkode->SetFixedStep(dt); - } - } -#endif } void TimeOperator::Step(double &t, double &dt) diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index b9640280b..eb1458bc3 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -34,7 +34,6 @@ class TimeOperator // Adaptive time-stepping parameters. int order; - bool adapt_dt; double rel_tol, abs_tol; bool use_mfem_integrator = false; @@ -60,7 +59,7 @@ class TimeOperator double GetMaxTimeStep() const; // Initialize time integrators and set 0 initial conditions. - void Init(double &dt); + void Init(); // Perform time step from t -> t + dt. void Step(double &t, double &dt); diff --git a/palace/utils/iodata.cpp b/palace/utils/iodata.cpp index ac13a9373..ce7e4fdcd 100644 --- a/palace/utils/iodata.cpp +++ b/palace/utils/iodata.cpp @@ -428,16 +428,17 @@ void IoData::CheckConfiguration() if (problem.type == config::ProblemData::Type::TRANSIENT) { if (solver.transient.type == config::TransientSolverData::Type::GEN_ALPHA || - solver.transient.type == config::TransientSolverData::Type::DEFAULT) + solver.transient.type == config::TransientSolverData::Type::DEFAULT || + solver.transient.type == config::TransientSolverData::Type::RUNGE_KUTTA) { if (solver.transient.rel_tol > 0 || solver.transient.abs_tol > 0) { - Mpi::Warning("Generalized alpha transient solver does not use relative " + Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use relative " "and absolute tolerance parameters!\n"); } if (solver.transient.order > 0) { - Mpi::Warning("Generalized alpha transient solver does not use order parameter!\n"); + Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use order parameter!\n"); } } else if (solver.transient.type == config::TransientSolverData::Type::CVODE) @@ -450,7 +451,7 @@ void IoData::CheckConfiguration() { solver.transient.abs_tol = 1e-9; } - if (solver.transient.order < 0) + if (solver.transient.order <= 0) { solver.transient.order = 2; } @@ -481,13 +482,13 @@ void IoData::CheckConfiguration() } else if (solver.transient.order < 2) { - Mpi::Warning("Runge-Kutta/ARKODE transient solver order cannot be less than 2!\n"); + Mpi::Warning("ARKODE transient solver order cannot be less than 2!\n"); solver.transient.order = 2; } else if (solver.transient.order > 5) { Mpi::Warning( - "Runge-Kutta/ARKODE transient solver order cannot be greater than 5!\n"); + "ARKODE transient solver order cannot be greater than 5!\n"); solver.transient.order = 5; } } diff --git a/scripts/schema/config/solver.json b/scripts/schema/config/solver.json index 5d19339ec..4c4131315 100644 --- a/scripts/schema/config/solver.json +++ b/scripts/schema/config/solver.json @@ -68,7 +68,7 @@ "MaxTime": { "type": "number" }, "TimeStep": { "type": "number" }, "SaveStep": { "type": "integer" }, - "Order": {"type": "integer", "minimum": 2}, + "Order": {"type": "integer"}, "RelTol": {"type": "number", "exclusiveMinimum": 0.0}, "AbsTol": {"type": "number", "exclusiveMinimum": 0.0} } From c86a4c6035a972bda4f99f3784691424f0b79e5f Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Fri, 8 Nov 2024 02:04:45 +0000 Subject: [PATCH 16/32] Remove SUNDIALS MAGMA dependency --- cmake/ExternalSUNDIALS.cmake | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cmake/ExternalSUNDIALS.cmake b/cmake/ExternalSUNDIALS.cmake index b08e7256b..917f41927 100644 --- a/cmake/ExternalSUNDIALS.cmake +++ b/cmake/ExternalSUNDIALS.cmake @@ -46,14 +46,6 @@ if(PALACE_WITH_CUDA) ) endif() -if(PALACE_WITH_MAGMA) - list(APPEND SUNDIALS_OPTIONS - "-DENABLE_MAGMA=ON" - "-DMAGMA_DIR=${MAGMA_DIR}" - ) -endif() - - string(REPLACE ";" "; " SUNDIALS_OPTIONS_PRINT "${SUNDIALS_OPTIONS}") message(STATUS "SUNDIALS_OPTIONS: ${SUNDIALS_OPTIONS_PRINT}") From 100d2f411e5f9258b5c8fe5bdd5044c22c03ad49 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Thu, 7 Nov 2024 18:08:31 -0800 Subject: [PATCH 17/32] Fix formatting issues --- palace/models/timeoperator.cpp | 7 ++++--- palace/utils/iodata.cpp | 11 ++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 777f2c642..e76be042d 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -169,7 +169,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } // Setup A = M - gamma J = M + gamma C + gamma^2 K - int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, double gamma) override + int SUNImplicitSetup(const Vector &y, const Vector &fy, int jok, int *jcur, + double gamma) override { // Update Jacobian matrix if (!kspA || gamma != saved_gamma) @@ -236,8 +237,8 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; - op = std::make_unique(iodata, space_op, dJ_coef, - 0.0, type); + op = std::make_unique(iodata, space_op, dJ_coef, 0.0, + type); switch (iodata.solver.transient.type) { case config::TransientSolverData::Type::GEN_ALPHA: diff --git a/palace/utils/iodata.cpp b/palace/utils/iodata.cpp index ce7e4fdcd..a3aa770c1 100644 --- a/palace/utils/iodata.cpp +++ b/palace/utils/iodata.cpp @@ -433,12 +433,14 @@ void IoData::CheckConfiguration() { if (solver.transient.rel_tol > 0 || solver.transient.abs_tol > 0) { - Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use relative " - "and absolute tolerance parameters!\n"); + Mpi::Warning( + "Generalized alpha and Runge-Kutta transient solvers do not use relative " + "and absolute tolerance parameters!\n"); } if (solver.transient.order > 0) { - Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use order parameter!\n"); + Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use order " + "parameter!\n"); } } else if (solver.transient.type == config::TransientSolverData::Type::CVODE) @@ -487,8 +489,7 @@ void IoData::CheckConfiguration() } else if (solver.transient.order > 5) { - Mpi::Warning( - "ARKODE transient solver order cannot be greater than 5!\n"); + Mpi::Warning("ARKODE transient solver order cannot be greater than 5!\n"); solver.transient.order = 5; } } From 8ed5f1e278b9c8e606b1c6487b38ff2c44daff43 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 11 Nov 2024 21:05:52 +0000 Subject: [PATCH 18/32] Change Vector management to avoid GPU memory issue --- cmake/ExternalSUNDIALS.cmake | 1 + palace/models/timeoperator.cpp | 92 ++++++++++++++++++++++++++-------- palace/models/timeoperator.hpp | 3 ++ 3 files changed, 74 insertions(+), 22 deletions(-) diff --git a/cmake/ExternalSUNDIALS.cmake b/cmake/ExternalSUNDIALS.cmake index 917f41927..648ef347c 100644 --- a/cmake/ExternalSUNDIALS.cmake +++ b/cmake/ExternalSUNDIALS.cmake @@ -42,6 +42,7 @@ endif() if(PALACE_WITH_CUDA) list(APPEND SUNDIALS_OPTIONS + "-DCMAKE_CUDA_ARCHITECTURES=${CMAKE_CUDA_ARCHITECTURES}" "-DENABLE_CUDA=ON" ) endif() diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index e76be042d..3ea9cf4b8 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -39,6 +39,9 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator mutable Vector RHS; int size_E; + // Indices of the first and second halves of the solution vector, sol = [Edot, E] + mfem::Array idx1, idx2; + // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. std::function ConfigureLinearSolver; @@ -53,6 +56,15 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Get dimensions of E and Edot vectors. size_E = space_op.GetNDSpace().GetTrueVSize(); + // Set array indices + idx1.SetSize(size_E); + idx2.SetSize(size_E); + for (int i = 0; i < size_E; i++) + { + idx1[i] = i; + idx2[i] = i + size_E; + } + // Construct the system matrices defining the linear operator. PEC boundaries are // handled simply by setting diagonal entries of the mass matrix for the corresponding // dofs. Because the Dirichlet BC is always homogeneous, no special elimination is @@ -69,7 +81,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Set up linear solvers. { - const int print = iodata.problem.verbose; auto pcg = std::make_unique>(comm, 0); pcg->SetInitialGuess(0); pcg->SetRelTol(iodata.solver.linear.tol); @@ -104,10 +115,14 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Form the RHS for the first-order ODE system void FormRHS(const Vector &u, Vector &rhs) const { - Vector u1(u.GetData() + 0, size_E); - Vector u2(u.GetData() + size_E, size_E); - Vector rhs1(rhs.GetData() + 0, size_E); - Vector rhs2(rhs.GetData() + size_E, size_E); + Vector u1, u2, rhs1, rhs2; + u1.UseDevice(true); u2.UseDevice(true); + rhs1.UseDevice(true); rhs2.UseDevice(true); + u.GetSubVector(idx1, u1); + u.GetSubVector(idx2, u2); + rhs.GetSubVector(idx1, rhs1); + rhs.GetSubVector(idx2, rhs2); + // u1 = Edot, u2 = E // rhs1 = -(K * u2 + C * u1) - J(t) // rhs2 = u1 @@ -119,6 +134,9 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator linalg::AXPBYPCZ(-1.0, rhs1, dJ_coef(t), NegJ, 0.0, rhs1); rhs2 = u1; + + rhs.SetSubVector(idx1, rhs1); + rhs.SetSubVector(idx2, rhs2); } // Solve M du = rhs @@ -132,12 +150,20 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator du = 0.0; } FormRHS(u, RHS); - Vector du1(du.GetData() + 0, size_E); - Vector du2(du.GetData() + size_E, size_E); - Vector rhs1(RHS.GetData() + 0, size_E); - Vector rhs2(RHS.GetData() + size_E, size_E); + + Vector du1, du2, rhs1, rhs2; + du1.UseDevice(true); du2.UseDevice(true); + rhs1.UseDevice(true); rhs2.UseDevice(true); + du.GetSubVector(idx1, du1); + du.GetSubVector(idx2, du2); + RHS.GetSubVector(idx1, rhs1); + RHS.GetSubVector(idx2, rhs2); + kspM->Mult(rhs1, du1); du2 = rhs2; + + du.SetSubVector(idx1, du1); + du.SetSubVector(idx2, du); } void ImplicitSolve(double dt, const Vector &u, Vector &k) override @@ -154,16 +180,24 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator } Mpi::Print("\n"); FormRHS(u, RHS); - Vector k1(k.GetData() + 0, size_E); - Vector k2(k.GetData() + size_E, size_E); - Vector rhs1(RHS.GetData() + 0, size_E); - Vector rhs2(RHS.GetData() + size_E, size_E); + + Vector k1, k2, rhs1, rhs2; + k1.UseDevice(true); k2.UseDevice(true); + rhs1.UseDevice(true); rhs2.UseDevice(true); + k.GetSubVector(idx1, k1); + k.GetSubVector(idx2, k2); + RHS.GetSubVector(idx1, rhs1); + RHS.GetSubVector(idx2, rhs2); + // A k1 = rhs1 - dt K rhs2 K->AddMult(rhs2, rhs1, -dt); kspA->Mult(rhs1, k1); // k2 = rhs2 + dt k1 linalg::AXPBYPCZ(1.0, rhs2, dt, k1, 0.0, k2); + + k.SetSubVector(idx1, k1); + k.SetSubVector(idx2, k2); } void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } @@ -190,11 +224,15 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Solve (Mass - dt Jacobian) x = Mass b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) override { - Vector b1(b.GetData() + 0, size_E); - Vector b2(b.GetData() + size_E, size_E); - Vector x1(x.GetData() + 0, size_E); - Vector x2(x.GetData() + size_E, size_E); - Vector rhs(RHS.GetData() + 0, size_E); + Vector b1, b2, x1, x2, rhs; + b1.UseDevice(true); b2.UseDevice(true); + x1.UseDevice(true); x2.UseDevice(true); + rhs.UseDevice(true); + b.GetSubVector(idx1, b1); + b.GetSubVector(idx2, b2); + x.GetSubVector(idx1, x1); + x.GetSubVector(idx2, x2); + RHS.GetSubVector(idx1, rhs); // A x1 = M b1 - dt K b2 M->Mult(b1, rhs); @@ -204,6 +242,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // x2 = b2 + dt x1 linalg::AXPBYPCZ(1.0, b2, saved_gamma, x1, 0.0, x2); + x.SetSubVector(idx1, x1); + x.SetSubVector(idx2, x2); return 0; } }; @@ -222,6 +262,15 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, int size_E = space_op.GetNDSpace().GetTrueVSize(); int size_B = space_op.GetRTSpace().GetTrueVSize(); + // Set indices of Edot and E in the solution vector, sol = [Edot, E] + idx1.SetSize(size_E); + idx2.SetSize(size_E); + for (int i = 0; i < size_E; i++) + { + idx1[i] = i; + idx2[i] = i + size_E; + } + // Allocate space for solution vectors. sol.SetSize(2 * size_E); E.SetSize(size_E); @@ -232,9 +281,6 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, En.UseDevice(true); B.UseDevice(true); - // Sol = [Edot, E] - E.MakeRef(sol, size_E); - // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; op = std::make_unique(iodata, space_op, dJ_coef, 0.0, @@ -347,6 +393,7 @@ void TimeOperator::Init() { // Always use zero initial conditions. sol = 0.0; + sol.GetSubVector(idx2, E); B = 0.0; if (use_mfem_integrator) { @@ -356,9 +403,10 @@ void TimeOperator::Init() void TimeOperator::Step(double &t, double &dt) { - En = E; + sol.GetSubVector(idx2, En); double dt_input = dt; ode->Step(sol, t, dt); + sol.GetSubVector(idx2, E); // Ensure user-specified dt does not change. dt = dt_input; diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index eb1458bc3..d314042ef 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -37,6 +37,9 @@ class TimeOperator double rel_tol, abs_tol; bool use_mfem_integrator = false; + // Indices of the first and second halves of the solution vector, sol = [Edot, E] + mfem::Array idx1, idx2; + // Discrete curl for B-field time integration (not owned). const Operator *Curl; From f1ebc2990a0b46fe8ebadd53449f58d497c9cb12 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 11 Nov 2024 13:06:46 -0800 Subject: [PATCH 19/32] Fix formatting issues --- palace/models/timeoperator.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 3ea9cf4b8..d59c95bc3 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -116,8 +116,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator void FormRHS(const Vector &u, Vector &rhs) const { Vector u1, u2, rhs1, rhs2; - u1.UseDevice(true); u2.UseDevice(true); - rhs1.UseDevice(true); rhs2.UseDevice(true); + u1.UseDevice(true); + u2.UseDevice(true); + rhs1.UseDevice(true); + rhs2.UseDevice(true); u.GetSubVector(idx1, u1); u.GetSubVector(idx2, u2); rhs.GetSubVector(idx1, rhs1); @@ -152,8 +154,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator FormRHS(u, RHS); Vector du1, du2, rhs1, rhs2; - du1.UseDevice(true); du2.UseDevice(true); - rhs1.UseDevice(true); rhs2.UseDevice(true); + du1.UseDevice(true); + du2.UseDevice(true); + rhs1.UseDevice(true); + rhs2.UseDevice(true); du.GetSubVector(idx1, du1); du.GetSubVector(idx2, du2); RHS.GetSubVector(idx1, rhs1); @@ -182,8 +186,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator FormRHS(u, RHS); Vector k1, k2, rhs1, rhs2; - k1.UseDevice(true); k2.UseDevice(true); - rhs1.UseDevice(true); rhs2.UseDevice(true); + k1.UseDevice(true); + k2.UseDevice(true); + rhs1.UseDevice(true); + rhs2.UseDevice(true); k.GetSubVector(idx1, k1); k.GetSubVector(idx2, k2); RHS.GetSubVector(idx1, rhs1); @@ -225,8 +231,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator int SUNImplicitSolve(const Vector &b, Vector &x, double tol) override { Vector b1, b2, x1, x2, rhs; - b1.UseDevice(true); b2.UseDevice(true); - x1.UseDevice(true); x2.UseDevice(true); + b1.UseDevice(true); + b2.UseDevice(true); + x1.UseDevice(true); + x2.UseDevice(true); rhs.UseDevice(true); b.GetSubVector(idx1, b1); b.GetSubVector(idx2, b2); From cc65463d2bf895ba7a471152f9fc71e261a5e493 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 11 Nov 2024 21:26:37 +0000 Subject: [PATCH 20/32] Fix typo --- palace/models/timeoperator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index d59c95bc3..fd8540fa6 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -167,7 +167,7 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator du2 = rhs2; du.SetSubVector(idx1, du1); - du.SetSubVector(idx2, du); + du.SetSubVector(idx2, du2); } void ImplicitSolve(double dt, const Vector &u, Vector &k) override From 2c59a02ccf2e2fc98d19ed5708b3bac600289dd1 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 13 Nov 2024 02:40:33 +0000 Subject: [PATCH 21/32] Make rhs/RHS lower/upper case consistent --- palace/models/timeoperator.cpp | 44 +++++++++++++++++----------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index fd8540fa6..4b1f52c66 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -153,18 +153,18 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator } FormRHS(u, RHS); - Vector du1, du2, rhs1, rhs2; + Vector du1, du2, RHS1, RHS2; du1.UseDevice(true); du2.UseDevice(true); - rhs1.UseDevice(true); - rhs2.UseDevice(true); + RHS1.UseDevice(true); + RHS2.UseDevice(true); du.GetSubVector(idx1, du1); du.GetSubVector(idx2, du2); - RHS.GetSubVector(idx1, rhs1); - RHS.GetSubVector(idx2, rhs2); + RHS.GetSubVector(idx1, RHS1); + RHS.GetSubVector(idx2, RHS2); - kspM->Mult(rhs1, du1); - du2 = rhs2; + kspM->Mult(RHS1, du1); + du2 = RHS2; du.SetSubVector(idx1, du1); du.SetSubVector(idx2, du2); @@ -185,22 +185,22 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator Mpi::Print("\n"); FormRHS(u, RHS); - Vector k1, k2, rhs1, rhs2; + Vector k1, k2, RHS1, RHS2; k1.UseDevice(true); k2.UseDevice(true); - rhs1.UseDevice(true); - rhs2.UseDevice(true); + RHS1.UseDevice(true); + RHS2.UseDevice(true); k.GetSubVector(idx1, k1); k.GetSubVector(idx2, k2); - RHS.GetSubVector(idx1, rhs1); - RHS.GetSubVector(idx2, rhs2); + RHS.GetSubVector(idx1, RHS1); + RHS.GetSubVector(idx2, RHS2); - // A k1 = rhs1 - dt K rhs2 - K->AddMult(rhs2, rhs1, -dt); - kspA->Mult(rhs1, k1); + // A k1 = RHS1 - dt K RHS2 + K->AddMult(RHS2, RHS1, -dt); + kspA->Mult(RHS1, k1); // k2 = rhs2 + dt k1 - linalg::AXPBYPCZ(1.0, rhs2, dt, k1, 0.0, k2); + linalg::AXPBYPCZ(1.0, RHS2, dt, k1, 0.0, k2); k.SetSubVector(idx1, k1); k.SetSubVector(idx2, k2); @@ -230,22 +230,22 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Solve (Mass - dt Jacobian) x = Mass b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) override { - Vector b1, b2, x1, x2, rhs; + Vector b1, b2, x1, x2, RHS1; b1.UseDevice(true); b2.UseDevice(true); x1.UseDevice(true); x2.UseDevice(true); - rhs.UseDevice(true); + RHS1.UseDevice(true); b.GetSubVector(idx1, b1); b.GetSubVector(idx2, b2); x.GetSubVector(idx1, x1); x.GetSubVector(idx2, x2); - RHS.GetSubVector(idx1, rhs); + RHS.GetSubVector(idx1, RHS1); // A x1 = M b1 - dt K b2 - M->Mult(b1, rhs); - K->AddMult(b2, rhs, -saved_gamma); - kspA->Mult(rhs, x1); + M->Mult(b1, RHS1); + K->AddMult(b2, RHS1, -saved_gamma); + kspA->Mult(RHS1, x1); // x2 = b2 + dt x1 linalg::AXPBYPCZ(1.0, b2, saved_gamma, x1, 0.0, x2); From 47a04e9176aed2c7e4d4fa6786801a64ffec2897 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 13 Nov 2024 18:03:23 +0000 Subject: [PATCH 22/32] Use MakeRef instead of Get/SetSubVector to split ODE system vectors --- palace/models/timeoperator.cpp | 82 ++++++++++++---------------------- palace/models/timeoperator.hpp | 3 -- 2 files changed, 29 insertions(+), 56 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index 4b1f52c66..d950cd708 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -39,9 +39,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator mutable Vector RHS; int size_E; - // Indices of the first and second halves of the solution vector, sol = [Edot, E] - mfem::Array idx1, idx2; - // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. std::function ConfigureLinearSolver; @@ -56,15 +53,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Get dimensions of E and Edot vectors. size_E = space_op.GetNDSpace().GetTrueVSize(); - // Set array indices - idx1.SetSize(size_E); - idx2.SetSize(size_E); - for (int i = 0; i < size_E; i++) - { - idx1[i] = i; - idx2[i] = i + size_E; - } - // Construct the system matrices defining the linear operator. PEC boundaries are // handled simply by setting diagonal entries of the mass matrix for the corresponding // dofs. Because the Dirichlet BC is always homogeneous, no special elimination is @@ -120,10 +108,12 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator u2.UseDevice(true); rhs1.UseDevice(true); rhs2.UseDevice(true); - u.GetSubVector(idx1, u1); - u.GetSubVector(idx2, u2); - rhs.GetSubVector(idx1, rhs1); - rhs.GetSubVector(idx2, rhs2); + u.Read(); + u1.MakeRef(const_cast(u), 0, size_E); + u2.MakeRef(const_cast(u), size_E, size_E); + rhs.ReadWrite(); + rhs1.MakeRef(rhs, 0, size_E); + rhs2.MakeRef(rhs, size_E, size_E); // u1 = Edot, u2 = E // rhs1 = -(K * u2 + C * u1) - J(t) @@ -136,9 +126,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator linalg::AXPBYPCZ(-1.0, rhs1, dJ_coef(t), NegJ, 0.0, rhs1); rhs2 = u1; - - rhs.SetSubVector(idx1, rhs1); - rhs.SetSubVector(idx2, rhs2); } // Solve M du = rhs @@ -158,16 +145,15 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator du2.UseDevice(true); RHS1.UseDevice(true); RHS2.UseDevice(true); - du.GetSubVector(idx1, du1); - du.GetSubVector(idx2, du2); - RHS.GetSubVector(idx1, RHS1); - RHS.GetSubVector(idx2, RHS2); + du.ReadWrite(); + du1.MakeRef(du, 0, size_E); + du2.MakeRef(du, size_E, size_E); + RHS.ReadWrite(); + RHS1.MakeRef(RHS, 0, size_E); + RHS2.MakeRef(RHS, size_E, size_E); kspM->Mult(RHS1, du1); du2 = RHS2; - - du.SetSubVector(idx1, du1); - du.SetSubVector(idx2, du2); } void ImplicitSolve(double dt, const Vector &u, Vector &k) override @@ -190,10 +176,12 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator k2.UseDevice(true); RHS1.UseDevice(true); RHS2.UseDevice(true); - k.GetSubVector(idx1, k1); - k.GetSubVector(idx2, k2); - RHS.GetSubVector(idx1, RHS1); - RHS.GetSubVector(idx2, RHS2); + k.ReadWrite(); + k1.MakeRef(k, 0, size_E); + k2.MakeRef(k, size_E, size_E); + RHS.ReadWrite(); + RHS1.MakeRef(RHS, 0, size_E); + RHS2.MakeRef(RHS, size_E, size_E); // A k1 = RHS1 - dt K RHS2 K->AddMult(RHS2, RHS1, -dt); @@ -201,9 +189,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // k2 = rhs2 + dt k1 linalg::AXPBYPCZ(1.0, RHS2, dt, k1, 0.0, k2); - - k.SetSubVector(idx1, k1); - k.SetSubVector(idx2, k2); } void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } @@ -236,11 +221,14 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator x1.UseDevice(true); x2.UseDevice(true); RHS1.UseDevice(true); - b.GetSubVector(idx1, b1); - b.GetSubVector(idx2, b2); - x.GetSubVector(idx1, x1); - x.GetSubVector(idx2, x2); - RHS.GetSubVector(idx1, RHS1); + b.Read(); + b1.MakeRef(const_cast(b), 0, size_E); + b2.MakeRef(const_cast(b), size_E, size_E); + x.ReadWrite(); + x1.MakeRef(x, 0, size_E); + x2.MakeRef(x, size_E, size_E); + RHS.ReadWrite(); + RHS1.MakeRef(RHS, 0, size_E); // A x1 = M b1 - dt K b2 M->Mult(b1, RHS1); @@ -250,8 +238,6 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // x2 = b2 + dt x1 linalg::AXPBYPCZ(1.0, b2, saved_gamma, x1, 0.0, x2); - x.SetSubVector(idx1, x1); - x.SetSubVector(idx2, x2); return 0; } }; @@ -270,24 +256,16 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, int size_E = space_op.GetNDSpace().GetTrueVSize(); int size_B = space_op.GetRTSpace().GetTrueVSize(); - // Set indices of Edot and E in the solution vector, sol = [Edot, E] - idx1.SetSize(size_E); - idx2.SetSize(size_E); - for (int i = 0; i < size_E; i++) - { - idx1[i] = i; - idx2[i] = i + size_E; - } - // Allocate space for solution vectors. sol.SetSize(2 * size_E); - E.SetSize(size_E); En.SetSize(size_E); B.SetSize(size_B); sol.UseDevice(true); E.UseDevice(true); En.UseDevice(true); B.UseDevice(true); + sol.ReadWrite(); + E.MakeRef(sol, size_E, size_E); // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; @@ -401,7 +379,6 @@ void TimeOperator::Init() { // Always use zero initial conditions. sol = 0.0; - sol.GetSubVector(idx2, E); B = 0.0; if (use_mfem_integrator) { @@ -411,10 +388,9 @@ void TimeOperator::Init() void TimeOperator::Step(double &t, double &dt) { - sol.GetSubVector(idx2, En); + En = E; double dt_input = dt; ode->Step(sol, t, dt); - sol.GetSubVector(idx2, E); // Ensure user-specified dt does not change. dt = dt_input; diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index d314042ef..eb1458bc3 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -37,9 +37,6 @@ class TimeOperator double rel_tol, abs_tol; bool use_mfem_integrator = false; - // Indices of the first and second halves of the solution vector, sol = [Edot, E] - mfem::Array idx1, idx2; - // Discrete curl for B-field time integration (not owned). const Operator *Curl; From 137ec8b61948cc372cc39455e02a60864365e5f7 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 13 Nov 2024 10:09:15 -0800 Subject: [PATCH 23/32] Fix formatting issues --- palace/models/timeoperator.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index d950cd708..ba5eb184d 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -109,8 +109,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator rhs1.UseDevice(true); rhs2.UseDevice(true); u.Read(); - u1.MakeRef(const_cast(u), 0, size_E); - u2.MakeRef(const_cast(u), size_E, size_E); + u1.MakeRef(const_cast(u), 0, size_E); + u2.MakeRef(const_cast(u), size_E, size_E); rhs.ReadWrite(); rhs1.MakeRef(rhs, 0, size_E); rhs2.MakeRef(rhs, size_E, size_E); @@ -222,8 +222,8 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator x2.UseDevice(true); RHS1.UseDevice(true); b.Read(); - b1.MakeRef(const_cast(b), 0, size_E); - b2.MakeRef(const_cast(b), size_E, size_E); + b1.MakeRef(const_cast(b), 0, size_E); + b2.MakeRef(const_cast(b), size_E, size_E); x.ReadWrite(); x1.MakeRef(x, 0, size_E); x2.MakeRef(x, size_E, size_E); From df38dbb0021bd805b6c71ebdcc08c53d6ff73d66 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 13 Nov 2024 23:45:33 +0000 Subject: [PATCH 24/32] Simplify transient solver config file verification --- palace/utils/configfile.cpp | 18 ++++++++ palace/utils/configfile.hpp | 9 ++-- palace/utils/iodata.cpp | 69 ------------------------------- scripts/schema/config/solver.json | 2 +- 4 files changed, 24 insertions(+), 74 deletions(-) diff --git a/palace/utils/configfile.cpp b/palace/utils/configfile.cpp index 5acca9c65..1a17d2ae1 100644 --- a/palace/utils/configfile.cpp +++ b/palace/utils/configfile.cpp @@ -1644,6 +1644,24 @@ void TransientSolverData::SetUp(json &solver) rel_tol = transient->value("RelTol", rel_tol); abs_tol = transient->value("AbsTol", abs_tol); + if (type == Type::GEN_ALPHA || type == Type::RUNGE_KUTTA || type == Type::DEFAULT) + { + if (transient->contains("Order")) + { + MFEM_WARNING("GeneralizedAlpha and RungeKutta transient solvers do not use config[\"Transient\"][\"Order\"]!"); + } + if (transient->contains("RelTol") || transient->contains("AbsTol")) + { + MFEM_WARNING( + "GeneralizedAlpha and RungeKutta transient solvers do not use\n" + "config[\"Transient\"][\"RelTol\"] and config[\"Transient\"][\"AbsTol\"]!"); + } + } else { + MFEM_VERIFY(rel_tol > 0, "config[\"Transient\"][\"RelTol\"] must be strictly positive!"); + MFEM_VERIFY(abs_tol > 0, "config[\"Transient\"][\"AbsTol\"] must be strictly positive!"); + MFEM_VERIFY(order >=2 && order <= 5, "config[\"Transient\"][\"Order\"] must be between 2 and 5!"); + } + // Cleanup transient->erase("Type"); transient->erase("Excitation"); diff --git a/palace/utils/configfile.hpp b/palace/utils/configfile.hpp index 7000701e2..dacb243f6 100644 --- a/palace/utils/configfile.hpp +++ b/palace/utils/configfile.hpp @@ -776,11 +776,12 @@ struct TransientSolverData // RK scheme order for SUNDIALS ARKODE integrators. // Max order for SUNDIALS CVODE integrator. - int order = -1; + // Not used for generalized α and Runge-Kutta integrators. + int order = 2; - // Adaptive time-stepping tolerances - double rel_tol = -1; - double abs_tol = -1; + // Adaptive time-stepping tolerances for CVODE and ARKODE. + double rel_tol = 1e-4; + double abs_tol = 1e-9; void SetUp(json &solver); }; diff --git a/palace/utils/iodata.cpp b/palace/utils/iodata.cpp index a3aa770c1..52db5b243 100644 --- a/palace/utils/iodata.cpp +++ b/palace/utils/iodata.cpp @@ -425,75 +425,6 @@ void IoData::CheckConfiguration() problem.type == config::ProblemData::Type::MAGNETOSTATIC || problem.type == config::ProblemData::Type::TRANSIENT); } - if (problem.type == config::ProblemData::Type::TRANSIENT) - { - if (solver.transient.type == config::TransientSolverData::Type::GEN_ALPHA || - solver.transient.type == config::TransientSolverData::Type::DEFAULT || - solver.transient.type == config::TransientSolverData::Type::RUNGE_KUTTA) - { - if (solver.transient.rel_tol > 0 || solver.transient.abs_tol > 0) - { - Mpi::Warning( - "Generalized alpha and Runge-Kutta transient solvers do not use relative " - "and absolute tolerance parameters!\n"); - } - if (solver.transient.order > 0) - { - Mpi::Warning("Generalized alpha and Runge-Kutta transient solvers do not use order " - "parameter!\n"); - } - } - else if (solver.transient.type == config::TransientSolverData::Type::CVODE) - { - if (solver.transient.rel_tol < 0) - { - solver.transient.rel_tol = 1e-4; - } - if (solver.transient.abs_tol < 0) - { - solver.transient.abs_tol = 1e-9; - } - if (solver.transient.order <= 0) - { - solver.transient.order = 2; - } - else if (solver.transient.order < 2) - { - Mpi::Warning("CVODE transient solver order cannot be less than 2!\n"); - solver.transient.order = 2; - } - else if (solver.transient.order > 5) - { - Mpi::Warning("CVODE transient solver order cannot be greater than 5!\n"); - solver.transient.order = 5; - } - } - else // ARKODE and RUNGE_KUTTA - { - if (solver.transient.rel_tol < 0) - { - solver.transient.rel_tol = 1e-4; - } - if (solver.transient.abs_tol < 0) - { - solver.transient.abs_tol = 1e-9; - } - if (solver.transient.order < 0) - { - solver.transient.order = 3; - } - else if (solver.transient.order < 2) - { - Mpi::Warning("ARKODE transient solver order cannot be less than 2!\n"); - solver.transient.order = 2; - } - else if (solver.transient.order > 5) - { - Mpi::Warning("ARKODE transient solver order cannot be greater than 5!\n"); - solver.transient.order = 5; - } - } - } // Configure settings for quadrature rules and partial assembly. BilinearForm::pa_order_threshold = solver.pa_order_threshold; diff --git a/scripts/schema/config/solver.json b/scripts/schema/config/solver.json index 4c4131315..c94d23a0c 100644 --- a/scripts/schema/config/solver.json +++ b/scripts/schema/config/solver.json @@ -68,7 +68,7 @@ "MaxTime": { "type": "number" }, "TimeStep": { "type": "number" }, "SaveStep": { "type": "integer" }, - "Order": {"type": "integer"}, + "Order": {"type": "integer", "minimum": 2, "maximum": 5}, "RelTol": {"type": "number", "exclusiveMinimum": 0.0}, "AbsTol": {"type": "number", "exclusiveMinimum": 0.0} } From 9ecd6d15fb503467d0588bcca3b592fc15847b6c Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Wed, 13 Nov 2024 15:48:06 -0800 Subject: [PATCH 25/32] fix formatting issues --- palace/utils/configfile.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/palace/utils/configfile.cpp b/palace/utils/configfile.cpp index 1a17d2ae1..127de4a95 100644 --- a/palace/utils/configfile.cpp +++ b/palace/utils/configfile.cpp @@ -1648,18 +1648,24 @@ void TransientSolverData::SetUp(json &solver) { if (transient->contains("Order")) { - MFEM_WARNING("GeneralizedAlpha and RungeKutta transient solvers do not use config[\"Transient\"][\"Order\"]!"); + MFEM_WARNING("GeneralizedAlpha and RungeKutta transient solvers do not use " + "config[\"Transient\"][\"Order\"]!"); } if (transient->contains("RelTol") || transient->contains("AbsTol")) { - MFEM_WARNING( - "GeneralizedAlpha and RungeKutta transient solvers do not use\n" - "config[\"Transient\"][\"RelTol\"] and config[\"Transient\"][\"AbsTol\"]!"); + MFEM_WARNING( + "GeneralizedAlpha and RungeKutta transient solvers do not use\n" + "config[\"Transient\"][\"RelTol\"] and config[\"Transient\"][\"AbsTol\"]!"); } - } else { - MFEM_VERIFY(rel_tol > 0, "config[\"Transient\"][\"RelTol\"] must be strictly positive!"); - MFEM_VERIFY(abs_tol > 0, "config[\"Transient\"][\"AbsTol\"] must be strictly positive!"); - MFEM_VERIFY(order >=2 && order <= 5, "config[\"Transient\"][\"Order\"] must be between 2 and 5!"); + } + else + { + MFEM_VERIFY(rel_tol > 0, + "config[\"Transient\"][\"RelTol\"] must be strictly positive!"); + MFEM_VERIFY(abs_tol > 0, + "config[\"Transient\"][\"AbsTol\"] must be strictly positive!"); + MFEM_VERIFY(order >= 2 && order <= 5, + "config[\"Transient\"][\"Order\"] must be between 2 and 5!"); } // Cleanup From db8c2a5e8a7b65afc9a369a319a3c56f68a2c73f Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 01:57:27 +0000 Subject: [PATCH 26/32] Add dB/dt to ODE system instead of using trapezoidal integration --- palace/models/timeoperator.cpp | 69 +++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index ba5eb184d..c61d45b34 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -37,7 +37,9 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator std::unique_ptr kspM, kspA; std::unique_ptr A, B; mutable Vector RHS; - int size_E; + int size_E, size_B; + + const Operator *Curl; // Bindings to SpaceOperator functions to get the system matrix and preconditioner, and // construct the linear solver. @@ -47,11 +49,12 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator TimeDependentFirstOrderOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef, double t0, mfem::TimeDependentOperator::Type type) - : mfem::TimeDependentOperator(2 * space_op.GetNDSpace().GetTrueVSize(), t0, type), + : mfem::TimeDependentOperator(2 * space_op.GetNDSpace().GetTrueVSize() + space_op.GetRTSpace().GetTrueVSize(), t0, type), comm(space_op.GetComm()), dJ_coef(dJ_coef) { // Get dimensions of E and Edot vectors. size_E = space_op.GetNDSpace().GetTrueVSize(); + size_B = space_op.GetRTSpace().GetTrueVSize(); // Construct the system matrices defining the linear operator. PEC boundaries are // handled simply by setting diagonal entries of the mass matrix for the corresponding @@ -61,10 +64,12 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator C = space_op.GetDampingMatrix(Operator::DIAG_ZERO); M = space_op.GetMassMatrix(Operator::DIAG_ONE); + Curl = &space_op.GetCurlMatrix(); + // Set up RHS vector for the current source term: -g'(t) J, where g(t) handles the time // dependence. space_op.GetExcitationVector(NegJ); - RHS.SetSize(2 * size_E); + RHS.SetSize(2 * size_E + size_B); RHS.UseDevice(true); // Set up linear solvers. @@ -103,21 +108,26 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Form the RHS for the first-order ODE system void FormRHS(const Vector &u, Vector &rhs) const { - Vector u1, u2, rhs1, rhs2; + Vector u1, u2, u3, rhs1, rhs2, rhs3; u1.UseDevice(true); u2.UseDevice(true); + u3.UseDevice(true); rhs1.UseDevice(true); rhs2.UseDevice(true); + rhs3.UseDevice(true); u.Read(); u1.MakeRef(const_cast(u), 0, size_E); u2.MakeRef(const_cast(u), size_E, size_E); + u3.MakeRef(const_cast(u), 2 * size_E, size_B); rhs.ReadWrite(); rhs1.MakeRef(rhs, 0, size_E); rhs2.MakeRef(rhs, size_E, size_E); + rhs3.MakeRef(rhs, 2 * size_E, size_B); - // u1 = Edot, u2 = E + // u1 = Edot, u2 = E, u3 = B // rhs1 = -(K * u2 + C * u1) - J(t) // rhs2 = u1 + // rhs3 = -curl u2 K->Mult(u2, rhs1); if (C) { @@ -126,11 +136,15 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator linalg::AXPBYPCZ(-1.0, rhs1, dJ_coef(t), NegJ, 0.0, rhs1); rhs2 = u1; + + Curl->Mult(u2, rhs3); + rhs3 *= -1; } // Solve M du = rhs - // |M 0| |du1| = |-(K * u2 + C * u1) - J(t) | - // |0 I| |du2| | u1 | + // |M 0 0| |du1| = |-(K * u2 + C * u1) - J(t) | + // |0 I 0| |du2| | u1 | + // |0 0 I| |du3| = |-curl u2 | void Mult(const Vector &u, Vector &du) const override { if (kspM->NumTotalMult() == 0) @@ -140,20 +154,25 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator } FormRHS(u, RHS); - Vector du1, du2, RHS1, RHS2; + Vector du1, du2, du3, RHS1, RHS2, RHS3; du1.UseDevice(true); du2.UseDevice(true); + du3.UseDevice(true); RHS1.UseDevice(true); RHS2.UseDevice(true); + RHS3.UseDevice(true); du.ReadWrite(); du1.MakeRef(du, 0, size_E); du2.MakeRef(du, size_E, size_E); + du3.MakeRef(du, 2 * size_E, size_B); RHS.ReadWrite(); RHS1.MakeRef(RHS, 0, size_E); RHS2.MakeRef(RHS, size_E, size_E); + RHS3.MakeRef(RHS, 2 * size_E, size_B); kspM->Mult(RHS1, du1); du2 = RHS2; + du3 = RHS3; } void ImplicitSolve(double dt, const Vector &u, Vector &k) override @@ -171,17 +190,21 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator Mpi::Print("\n"); FormRHS(u, RHS); - Vector k1, k2, RHS1, RHS2; + Vector k1, k2, k3, RHS1, RHS2, RHS3; k1.UseDevice(true); k2.UseDevice(true); + k3.UseDevice(true); RHS1.UseDevice(true); RHS2.UseDevice(true); + RHS3.UseDevice(true); k.ReadWrite(); k1.MakeRef(k, 0, size_E); k2.MakeRef(k, size_E, size_E); + k3.MakeRef(k, 2 * size_E, size_B); RHS.ReadWrite(); RHS1.MakeRef(RHS, 0, size_E); RHS2.MakeRef(RHS, size_E, size_E); + RHS3.MakeRef(RHS, 2 * size_E, size_B); // A k1 = RHS1 - dt K RHS2 K->AddMult(RHS2, RHS1, -dt); @@ -189,6 +212,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // k2 = rhs2 + dt k1 linalg::AXPBYPCZ(1.0, RHS2, dt, k1, 0.0, k2); + + // k3 = rhs3 - dt curl k2 + k3 = RHS3; + Curl->AddMult(k2, RHS3, -dt); } void ExplicitMult(const Vector &u, Vector &v) const override { Mult(u, v); } @@ -215,18 +242,22 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // Solve (Mass - dt Jacobian) x = Mass b int SUNImplicitSolve(const Vector &b, Vector &x, double tol) override { - Vector b1, b2, x1, x2, RHS1; + Vector b1, b2, b3, x1, x2, x3, RHS1; b1.UseDevice(true); b2.UseDevice(true); + b3.UseDevice(true); x1.UseDevice(true); x2.UseDevice(true); + x3.UseDevice(true); RHS1.UseDevice(true); b.Read(); b1.MakeRef(const_cast(b), 0, size_E); b2.MakeRef(const_cast(b), size_E, size_E); + b3.MakeRef(const_cast(b), 2 * size_E, size_B); x.ReadWrite(); x1.MakeRef(x, 0, size_E); x2.MakeRef(x, size_E, size_E); + x3.MakeRef(x, 2 * size_E, size_B); RHS.ReadWrite(); RHS1.MakeRef(RHS, 0, size_E); @@ -238,6 +269,10 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator // x2 = b2 + dt x1 linalg::AXPBYPCZ(1.0, b2, saved_gamma, x1, 0.0, x2); + // x3 = b3 - dt curl x2 + x3 = b3; + Curl->AddMult(x2, x3, -saved_gamma); + return 0; } }; @@ -249,23 +284,19 @@ TimeOperator::TimeOperator(const IoData &iodata, SpaceOperator &space_op, : rel_tol(iodata.solver.transient.rel_tol), abs_tol(iodata.solver.transient.abs_tol), order(iodata.solver.transient.order) { - // Construct discrete curl matrix for B-field time integration. - Curl = &space_op.GetCurlMatrix(); // Get sizes. int size_E = space_op.GetNDSpace().GetTrueVSize(); int size_B = space_op.GetRTSpace().GetTrueVSize(); // Allocate space for solution vectors. - sol.SetSize(2 * size_E); - En.SetSize(size_E); - B.SetSize(size_B); + sol.SetSize(2 * size_E + size_B); sol.UseDevice(true); E.UseDevice(true); - En.UseDevice(true); B.UseDevice(true); sol.ReadWrite(); E.MakeRef(sol, size_E, size_E); + B.MakeRef(sol, 2 * size_E, size_B); // Create ODE solver for 1st-order IVP. mfem::TimeDependentOperator::Type type = mfem::TimeDependentOperator::IMPLICIT; @@ -379,7 +410,6 @@ void TimeOperator::Init() { // Always use zero initial conditions. sol = 0.0; - B = 0.0; if (use_mfem_integrator) { ode->Init(*op); @@ -388,15 +418,10 @@ void TimeOperator::Init() void TimeOperator::Step(double &t, double &dt) { - En = E; double dt_input = dt; ode->Step(sol, t, dt); // Ensure user-specified dt does not change. dt = dt_input; - - // Trapezoidal integration for B-field: dB/dt = -∇ x E. - En += E; - Curl->AddMult(En, B, -0.5 * dt); } void TimeOperator::PrintStats() From 1b0b6b25cb48170a6ffedefdf05da698bcee2a9f Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 01:59:54 +0000 Subject: [PATCH 27/32] Remove unused En vector --- palace/models/timeoperator.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/palace/models/timeoperator.hpp b/palace/models/timeoperator.hpp index eb1458bc3..3b83b41a7 100644 --- a/palace/models/timeoperator.hpp +++ b/palace/models/timeoperator.hpp @@ -24,7 +24,7 @@ class TimeOperator { private: // Solution vector storage. - Vector E, B, sol, En; + Vector E, B, sol; // Time integrator for the first order ODE system. std::unique_ptr ode; @@ -37,9 +37,6 @@ class TimeOperator double rel_tol, abs_tol; bool use_mfem_integrator = false; - // Discrete curl for B-field time integration (not owned). - const Operator *Curl; - public: TimeOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef); From 56844da0496b81bcc564cdea219b10c3054fcafd Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Mon, 18 Nov 2024 18:00:50 -0800 Subject: [PATCH 28/32] Fix formatting issues --- palace/models/timeoperator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/palace/models/timeoperator.cpp b/palace/models/timeoperator.cpp index c61d45b34..1bd22138d 100644 --- a/palace/models/timeoperator.cpp +++ b/palace/models/timeoperator.cpp @@ -49,7 +49,9 @@ class TimeDependentFirstOrderOperator : public mfem::TimeDependentOperator TimeDependentFirstOrderOperator(const IoData &iodata, SpaceOperator &space_op, std::function &dJ_coef, double t0, mfem::TimeDependentOperator::Type type) - : mfem::TimeDependentOperator(2 * space_op.GetNDSpace().GetTrueVSize() + space_op.GetRTSpace().GetTrueVSize(), t0, type), + : mfem::TimeDependentOperator(2 * space_op.GetNDSpace().GetTrueVSize() + + space_op.GetRTSpace().GetTrueVSize(), + t0, type), comm(space_op.GetComm()), dJ_coef(dJ_coef) { // Get dimensions of E and Edot vectors. From d6153371cec2a356504a97853c45f3019821d0cc Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 17:07:46 +0000 Subject: [PATCH 29/32] Update coaxial example reference --- .../examples/ref/coaxial/matched/domain-E.csv | 400 +++++++++--------- .../ref/coaxial/matched/error-indicators.csv | 2 +- test/examples/ref/coaxial/matched/port-I.csv | 400 +++++++++--------- test/examples/ref/coaxial/matched/port-V.csv | 288 ++++++------- test/examples/ref/coaxial/open/domain-E.csv | 400 +++++++++--------- .../ref/coaxial/open/error-indicators.csv | 2 +- test/examples/ref/coaxial/open/port-I.csv | 400 +++++++++--------- test/examples/ref/coaxial/open/port-V.csv | 128 +++--- 8 files changed, 1010 insertions(+), 1010 deletions(-) diff --git a/test/examples/ref/coaxial/matched/domain-E.csv b/test/examples/ref/coaxial/matched/domain-E.csv index 192f14fed..b2c293960 100644 --- a/test/examples/ref/coaxial/matched/domain-E.csv +++ b/test/examples/ref/coaxial/matched/domain-E.csv @@ -1,202 +1,202 @@ t (ns), E_elec (J), E_mag (J), E_cap (J), E_ind (J) 0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, +2.483779150e-13, +2.279766032e-13, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-02, +2.276378059e-12, +2.403226901e-12, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-02, +6.974949774e-12, +6.967633381e-12, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-02, +1.068852323e-11, +1.090294512e-11, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-02, +1.063816272e-11, +1.075641631e-11, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-02, +4.202730563e-11, +4.218693243e-11, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-02, +3.050624355e-10, +3.068827427e-10, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-02, +1.439976958e-09, +1.454945004e-09, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-02, +4.931171162e-09, +5.006388444e-09, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-02, +1.336749762e-08, +1.362500393e-08, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-02, +2.985127508e-08, +3.053107528e-08, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-02, +5.562062711e-08, +5.712646741e-08, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-02, +8.601393272e-08, +8.879943839e-08, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-02, +1.083337530e-07, +1.125125483e-07, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-02, +1.114096581e-07, +1.162695644e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-02, +1.224159817e-07, +1.261101601e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-02, +2.812645825e-07, +2.821379312e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-02, +9.352103649e-07, +9.366000197e-07, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-02, +2.681510288e-06, +2.701397407e-06, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-01, +6.231637746e-06, +6.316047208e-06, +0.000000000e+00, +0.000000000e+00 - 1.050000000e-01, +1.198909448e-05, +1.222067965e-05, +0.000000000e+00, +0.000000000e+00 - 1.100000000e-01, +1.941101090e-05, +1.989808976e-05, +0.000000000e+00, +0.000000000e+00 - 1.150000000e-01, +2.658602817e-05, +2.741744431e-05, +0.000000000e+00, +0.000000000e+00 - 1.200000000e-01, +3.084006910e-05, +3.200448516e-05, +0.000000000e+00, +0.000000000e+00 - 1.250000000e-01, +3.116938025e-05, +3.247495182e-05, +0.000000000e+00, +0.000000000e+00 - 1.300000000e-01, +3.243953094e-05, +3.351770194e-05, +0.000000000e+00, +0.000000000e+00 - 1.350000000e-01, +4.951460936e-05, +5.001117139e-05, +0.000000000e+00, +0.000000000e+00 - 1.400000000e-01, +1.076142984e-04, +1.076244444e-04, +0.000000000e+00, +0.000000000e+00 - 1.450000000e-01, +2.349993729e-04, +2.356504713e-04, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-01, +4.472801363e-04, +4.511525966e-04, +0.000000000e+00, +0.000000000e+00 - 1.550000000e-01, +7.291799861e-04, +7.401192526e-04, +0.000000000e+00, +0.000000000e+00 - 1.600000000e-01, +1.026236746e-03, +1.048199560e-03, +0.000000000e+00, +0.000000000e+00 - 1.650000000e-01, +1.259875309e-03, +1.294903116e-03, +0.000000000e+00, +0.000000000e+00 - 1.700000000e-01, +1.369839073e-03, +1.415939252e-03, +0.000000000e+00, +0.000000000e+00 - 1.750000000e-01, +1.369485226e-03, +1.419736213e-03, +0.000000000e+00, +0.000000000e+00 - 1.800000000e-01, +1.381796571e-03, +1.425914301e-03, +0.000000000e+00, +0.000000000e+00 - 1.850000000e-01, +1.621678186e-03, +1.650302782e-03, +0.000000000e+00, +0.000000000e+00 - 1.900000000e-01, +2.312297688e-03, +2.322641202e-03, +0.000000000e+00, +0.000000000e+00 - 1.950000000e-01, +3.563511953e-03, +3.563619498e-03, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-01, +5.275801516e-03, +5.284520530e-03, +0.000000000e+00, +0.000000000e+00 - 2.050000000e-01, +7.136188815e-03, +7.177535472e-03, +0.000000000e+00, +0.000000000e+00 - 2.100000000e-01, +8.731595837e-03, +8.825062883e-03, +0.000000000e+00, +0.000000000e+00 - 2.150000000e-01, +9.737443481e-03, +9.888385971e-03, +0.000000000e+00, +0.000000000e+00 - 2.200000000e-01, +1.008554876e-02, +1.028049098e-02, +0.000000000e+00, +0.000000000e+00 - 2.250000000e-01, +1.001406588e-02, +1.022385183e-02, +0.000000000e+00, +0.000000000e+00 - 2.300000000e-01, +9.961472465e-03, +1.015141384e-02, +0.000000000e+00, +0.000000000e+00 - 2.350000000e-01, +1.035426228e-02, +1.049685735e-02, +0.000000000e+00, +0.000000000e+00 - 2.400000000e-01, +1.140025893e-02, +1.148469589e-02, +0.000000000e+00, +0.000000000e+00 - 2.450000000e-01, +1.299651326e-02, +1.303082829e-02, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-01, +1.479431046e-02, +1.479979019e-02, +0.000000000e+00, +0.000000000e+00 - 2.550000000e-01, +1.637602527e-02, +1.637713105e-02, +0.000000000e+00, +0.000000000e+00 - 2.600000000e-01, +1.744307985e-02, +1.745785598e-02, +0.000000000e+00, +0.000000000e+00 - 2.650000000e-01, +1.792074346e-02, +1.795570362e-02, +0.000000000e+00, +0.000000000e+00 - 2.700000000e-01, +1.794283349e-02, +1.799357493e-02, +0.000000000e+00, +0.000000000e+00 - 2.750000000e-01, +1.774733262e-02, +1.780329410e-02, +0.000000000e+00, +0.000000000e+00 - 2.800000000e-01, +1.755237877e-02, +1.760268880e-02, +0.000000000e+00, +0.000000000e+00 - 2.850000000e-01, +1.747556071e-02, +1.751324323e-02, +0.000000000e+00, +0.000000000e+00 - 2.900000000e-01, +1.752173044e-02, +1.754504170e-02, +0.000000000e+00, +0.000000000e+00 - 2.950000000e-01, +1.762394081e-02, +1.763525216e-02, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-01, +1.770122125e-02, +1.770480451e-02, +0.000000000e+00, +0.000000000e+00 - 3.050000000e-01, +1.770089823e-02, +1.770096364e-02, +0.000000000e+00, +0.000000000e+00 - 3.100000000e-01, +1.761188585e-02, +1.761158019e-02, +0.000000000e+00, +0.000000000e+00 - 3.150000000e-01, +1.745399156e-02, +1.745528975e-02, +0.000000000e+00, +0.000000000e+00 - 3.200000000e-01, +1.725731796e-02, +1.726124863e-02, +0.000000000e+00, +0.000000000e+00 - 3.250000000e-01, +1.704460148e-02, +1.705121735e-02, +0.000000000e+00, +0.000000000e+00 - 3.300000000e-01, +1.682291440e-02, +1.683079675e-02, +0.000000000e+00, +0.000000000e+00 - 3.350000000e-01, +1.658511017e-02, +1.659077954e-02, +0.000000000e+00, +0.000000000e+00 - 3.400000000e-01, +1.631818885e-02, +1.631627326e-02, +0.000000000e+00, +0.000000000e+00 - 3.450000000e-01, +1.601466527e-02, +1.599968728e-02, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-01, +1.568230094e-02, +1.565222981e-02, +0.000000000e+00, +0.000000000e+00 - 3.550000000e-01, +1.534683473e-02, +1.530720018e-02, +0.000000000e+00, +0.000000000e+00 - 3.600000000e-01, +1.504314380e-02, +1.500915455e-02, +0.000000000e+00, +0.000000000e+00 - 3.650000000e-01, +1.479452662e-02, +1.478833479e-02, +0.000000000e+00, +0.000000000e+00 - 3.700000000e-01, +1.458743481e-02, +1.462933087e-02, +0.000000000e+00, +0.000000000e+00 - 3.750000000e-01, +1.435624781e-02, +1.445206038e-02, +0.000000000e+00, +0.000000000e+00 - 3.800000000e-01, +1.399345809e-02, +1.412418211e-02, +0.000000000e+00, +0.000000000e+00 - 3.850000000e-01, +1.339069910e-02, +1.351177751e-02, +0.000000000e+00, +0.000000000e+00 - 3.900000000e-01, +1.249765601e-02, +1.255232674e-02, +0.000000000e+00, +0.000000000e+00 - 3.950000000e-01, +1.136895888e-02, +1.131295073e-02, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-01, +1.016652921e-02, +9.993537937e-03, +0.000000000e+00, +0.000000000e+00 - 4.050000000e-01, +9.103338645e-03, +8.857192374e-03, +0.000000000e+00, +0.000000000e+00 - 4.100000000e-01, +8.347474127e-03, +8.111248662e-03, +0.000000000e+00, +0.000000000e+00 - 4.150000000e-01, +7.933878608e-03, +7.797516506e-03, +0.000000000e+00, +0.000000000e+00 - 4.200000000e-01, +7.735052201e-03, +7.755465431e-03, +0.000000000e+00, +0.000000000e+00 - 4.250000000e-01, +7.514232171e-03, +7.687816944e-03, +0.000000000e+00, +0.000000000e+00 - 4.300000000e-01, +7.038763284e-03, +7.301237374e-03, +0.000000000e+00, +0.000000000e+00 - 4.350000000e-01, +6.195135448e-03, +6.449680361e-03, +0.000000000e+00, +0.000000000e+00 - 4.400000000e-01, +5.044090859e-03, +5.203784102e-03, +0.000000000e+00, +0.000000000e+00 - 4.450000000e-01, +3.787601466e-03, +3.810883023e-03, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-01, +2.669008201e-03, +2.571571881e-03, +0.000000000e+00, +0.000000000e+00 - 4.550000000e-01, +1.862694615e-03, +1.702557593e-03, +0.000000000e+00, +0.000000000e+00 - 4.600000000e-01, +1.410110199e-03, +1.256478692e-03, +0.000000000e+00, +0.000000000e+00 - 4.650000000e-01, +1.227392768e-03, +1.130490171e-03, +0.000000000e+00, +0.000000000e+00 - 4.700000000e-01, +1.168487677e-03, +1.144084842e-03, +0.000000000e+00, +0.000000000e+00 - 4.750000000e-01, +1.101819587e-03, +1.134282676e-03, +0.000000000e+00, +0.000000000e+00 - 4.800000000e-01, +9.604108815e-04, +1.018260716e-03, +0.000000000e+00, +0.000000000e+00 - 4.850000000e-01, +7.483644053e-04, +8.018715896e-04, +0.000000000e+00, +0.000000000e+00 - 4.900000000e-01, +5.131445519e-04, +5.454557890e-04, +0.000000000e+00, +0.000000000e+00 - 4.950000000e-01, +3.075299032e-04, +3.164810621e-04, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-01, +1.627725294e-04, +1.558619115e-04, +0.000000000e+00, +0.000000000e+00 - 5.050000000e-01, +8.168847560e-05, +6.900694242e-05, +0.000000000e+00, +0.000000000e+00 - 5.100000000e-01, +4.743409806e-05, +3.649077878e-05, +0.000000000e+00, +0.000000000e+00 - 5.150000000e-01, +3.761161687e-05, +3.154000831e-05, +0.000000000e+00, +0.000000000e+00 - 5.200000000e-01, +3.489565379e-05, +3.333461162e-05, +0.000000000e+00, +0.000000000e+00 - 5.250000000e-01, +3.077554696e-05, +3.179628803e-05, +0.000000000e+00, +0.000000000e+00 - 5.300000000e-01, +2.384003016e-05, +2.556195110e-05, +0.000000000e+00, +0.000000000e+00 - 5.350000000e-01, +1.599901730e-05, +1.733612988e-05, +0.000000000e+00, +0.000000000e+00 - 5.400000000e-01, +9.386789789e-06, +1.004800583e-05, +0.000000000e+00, +0.000000000e+00 - 5.450000000e-01, +4.985084610e-06, +5.131964741e-06, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-01, +2.639920155e-06, +2.546392437e-06, +0.000000000e+00, +0.000000000e+00 - 5.550000000e-01, +1.657497437e-06, +1.523394600e-06, +0.000000000e+00, +0.000000000e+00 - 5.600000000e-01, +1.344855715e-06, +1.256480261e-06, +0.000000000e+00, +0.000000000e+00 - 5.650000000e-01, +1.257239189e-06, +1.223507411e-06, +0.000000000e+00, +0.000000000e+00 - 5.700000000e-01, +1.201136724e-06, +1.201618442e-06, +0.000000000e+00, +0.000000000e+00 - 5.750000000e-01, +1.134182964e-06, +1.149143599e-06, +0.000000000e+00, +0.000000000e+00 - 5.800000000e-01, +1.068513204e-06, +1.088398357e-06, +0.000000000e+00, +0.000000000e+00 - 5.850000000e-01, +1.017040986e-06, +1.040165981e-06, +0.000000000e+00, +0.000000000e+00 - 5.900000000e-01, +9.776891928e-07, +1.004786274e-06, +0.000000000e+00, +0.000000000e+00 - 5.950000000e-01, +9.372039968e-07, +9.674435859e-07, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-01, +8.803555674e-07, +9.100510427e-07, +0.000000000e+00, +0.000000000e+00 - 6.050000000e-01, +7.977625463e-07, +8.212873955e-07, +0.000000000e+00, +0.000000000e+00 - 6.100000000e-01, +6.901011525e-07, +7.020100656e-07, +0.000000000e+00, +0.000000000e+00 - 6.150000000e-01, +5.681561852e-07, +5.654181817e-07, +0.000000000e+00, +0.000000000e+00 - 6.200000000e-01, +4.489787508e-07, +4.323570292e-07, +0.000000000e+00, +0.000000000e+00 - 6.250000000e-01, +3.495583773e-07, +3.235430600e-07, +0.000000000e+00, +0.000000000e+00 - 6.300000000e-01, +2.805050374e-07, +2.518066606e-07, +0.000000000e+00, +0.000000000e+00 - 6.350000000e-01, +2.424218568e-07, +2.176591426e-07, +0.000000000e+00, +0.000000000e+00 - 6.400000000e-01, +2.265213520e-07, +2.100860092e-07, +0.000000000e+00, +0.000000000e+00 - 6.450000000e-01, +2.190339843e-07, +2.119979195e-07, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-01, +2.071794947e-07, +2.075855214e-07, +0.000000000e+00, +0.000000000e+00 - 6.550000000e-01, +1.838963746e-07, +1.881257781e-07, +0.000000000e+00, +0.000000000e+00 - 6.600000000e-01, +1.494100385e-07, +1.538866088e-07, +0.000000000e+00, +0.000000000e+00 - 6.650000000e-01, +1.094733799e-07, +1.119384927e-07, +0.000000000e+00, +0.000000000e+00 - 6.700000000e-01, +7.169698865e-08, +7.162904512e-08, +0.000000000e+00, +0.000000000e+00 - 6.750000000e-01, +4.200032239e-08, +4.022396365e-08, +0.000000000e+00, +0.000000000e+00 - 6.800000000e-01, +2.270925950e-08, +2.058519898e-08, +0.000000000e+00, +0.000000000e+00 - 6.850000000e-01, +1.268263703e-08, +1.134615358e-08, +0.000000000e+00, +0.000000000e+00 - 6.900000000e-01, +8.804829176e-09, +8.759520206e-09, +0.000000000e+00, +0.000000000e+00 - 6.950000000e-01, +7.760056195e-09, +8.877975660e-09, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-01, +7.230838112e-09, +9.013056708e-09, +0.000000000e+00, +0.000000000e+00 - 7.050000000e-01, +6.221780936e-09, +8.111699795e-09, +0.000000000e+00, +0.000000000e+00 - 7.100000000e-01, +4.723812851e-09, +6.321996402e-09, +0.000000000e+00, +0.000000000e+00 - 7.150000000e-01, +3.146831608e-09, +4.279701923e-09, +0.000000000e+00, +0.000000000e+00 - 7.200000000e-01, +1.869303073e-09, +2.546990836e-09, +0.000000000e+00, +0.000000000e+00 - 7.250000000e-01, +1.045271535e-09, +1.375317564e-09, +0.000000000e+00, +0.000000000e+00 - 7.300000000e-01, +6.242024841e-10, +7.350724499e-10, +0.000000000e+00, +0.000000000e+00 - 7.350000000e-01, +4.608359833e-10, +4.584828093e-10, +0.000000000e+00, +0.000000000e+00 - 7.400000000e-01, +4.147564926e-10, +3.699503491e-10, +0.000000000e+00, +0.000000000e+00 - 7.450000000e-01, +3.976204891e-10, +3.507775115e-10, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-01, +3.734389243e-10, +3.444913516e-10, +0.000000000e+00, +0.000000000e+00 - 7.550000000e-01, +3.378112795e-10, +3.344735873e-10, +0.000000000e+00, +0.000000000e+00 - 7.600000000e-01, +2.974002065e-10, +3.203296639e-10, +0.000000000e+00, +0.000000000e+00 - 7.650000000e-01, +2.584031728e-10, +3.041760017e-10, +0.000000000e+00, +0.000000000e+00 - 7.700000000e-01, +2.233682299e-10, +2.865084203e-10, +0.000000000e+00, +0.000000000e+00 - 7.750000000e-01, +1.922530748e-10, +2.667946148e-10, +0.000000000e+00, +0.000000000e+00 - 7.800000000e-01, +1.644924158e-10, +2.450913440e-10, +0.000000000e+00, +0.000000000e+00 - 7.850000000e-01, +1.400042541e-10, +2.226584149e-10, +0.000000000e+00, +0.000000000e+00 - 7.900000000e-01, +1.191861217e-10, +2.014692103e-10, +0.000000000e+00, +0.000000000e+00 - 7.950000000e-01, +1.028306559e-10, +1.836424872e-10, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-01, +9.151822050e-11, +1.706787347e-10, +0.000000000e+00, +0.000000000e+00 - 8.050000000e-01, +8.515004388e-11, +1.629753601e-10, +0.000000000e+00, +0.000000000e+00 - 8.100000000e-01, +8.304806463e-11, +1.599135097e-10, +0.000000000e+00, +0.000000000e+00 - 8.150000000e-01, +8.401201009e-11, +1.601016306e-10, +0.000000000e+00, +0.000000000e+00 - 8.200000000e-01, +8.663906551e-11, +1.618813608e-10, +0.000000000e+00, +0.000000000e+00 - 8.250000000e-01, +8.974905056e-11, +1.638472006e-10, +0.000000000e+00, +0.000000000e+00 - 8.300000000e-01, +9.262071538e-11, +1.652237190e-10, +0.000000000e+00, +0.000000000e+00 - 8.350000000e-01, +9.507262812e-11, +1.659118601e-10, +0.000000000e+00, +0.000000000e+00 - 8.400000000e-01, +9.733511897e-11, +1.662931348e-10, +0.000000000e+00, +0.000000000e+00 - 8.450000000e-01, +9.972601337e-11, +1.669365455e-10, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-01, +1.024254718e-10, +1.681727216e-10, +0.000000000e+00, +0.000000000e+00 - 8.550000000e-01, +1.053586680e-10, +1.699228102e-10, +0.000000000e+00, +0.000000000e+00 - 8.600000000e-01, +1.081324998e-10, +1.718158279e-10, +0.000000000e+00, +0.000000000e+00 - 8.650000000e-01, +1.102712462e-10, +1.732815923e-10, +0.000000000e+00, +0.000000000e+00 - 8.700000000e-01, +1.114070674e-10, +1.737735667e-10, +0.000000000e+00, +0.000000000e+00 - 8.750000000e-01, +1.113598806e-10, +1.730987412e-10, +0.000000000e+00, +0.000000000e+00 - 8.800000000e-01, +1.102385745e-10, +1.713341260e-10, +0.000000000e+00, +0.000000000e+00 - 8.850000000e-01, +1.083815282e-10, +1.687611818e-10, +0.000000000e+00, +0.000000000e+00 - 8.900000000e-01, +1.061833532e-10, +1.658612481e-10, +0.000000000e+00, +0.000000000e+00 - 8.950000000e-01, +1.040141398e-10, +1.630193689e-10, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-01, +1.021685320e-10, +1.605157165e-10, +0.000000000e+00, +0.000000000e+00 - 9.050000000e-01, +1.007733357e-10, +1.585370111e-10, +0.000000000e+00, +0.000000000e+00 - 9.100000000e-01, +9.985508173e-11, +1.570662303e-10, +0.000000000e+00, +0.000000000e+00 - 9.150000000e-01, +9.937096642e-11, +1.560560474e-10, +0.000000000e+00, +0.000000000e+00 - 9.200000000e-01, +9.921011024e-11, +1.554391335e-10, +0.000000000e+00, +0.000000000e+00 - 9.250000000e-01, +9.928999095e-11, +1.550615057e-10, +0.000000000e+00, +0.000000000e+00 - 9.300000000e-01, +9.950758583e-11, +1.548476563e-10, +0.000000000e+00, +0.000000000e+00 - 9.350000000e-01, +9.976706655e-11, +1.547514164e-10, +0.000000000e+00, +0.000000000e+00 - 9.400000000e-01, +1.000464778e-10, +1.546724997e-10, +0.000000000e+00, +0.000000000e+00 - 9.450000000e-01, +1.002876173e-10, +1.545926001e-10, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-01, +1.004568286e-10, +1.545267974e-10, +0.000000000e+00, +0.000000000e+00 - 9.550000000e-01, +1.005850557e-10, +1.544379512e-10, +0.000000000e+00, +0.000000000e+00 - 9.600000000e-01, +1.006490064e-10, +1.543361629e-10, +0.000000000e+00, +0.000000000e+00 - 9.650000000e-01, +1.006492846e-10, +1.542604229e-10, +0.000000000e+00, +0.000000000e+00 - 9.700000000e-01, +1.006211143e-10, +1.542031409e-10, +0.000000000e+00, +0.000000000e+00 - 9.750000000e-01, +1.005533510e-10, +1.541675346e-10, +0.000000000e+00, +0.000000000e+00 - 9.800000000e-01, +1.004531208e-10, +1.541765804e-10, +0.000000000e+00, +0.000000000e+00 - 9.850000000e-01, +1.003344785e-10, +1.542292179e-10, +0.000000000e+00, +0.000000000e+00 - 9.900000000e-01, +1.001973924e-10, +1.543149262e-10, +0.000000000e+00, +0.000000000e+00 - 9.950000000e-01, +1.000494982e-10, +1.544297511e-10, +0.000000000e+00, +0.000000000e+00 - 1.000000000e+00, +9.988860265e-11, +1.545764220e-10, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-03, +2.483779150e-13, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-02, +2.276378059e-12, +9.119064129e-13, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-02, +6.974949774e-12, +4.806875022e-12, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-02, +1.068852323e-11, +1.015560494e-11, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-02, +1.063816272e-11, +1.286120284e-11, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-02, +4.202730563e-11, +1.585962327e-11, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-02, +3.050624355e-10, +1.044439694e-10, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-02, +1.439976958e-09, +6.390916781e-10, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-02, +4.931171162e-09, +2.631890657e-09, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-02, +1.336749762e-08, +8.188415762e-09, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-02, +2.985127508e-08, +2.053688303e-08, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-02, +5.562062711e-08, +4.271189283e-08, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-02, +8.601393272e-08, +7.412015870e-08, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-02, +1.083337530e-07, +1.060294376e-07, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-02, +1.114096581e-07, +1.226421733e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-02, +1.224159817e-07, +1.212873002e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-02, +2.812645825e-07, +1.684965406e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-02, +9.352103649e-07, +4.950939825e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-02, +2.681510288e-06, +1.589370094e-06, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-01, +6.231637746e-06, +4.183230998e-06, +0.000000000e+00, +0.000000000e+00 + 1.050000000e-01, +1.198909448e-05, +8.986281390e-06, +0.000000000e+00, +0.000000000e+00 + 1.100000000e-01, +1.941101090e-05, +1.610368517e-05, +0.000000000e+00, +0.000000000e+00 + 1.150000000e-01, +2.658602817e-05, +2.435724323e-05, +0.000000000e+00, +0.000000000e+00 + 1.200000000e-01, +3.084006910e-05, +3.116387901e-05, +0.000000000e+00, +0.000000000e+00 + 1.250000000e-01, +3.116938025e-05, +3.392348778e-05, +0.000000000e+00, +0.000000000e+00 + 1.300000000e-01, +3.243953094e-05, +3.352636044e-05, +0.000000000e+00, +0.000000000e+00 + 1.350000000e-01, +4.951460936e-05, +3.920802776e-05, +0.000000000e+00, +0.000000000e+00 + 1.400000000e-01, +1.076142984e-04, +7.185267677e-05, +0.000000000e+00, +0.000000000e+00 + 1.450000000e-01, +2.349993729e-04, +1.613364788e-04, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-01, +4.472801363e-04, +3.346602039e-04, +0.000000000e+00, +0.000000000e+00 + 1.550000000e-01, +7.291799861e-04, +5.967731375e-04, +0.000000000e+00, +0.000000000e+00 + 1.600000000e-01, +1.026236746e-03, +9.136704006e-04, +0.000000000e+00, +0.000000000e+00 + 1.650000000e-01, +1.259875309e-03, +1.212651427e-03, +0.000000000e+00, +0.000000000e+00 + 1.700000000e-01, +1.369839073e-03, +1.411237978e-03, +0.000000000e+00, +0.000000000e+00 + 1.750000000e-01, +1.369485226e-03, +1.471282784e-03, +0.000000000e+00, +0.000000000e+00 + 1.800000000e-01, +1.381796571e-03, +1.453733702e-03, +0.000000000e+00, +0.000000000e+00 + 1.850000000e-01, +1.621678186e-03, +1.536019523e-03, +0.000000000e+00, +0.000000000e+00 + 1.900000000e-01, +2.312297688e-03, +1.962540617e-03, +0.000000000e+00, +0.000000000e+00 + 1.950000000e-01, +3.563511953e-03, +2.932707231e-03, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-01, +5.275801516e-03, +4.475078792e-03, +0.000000000e+00, +0.000000000e+00 + 2.050000000e-01, +7.136188815e-03, +6.381512714e-03, +0.000000000e+00, +0.000000000e+00 + 2.100000000e-01, +8.731595837e-03, +8.257650856e-03, +0.000000000e+00, +0.000000000e+00 + 2.150000000e-01, +9.737443481e-03, +9.686161316e-03, +0.000000000e+00, +0.000000000e+00 + 2.200000000e-01, +1.008554876e-02, +1.042854773e-02, +0.000000000e+00, +0.000000000e+00 + 2.250000000e-01, +1.001406588e-02, +1.055597781e-02, +0.000000000e+00, +0.000000000e+00 + 2.300000000e-01, +9.961472465e-03, +1.042846258e-02, +0.000000000e+00, +0.000000000e+00 + 2.350000000e-01, +1.035426228e-02, +1.052362443e-02, +0.000000000e+00, +0.000000000e+00 + 2.400000000e-01, +1.140025893e-02, +1.120294420e-02, +0.000000000e+00, +0.000000000e+00 + 2.450000000e-01, +1.299651326e-02, +1.254020510e-02, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-01, +1.479431046e-02, +1.430014781e-02, +0.000000000e+00, +0.000000000e+00 + 2.550000000e-01, +1.637602527e-02, +1.606877322e-02, +0.000000000e+00, +0.000000000e+00 + 2.600000000e-01, +1.744307985e-02, +1.745480055e-02, +0.000000000e+00, +0.000000000e+00 + 2.650000000e-01, +1.792074346e-02, +1.825278184e-02, +0.000000000e+00, +0.000000000e+00 + 2.700000000e-01, +1.794283349e-02, +1.849365527e-02, +0.000000000e+00, +0.000000000e+00 + 2.750000000e-01, +1.774733262e-02, +1.837903169e-02, +0.000000000e+00, +0.000000000e+00 + 2.800000000e-01, +1.755237877e-02, +1.815541883e-02, +0.000000000e+00, +0.000000000e+00 + 2.850000000e-01, +1.747556071e-02, +1.800224968e-02, +0.000000000e+00, +0.000000000e+00 + 2.900000000e-01, +1.752173044e-02, +1.798229239e-02, +0.000000000e+00, +0.000000000e+00 + 2.950000000e-01, +1.762394081e-02, +1.805898271e-02, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-01, +1.770122125e-02, +1.815127056e-02, +0.000000000e+00, +0.000000000e+00 + 3.050000000e-01, +1.770089823e-02, +1.818795556e-02, +0.000000000e+00, +0.000000000e+00 + 3.100000000e-01, +1.761188585e-02, +1.813681294e-02, +0.000000000e+00, +0.000000000e+00 + 3.150000000e-01, +1.745399156e-02, +1.800469094e-02, +0.000000000e+00, +0.000000000e+00 + 3.200000000e-01, +1.725731796e-02, +1.781965131e-02, +0.000000000e+00, +0.000000000e+00 + 3.250000000e-01, +1.704460148e-02, +1.760993058e-02, +0.000000000e+00, +0.000000000e+00 + 3.300000000e-01, +1.682291440e-02, +1.738994133e-02, +0.000000000e+00, +0.000000000e+00 + 3.350000000e-01, +1.658511017e-02, +1.715679634e-02, +0.000000000e+00, +0.000000000e+00 + 3.400000000e-01, +1.631818885e-02, +1.689617155e-02, +0.000000000e+00, +0.000000000e+00 + 3.450000000e-01, +1.601466527e-02, +1.659422901e-02, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-01, +1.568230094e-02, +1.625103907e-02, +0.000000000e+00, +0.000000000e+00 + 3.550000000e-01, +1.534683473e-02, +1.588931307e-02, +0.000000000e+00, +0.000000000e+00 + 3.600000000e-01, +1.504314380e-02, +1.555145386e-02, +0.000000000e+00, +0.000000000e+00 + 3.650000000e-01, +1.479452662e-02, +1.528067086e-02, +0.000000000e+00, +0.000000000e+00 + 3.700000000e-01, +1.458743481e-02, +1.508980172e-02, +0.000000000e+00, +0.000000000e+00 + 3.750000000e-01, +1.435624781e-02, +1.493215397e-02, +0.000000000e+00, +0.000000000e+00 + 3.800000000e-01, +1.399345809e-02, +1.469521591e-02, +0.000000000e+00, +0.000000000e+00 + 3.850000000e-01, +1.339069910e-02, +1.423286337e-02, +0.000000000e+00, +0.000000000e+00 + 3.900000000e-01, +1.249765601e-02, +1.343263643e-02, +0.000000000e+00, +0.000000000e+00 + 3.950000000e-01, +1.136895888e-02, +1.228967949e-02, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-01, +1.016652921e-02, +1.094394599e-02, +0.000000000e+00, +0.000000000e+00 + 4.050000000e-01, +9.103338645e-03, +9.646764871e-03, +0.000000000e+00, +0.000000000e+00 + 4.100000000e-01, +8.347474127e-03, +8.658020409e-03, +0.000000000e+00, +0.000000000e+00 + 4.150000000e-01, +7.933878608e-03, +8.118592870e-03, +0.000000000e+00, +0.000000000e+00 + 4.200000000e-01, +7.735052201e-03, +7.966787017e-03, +0.000000000e+00, +0.000000000e+00 + 4.250000000e-01, +7.514232171e-03, +7.952227964e-03, +0.000000000e+00, +0.000000000e+00 + 4.300000000e-01, +7.038763284e-03, +7.749634893e-03, +0.000000000e+00, +0.000000000e+00 + 4.350000000e-01, +6.195135448e-03, +7.116933085e-03, +0.000000000e+00, +0.000000000e+00 + 4.400000000e-01, +5.044090859e-03, +6.013747822e-03, +0.000000000e+00, +0.000000000e+00 + 4.450000000e-01, +3.787601466e-03, +4.617056624e-03, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-01, +2.669008201e-03, +3.229010019e-03, +0.000000000e+00, +0.000000000e+00 + 4.550000000e-01, +1.862694615e-03, +2.131411204e-03, +0.000000000e+00, +0.000000000e+00 + 4.600000000e-01, +1.410110199e-03, +1.466132105e-03, +0.000000000e+00, +0.000000000e+00 + 4.650000000e-01, +1.227392768e-03, +1.198313690e-03, +0.000000000e+00, +0.000000000e+00 + 4.700000000e-01, +1.168487677e-03, +1.167558691e-03, +0.000000000e+00, +0.000000000e+00 + 4.750000000e-01, +1.101819587e-03, +1.185477149e-03, +0.000000000e+00, +0.000000000e+00 + 4.800000000e-01, +9.604108815e-04, +1.122068985e-03, +0.000000000e+00, +0.000000000e+00 + 4.850000000e-01, +7.483644053e-04, +9.420246730e-04, +0.000000000e+00, +0.000000000e+00 + 4.900000000e-01, +5.131445519e-04, +6.872159652e-04, +0.000000000e+00, +0.000000000e+00 + 4.950000000e-01, +3.075299032e-04, +4.298399710e-04, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-01, +1.627725294e-04, +2.280452314e-04, +0.000000000e+00, +0.000000000e+00 + 5.050000000e-01, +8.168847560e-05, +1.042560775e-04, +0.000000000e+00, +0.000000000e+00 + 5.100000000e-01, +4.743409807e-05, +4.813677782e-05, +0.000000000e+00, +0.000000000e+00 + 5.150000000e-01, +3.761161687e-05, +3.323475812e-05, +0.000000000e+00, +0.000000000e+00 + 5.200000000e-01, +3.489565379e-05, +3.389949510e-05, +0.000000000e+00, +0.000000000e+00 + 5.250000000e-01, +3.077554696e-05, +3.447306450e-05, +0.000000000e+00, +0.000000000e+00 + 5.300000000e-01, +2.384003016e-05, +2.996173483e-05, +0.000000000e+00, +0.000000000e+00 + 5.350000000e-01, +1.599901730e-05, +2.188219263e-05, +0.000000000e+00, +0.000000000e+00 + 5.400000000e-01, +9.386789789e-06, +1.355219230e-05, +0.000000000e+00, +0.000000000e+00 + 5.450000000e-01, +4.985084610e-06, +7.254826183e-06, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-01, +2.639920155e-06, +3.558432086e-06, +0.000000000e+00, +0.000000000e+00 + 5.550000000e-01, +1.657497438e-06, +1.889960987e-06, +0.000000000e+00, +0.000000000e+00 + 5.600000000e-01, +1.344855715e-06, +1.356240926e-06, +0.000000000e+00, +0.000000000e+00 + 5.650000000e-01, +1.257239190e-06, +1.262030388e-06, +0.000000000e+00, +0.000000000e+00 + 5.700000000e-01, +1.201136724e-06, +1.247864386e-06, +0.000000000e+00, +0.000000000e+00 + 5.750000000e-01, +1.134182964e-06, +1.205081812e-06, +0.000000000e+00, +0.000000000e+00 + 5.800000000e-01, +1.068513204e-06, +1.140553113e-06, +0.000000000e+00, +0.000000000e+00 + 5.850000000e-01, +1.017040986e-06, +1.082309382e-06, +0.000000000e+00, +0.000000000e+00 + 5.900000000e-01, +9.776891928e-07, +1.040950732e-06, +0.000000000e+00, +0.000000000e+00 + 5.950000000e-01, +9.372039969e-07, +1.006927030e-06, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-01, +8.803555674e-07, +9.614189276e-07, +0.000000000e+00, +0.000000000e+00 + 6.050000000e-01, +7.977625464e-07, +8.881574930e-07, +0.000000000e+00, +0.000000000e+00 + 6.100000000e-01, +6.901011525e-07, +7.813583667e-07, +0.000000000e+00, +0.000000000e+00 + 6.150000000e-01, +5.681561853e-07, +6.485241670e-07, +0.000000000e+00, +0.000000000e+00 + 6.200000000e-01, +4.489787508e-07, +5.079859269e-07, +0.000000000e+00, +0.000000000e+00 + 6.250000000e-01, +3.495583774e-07, +3.821715982e-07, +0.000000000e+00, +0.000000000e+00 + 6.300000000e-01, +2.805050374e-07, +2.891650516e-07, +0.000000000e+00, +0.000000000e+00 + 6.350000000e-01, +2.424218568e-07, +2.360478121e-07, +0.000000000e+00, +0.000000000e+00 + 6.400000000e-01, +2.265213520e-07, +2.169285073e-07, +0.000000000e+00, +0.000000000e+00 + 6.450000000e-01, +2.190339843e-07, +2.164183291e-07, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-01, +2.071794947e-07, +2.166961674e-07, +0.000000000e+00, +0.000000000e+00 + 6.550000000e-01, +1.838963747e-07, +2.047069492e-07, +0.000000000e+00, +0.000000000e+00 + 6.600000000e-01, +1.494100385e-07, +1.762797007e-07, +0.000000000e+00, +0.000000000e+00 + 6.650000000e-01, +1.094733800e-07, +1.358078381e-07, +0.000000000e+00, +0.000000000e+00 + 6.700000000e-01, +7.169698867e-08, +9.243180551e-08, +0.000000000e+00, +0.000000000e+00 + 6.750000000e-01, +4.200032240e-08, +5.513465261e-08, +0.000000000e+00, +0.000000000e+00 + 6.800000000e-01, +2.270925951e-08, +2.916608720e-08, +0.000000000e+00, +0.000000000e+00 + 6.850000000e-01, +1.268263703e-08, +1.502395357e-08, +0.000000000e+00, +0.000000000e+00 + 6.900000000e-01, +8.804829176e-09, +9.707356747e-09, +0.000000000e+00, +0.000000000e+00 + 6.950000000e-01, +7.760056194e-09, +8.983236482e-09, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-01, +7.230838112e-09, +9.348005231e-09, +0.000000000e+00, +0.000000000e+00 + 7.050000000e-01, +6.221780935e-09, +8.944682677e-09, +0.000000000e+00, +0.000000000e+00 + 7.100000000e-01, +4.723812851e-09, +7.441704525e-09, +0.000000000e+00, +0.000000000e+00 + 7.150000000e-01, +3.146831608e-09, +5.357395034e-09, +0.000000000e+00, +0.000000000e+00 + 7.200000000e-01, +1.869303073e-09, +3.363198455e-09, +0.000000000e+00, +0.000000000e+00 + 7.250000000e-01, +1.045271536e-09, +1.876862371e-09, +0.000000000e+00, +0.000000000e+00 + 7.300000000e-01, +6.242024853e-10, +9.842745674e-10, +0.000000000e+00, +0.000000000e+00 + 7.350000000e-01, +4.608359846e-10, +5.555290367e-10, +0.000000000e+00, +0.000000000e+00 + 7.400000000e-01, +4.147564940e-10, +3.982251068e-10, +0.000000000e+00, +0.000000000e+00 + 7.450000000e-01, +3.976204905e-10, +3.584526038e-10, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-01, +3.734389256e-10, +3.507474603e-10, +0.000000000e+00, +0.000000000e+00 + 7.550000000e-01, +3.378112806e-10, +3.430831716e-10, +0.000000000e+00, +0.000000000e+00 + 7.600000000e-01, +2.974002076e-10, +3.303664405e-10, +0.000000000e+00, +0.000000000e+00 + 7.650000000e-01, +2.584031738e-10, +3.148142980e-10, +0.000000000e+00, +0.000000000e+00 + 7.700000000e-01, +2.233682309e-10, +2.978240381e-10, +0.000000000e+00, +0.000000000e+00 + 7.750000000e-01, +1.922530756e-10, +2.790766969e-10, +0.000000000e+00, +0.000000000e+00 + 7.800000000e-01, +1.644924166e-10, +2.580263234e-10, +0.000000000e+00, +0.000000000e+00 + 7.850000000e-01, +1.400042548e-10, +2.354237840e-10, +0.000000000e+00, +0.000000000e+00 + 7.900000000e-01, +1.191861224e-10, +2.130164475e-10, +0.000000000e+00, +0.000000000e+00 + 7.950000000e-01, +1.028306565e-10, +1.929284387e-10, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-01, +9.151822114e-11, +1.771850189e-10, +0.000000000e+00, +0.000000000e+00 + 8.050000000e-01, +8.515004451e-11, +1.667356116e-10, +0.000000000e+00, +0.000000000e+00 + 8.100000000e-01, +8.304806525e-11, +1.614283289e-10, +0.000000000e+00, +0.000000000e+00 + 8.150000000e-01, +8.401201072e-11, +1.602005621e-10, +0.000000000e+00, +0.000000000e+00 + 8.200000000e-01, +8.663906617e-11, +1.614110777e-10, +0.000000000e+00, +0.000000000e+00 + 8.250000000e-01, +8.974905124e-11, +1.634393693e-10, +0.000000000e+00, +0.000000000e+00 + 8.300000000e-01, +9.262071611e-11, +1.651322576e-10, +0.000000000e+00, +0.000000000e+00 + 8.350000000e-01, +9.507262889e-11, +1.660938350e-10, +0.000000000e+00, +0.000000000e+00 + 8.400000000e-01, +9.733511977e-11, +1.664881255e-10, +0.000000000e+00, +0.000000000e+00 + 8.450000000e-01, +9.972601421e-11, +1.668622628e-10, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-01, +1.024254727e-10, +1.677560274e-10, +0.000000000e+00, +0.000000000e+00 + 8.550000000e-01, +1.053586690e-10, +1.692636437e-10, +0.000000000e+00, +0.000000000e+00 + 8.600000000e-01, +1.081325007e-10, +1.711285505e-10, +0.000000000e+00, +0.000000000e+00 + 8.650000000e-01, +1.102712471e-10, +1.729015780e-10, +0.000000000e+00, +0.000000000e+00 + 8.700000000e-01, +1.114070683e-10, +1.739176334e-10, +0.000000000e+00, +0.000000000e+00 + 8.750000000e-01, +1.113598815e-10, +1.737720167e-10, +0.000000000e+00, +0.000000000e+00 + 8.800000000e-01, +1.102385755e-10, +1.724999570e-10, +0.000000000e+00, +0.000000000e+00 + 8.850000000e-01, +1.083815292e-10, +1.702110992e-10, +0.000000000e+00, +0.000000000e+00 + 8.900000000e-01, +1.061833542e-10, +1.673465205e-10, +0.000000000e+00, +0.000000000e+00 + 8.950000000e-01, +1.040141408e-10, +1.644121015e-10, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-01, +1.021685329e-10, +1.616625569e-10, +0.000000000e+00, +0.000000000e+00 + 9.050000000e-01, +1.007733366e-10, +1.593997815e-10, +0.000000000e+00, +0.000000000e+00 + 9.100000000e-01, +9.985508263e-11, +1.576976918e-10, +0.000000000e+00, +0.000000000e+00 + 9.150000000e-01, +9.937096732e-11, +1.564507218e-10, +0.000000000e+00, +0.000000000e+00 + 9.200000000e-01, +9.921011114e-11, +1.556703178e-10, +0.000000000e+00, +0.000000000e+00 + 9.250000000e-01, +9.928999185e-11, +1.552124838e-10, +0.000000000e+00, +0.000000000e+00 + 9.300000000e-01, +9.950758673e-11, +1.549135753e-10, +0.000000000e+00, +0.000000000e+00 + 9.350000000e-01, +9.976706745e-11, +1.547844917e-10, +0.000000000e+00, +0.000000000e+00 + 9.400000000e-01, +1.000464787e-10, +1.547209554e-10, +0.000000000e+00, +0.000000000e+00 + 9.450000000e-01, +1.002876182e-10, +1.546261792e-10, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-01, +1.004568295e-10, +1.545608081e-10, +0.000000000e+00, +0.000000000e+00 + 9.550000000e-01, +1.005850567e-10, +1.544952989e-10, +0.000000000e+00, +0.000000000e+00 + 9.600000000e-01, +1.006490073e-10, +1.543828698e-10, +0.000000000e+00, +0.000000000e+00 + 9.650000000e-01, +1.006492855e-10, +1.542909997e-10, +0.000000000e+00, +0.000000000e+00 + 9.700000000e-01, +1.006211152e-10, +1.542312749e-10, +0.000000000e+00, +0.000000000e+00 + 9.750000000e-01, +1.005533519e-10, +1.541768417e-10, +0.000000000e+00, +0.000000000e+00 + 9.800000000e-01, +1.004531217e-10, +1.541603719e-10, +0.000000000e+00, +0.000000000e+00 + 9.850000000e-01, +1.003344795e-10, +1.541940345e-10, +0.000000000e+00, +0.000000000e+00 + 9.900000000e-01, +1.001973933e-10, +1.542656449e-10, +0.000000000e+00, +0.000000000e+00 + 9.950000000e-01, +1.000494991e-10, +1.543659962e-10, +0.000000000e+00, +0.000000000e+00 + 1.000000000e+00, +9.988860355e-11, +1.544951341e-10, +0.000000000e+00, +0.000000000e+00 diff --git a/test/examples/ref/coaxial/matched/error-indicators.csv b/test/examples/ref/coaxial/matched/error-indicators.csv index 7a2f512c9..9f68676e5 100644 --- a/test/examples/ref/coaxial/matched/error-indicators.csv +++ b/test/examples/ref/coaxial/matched/error-indicators.csv @@ -1,2 +1,2 @@ Norm, Minimum, Maximum, Mean - +9.653022681e-03, +2.591030325e-04, +2.997508940e-03, +5.377920408e-04 + +1.196300248e-02, +2.648160568e-04, +3.897211689e-03, +5.987420876e-04 diff --git a/test/examples/ref/coaxial/matched/port-I.csv b/test/examples/ref/coaxial/matched/port-I.csv index 536c89b3f..85fbe44af 100644 --- a/test/examples/ref/coaxial/matched/port-I.csv +++ b/test/examples/ref/coaxial/matched/port-I.csv @@ -1,202 +1,202 @@ t (ns), I_inc[1] (A), I[1] (A), I[2] (A) 0.000000000e+00, -5.666088695e-06, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, -8.409123651e-06, -2.279465662e-06, -7.839719442e-23 - 1.000000000e-02, -1.105147275e-05, -6.104854862e-06, +1.170088451e-22 - 1.500000000e-02, -1.228163970e-05, -7.036201019e-06, -2.707694032e-23 - 2.000000000e-02, -9.778049726e-06, -4.567147137e-06, +1.093697887e-23 - 2.500000000e-02, -6.103350322e-20, +4.433594715e-06, -1.011814796e-21 - 3.000000000e-02, +2.176144987e-05, +2.603404286e-05, +4.424584279e-21 - 3.500000000e-02, +6.083135968e-05, +6.501699663e-05, -7.691698220e-22 - 4.000000000e-02, +1.218223334e-04, +1.262776913e-04, -1.629885848e-20 - 4.500000000e-02, +2.062970799e-04, +2.118296913e-04, -1.876864239e-20 - 5.000000000e-02, +3.093579607e-04, +3.173618809e-04, -4.552537484e-20 - 5.500000000e-02, +4.154313032e-04, +4.272823161e-04, -6.347097858e-20 - 6.000000000e-02, +4.940139224e-04, +5.111171470e-04, -4.730523003e-20 - 6.500000000e-02, +4.967592192e-04, +5.206886081e-04, -5.525655577e-20 - 7.000000000e-02, +3.578593563e-04, +3.886785355e-04, -9.362705250e-20 - 7.500000000e-02, -5.771941699e-19, +3.582147265e-05, -7.427286899e-20 - 8.000000000e-02, -6.520622610e-04, -6.153389310e-04, -9.790627284e-20 - 8.500000000e-02, -1.649298690e-03, -1.619463514e-03, +2.027901756e-18 - 9.000000000e-02, -2.988610073e-03, -2.976954811e-03, +9.362346005e-18 - 9.500000000e-02, -4.579372529e-03, -4.599372030e-03, +6.903841697e-17 - 1.000000000e-01, -6.213620742e-03, -6.279384829e-03, +4.580730489e-16 - 1.050000000e-01, -7.550108895e-03, -7.673257929e-03, +2.739333014e-15 - 1.100000000e-01, -8.123884454e-03, -8.308949454e-03, +1.493028072e-14 - 1.150000000e-01, -7.391643913e-03, -7.631639645e-03, +7.464979292e-14 - 1.200000000e-01, -4.818124626e-03, -5.091253532e-03, +3.442332544e-13 - 1.250000000e-01, +4.687776326e-18, -2.676010971e-04, +1.470590246e-12 - 1.300000000e-01, +7.187797314e-03, +6.979916447e-03, +5.841622865e-12 - 1.350000000e-01, +1.645040606e-02, +1.636584859e-02, +2.163951405e-11 - 1.400000000e-01, +2.697224625e-02, +2.707472498e-02, +7.492256935e-11 - 1.450000000e-01, +3.739593417e-02, +3.773684453e-02, +2.428410296e-10 - 1.500000000e-01, +4.591279224e-02, +4.651714030e-02, +7.375232547e-10 - 1.550000000e-01, +5.047923110e-02, +5.133402751e-02, +2.099169990e-09 - 1.600000000e-01, +4.914663699e-02, +5.019442015e-02, +5.595281428e-09 - 1.650000000e-01, +4.046146992e-02, +4.160106921e-02, +1.394044470e-08 - 1.700000000e-01, +2.386432750e-02, +2.496072306e-02, +3.234971896e-08 - 1.750000000e-01, -4.859694655e-17, +9.027416975e-04, +6.949217072e-08 - 1.800000000e-01, -2.914795543e-02, -2.858089172e-02, +1.367183148e-07 - 1.850000000e-01, -6.036142013e-02, -6.023860350e-02, +2.414876124e-07 - 1.900000000e-01, -8.955101123e-02, -8.992623717e-02, +3.669644295e-07 - 1.950000000e-01, -1.123435949e-01, -1.132034053e-01, +4.251097635e-07 - 2.000000000e-01, -1.248039088e-01, -1.260674341e-01, +1.683790015e-07 - 2.050000000e-01, -1.241588739e-01, -1.256901005e-01, -9.484948802e-07 - 2.100000000e-01, -1.093778521e-01, -1.110084115e-01, -3.942300074e-06 - 2.150000000e-01, -8.147939460e-02, -8.303731511e-02, -1.045263549e-05 - 2.200000000e-01, -4.348363979e-02, -4.482170606e-02, -2.275556912e-05 - 2.250000000e-01, +2.632536371e-16, -1.017952044e-03, -4.348024829e-05 - 2.300000000e-01, +4.348363979e-02, +4.282753850e-02, -7.487578040e-05 - 2.350000000e-01, +8.147939460e-02, +8.116905378e-02, -1.175591281e-04 - 2.400000000e-01, +1.093778521e-01, +1.093513159e-01, -1.688169295e-04 - 2.450000000e-01, +1.241588739e-01, +1.243278841e-01, -2.206716002e-04 - 2.500000000e-01, +1.248039088e-01, +1.250757389e-01, -2.580032167e-04 - 2.550000000e-01, +1.123435949e-01, +1.126400748e-01, -2.570919151e-04 - 2.600000000e-01, +8.955101123e-02, +8.982093901e-02, -1.851633285e-04 - 2.650000000e-01, +6.036142013e-02, +6.058437068e-02, -1.964802777e-06 - 2.700000000e-01, +2.914795543e-02, +2.933003651e-02, +3.351637337e-04 - 2.750000000e-01, +4.859694655e-17, +1.640427998e-04, +8.613977632e-04 - 2.800000000e-01, -2.386432750e-02, -2.369071496e-02, +1.589515815e-03 - 2.850000000e-01, -4.046146992e-02, -4.025665607e-02, +2.491580354e-03 - 2.900000000e-01, -4.914663699e-02, -4.890201756e-02, +3.480456981e-03 - 2.950000000e-01, -5.047923110e-02, -5.020114773e-02, +4.395397497e-03 - 3.000000000e-01, -4.591279224e-02, -4.562002034e-02, +4.996810327e-03 - 3.050000000e-01, -3.739593417e-02, -3.711414519e-02, +4.976662349e-03 - 3.100000000e-01, -2.697224625e-02, -2.672715670e-02, +3.991203041e-03 - 3.150000000e-01, -1.645040606e-02, -1.626186385e-02, +1.719372564e-03 - 3.200000000e-01, -7.187797314e-03, -7.066117973e-03, -2.056655061e-03 - 3.250000000e-01, -3.446700285e-16, +5.515284079e-05, -7.359718567e-03 - 3.300000000e-01, +4.818124626e-03, +4.816373419e-03, -1.393072938e-02 - 3.350000000e-01, +7.391643913e-03, +7.348724034e-03, -2.116683910e-02 - 3.400000000e-01, +8.123884454e-03, +8.057868855e-03, -2.810995880e-02 - 3.450000000e-01, +7.550108895e-03, +7.478016722e-03, -3.350900948e-02 - 3.500000000e-01, +6.213620742e-03, +6.148880085e-03, -3.596472910e-02 - 3.550000000e-01, +4.579372529e-03, +4.530523902e-03, -3.414856600e-02 - 3.600000000e-01, +2.988610073e-03, +2.959359024e-03, -2.707212456e-02 - 3.650000000e-01, +1.649298690e-03, +1.639328932e-03, -1.436348176e-02 - 3.700000000e-01, +6.520622610e-04, +6.582728629e-04, +3.510075664e-03 - 3.750000000e-01, +5.639207957e-17, +1.796645354e-05, +2.513348171e-02 - 3.800000000e-01, -3.578593563e-04, -3.327071839e-04, +4.819660675e-02 - 3.850000000e-01, -4.967592192e-04, -4.683632875e-04, +6.972958070e-02 - 3.900000000e-01, -4.940139224e-04, -4.652574359e-04, +8.650614931e-02 - 3.950000000e-01, -4.154313032e-04, -3.880626459e-04, +9.556165602e-02 - 4.000000000e-01, -3.093579607e-04, -2.841655685e-04, +9.473491778e-02 - 4.050000000e-01, -2.062970799e-04, -1.833980203e-04, +8.312602269e-02 - 4.100000000e-01, -1.218223334e-04, -1.009159268e-04, +6.137225831e-02 - 4.150000000e-01, -6.083135968e-05, -4.143379152e-05, +3.166750253e-02 - 4.200000000e-01, -2.176144987e-05, -3.413327503e-06, -2.502664187e-03 - 4.250000000e-01, -2.551434914e-18, +1.765295201e-05, -3.687209560e-02 - 4.300000000e-01, +9.778049726e-06, +2.695409360e-05, -6.706467438e-02 - 4.350000000e-01, +1.228163970e-05, +2.907159974e-05, -8.930220077e-02 - 4.400000000e-01, +1.105147275e-05, +2.746797228e-05, -1.010097188e-01 - 4.450000000e-01, +8.409123651e-06, +2.444125815e-05, -1.012031705e-01 - 4.500000000e-01, +5.666088695e-06, +2.136804349e-05, -9.058961021e-02 - 4.550000000e-01, +3.418894541e-06, +1.895897465e-05, -7.136646204e-02 - 4.600000000e-01, +1.826796159e-06, +1.756237934e-05, -4.677362695e-02 - 4.650000000e-01, +8.253938937e-07, +1.743332128e-05, -2.049672395e-02 - 4.700000000e-01, +2.671727168e-07, +1.876789954e-05, +3.957473555e-03 - 4.750000000e-01, +3.777032805e-20, +2.175086078e-05, +2.379025635e-02 - 4.800000000e-01, -9.828734975e-08, +2.657695713e-05, +3.725825407e-02 - 4.850000000e-01, -1.117049164e-07, +3.330104452e-05, +4.379671298e-02 - 4.900000000e-01, -9.095082526e-08, +4.170350643e-05, +4.392096744e-02 - 4.950000000e-01, -6.261923782e-08, +5.118467434e-05, +3.895956705e-02 - 5.000000000e-01, -3.817780532e-08, +6.061063807e-05, +3.069570799e-02 - 5.050000000e-01, -2.084413355e-08, +6.816903568e-05, +2.099548354e-02 - 5.100000000e-01, -1.007763869e-08, +7.142099286e-05, +1.149684149e-02 - 5.150000000e-01, -4.120031130e-09, +6.750284534e-05, +3.404389962e-03 - 5.200000000e-01, -1.206707201e-09, +5.335700038e-05, -2.596439422e-03 - 5.250000000e-01, -1.928824299e-22, +2.625146628e-05, -6.315069825e-03 - 5.300000000e-01, +3.634532244e-10, -1.552134088e-05, -7.952742048e-03 - 5.350000000e-01, +3.737607916e-10, -7.202719971e-05, -7.959639543e-03 - 5.400000000e-01, +2.753586026e-10, -1.410093202e-04, -6.888529679e-03 - 5.450000000e-01, +1.715419466e-10, -2.173742296e-04, -5.273858845e-03 - 5.500000000e-01, +9.463331804e-11, -2.931597192e-04, -3.550333615e-03 - 5.550000000e-01, +4.675063429e-11, -3.579618849e-04, -2.014773065e-03 - 5.600000000e-01, +2.045186871e-11, -3.998812035e-04, -8.252634844e-04 - 5.650000000e-01, +7.565632846e-12, -4.070350711e-04, -2.442607166e-05 - 5.700000000e-01, +2.005013126e-12, -3.694979154e-04, +4.246687144e-04 - 5.750000000e-01, +2.328620401e-25, -2.813096150e-04, +6.014263940e-04 - 5.800000000e-01, -4.944301496e-13, -1.422343696e-04, +5.974101003e-04 - 5.850000000e-01, -4.600666072e-13, +4.102954713e-05, +4.951301922e-04 - 5.900000000e-01, -3.066875683e-13, +2.546795560e-04, +3.575043451e-04 - 5.950000000e-01, -1.728774743e-13, +4.788184074e-04, +2.251682012e-04 - 6.000000000e-01, -8.629441606e-14, +6.895532949e-04, +1.186460332e-04 - 6.050000000e-01, -3.857417852e-14, +8.620838886e-04, +4.420791914e-05 - 6.100000000e-01, -1.526907493e-14, +9.742885967e-04, -7.459663553e-07 - 6.150000000e-01, -5.110878347e-15, +1.010208865e-03, -2.328504679e-05 - 6.200000000e-01, -1.225569810e-15, +9.627989535e-04, -3.093322175e-05 - 6.250000000e-01, -9.083457823e-29, +8.353546600e-04, -3.016656516e-05 - 6.300000000e-01, +2.474382771e-16, +6.413796771e-04, -2.584275785e-05 - 6.350000000e-01, +2.083306657e-16, +4.027956922e-04, -2.078981253e-05 - 6.400000000e-01, +1.256606244e-16, +1.467524989e-04, -1.643811493e-05 - 6.450000000e-01, +6.409320687e-17, -9.835475273e-05, -1.328671369e-05 - 6.500000000e-01, +2.894855159e-17, -3.070111476e-04, -1.131502933e-05 - 6.550000000e-01, +1.170877290e-17, -4.600908525e-04, -1.025317804e-05 - 6.600000000e-01, +4.193705940e-18, -5.471396387e-04, -9.706105426e-06 - 6.650000000e-01, +1.270139270e-18, -5.671313952e-04, -9.526876864e-06 - 6.700000000e-01, +2.755906037e-19, -5.276925104e-04, -9.521317211e-06 - 6.750000000e-01, +1.075875659e-32, -4.430280566e-04, -9.477545467e-06 - 6.800000000e-01, -4.555482039e-20, -3.309499348e-04, -9.477102683e-06 - 6.850000000e-01, -3.470493289e-20, -2.097697246e-04, -9.446533141e-06 - 6.900000000e-01, -1.894121233e-20, -9.564568528e-05, -9.331259232e-06 - 6.950000000e-01, -8.741603680e-21, -5.625602380e-07, -9.227514481e-06 - 7.000000000e-01, -3.572535080e-21, +6.867626495e-05, -9.073042578e-06 - 7.050000000e-01, -1.307469592e-21, +1.103054361e-04, -8.914323226e-06 - 7.100000000e-01, -4.237295397e-22, +1.267155478e-04, -8.778201838e-06 - 7.150000000e-01, -1.161215067e-22, +1.231694394e-04, -8.627829141e-06 - 7.200000000e-01, -2.279797517e-23, +1.062866531e-04, -8.576006165e-06 - 7.250000000e-01, -3.241225490e-37, +8.261317002e-05, -8.597059341e-06 - 7.300000000e-01, +3.085370426e-24, +5.765268061e-05, -8.700306293e-06 - 7.350000000e-01, +2.126839583e-24, +3.535644802e-05, -8.990756857e-06 - 7.400000000e-01, +1.050320519e-24, +1.794830440e-05, -9.423853067e-06 - 7.450000000e-01, +4.386071853e-25, +6.128138190e-06, -1.001308981e-05 - 7.500000000e-01, +1.621928417e-25, -5.286416331e-07, -1.076106793e-05 - 7.550000000e-01, +5.371026932e-26, -3.101809758e-06, -1.161713053e-05 - 7.600000000e-01, +1.575016203e-26, -2.870251878e-06, -1.252639149e-05 - 7.650000000e-01, +3.905525687e-27, -1.086961146e-06, -1.335220364e-05 - 7.700000000e-01, +6.937989919e-28, +1.230051725e-06, -1.405215379e-05 - 7.750000000e-01, -6.993531703e-42, +3.475909312e-06, -1.449622845e-05 - 7.800000000e-01, -7.687511957e-29, +5.301100405e-06, -1.450015792e-05 - 7.850000000e-01, -4.794946636e-29, +6.537642734e-06, -1.409140181e-05 - 7.900000000e-01, -2.142601701e-29, +7.270243667e-06, -1.317687982e-05 - 7.950000000e-01, -8.095914059e-30, +7.629935703e-06, -1.169832613e-05 - 8.000000000e-01, -2.708896312e-30, +7.703087171e-06, -9.815300571e-06 - 8.050000000e-01, -8.116869824e-31, +7.638070444e-06, -7.591879578e-06 - 8.100000000e-01, -2.153708036e-31, +7.525634749e-06, -5.168555502e-06 - 8.150000000e-01, -4.832277353e-32, +7.392393462e-06, -2.776790037e-06 - 8.200000000e-01, -7.767416097e-33, +7.298856628e-06, -5.955027059e-07 - 8.250000000e-01, +2.050715652e-46, +7.221644401e-06, +1.184811727e-06 - 8.300000000e-01, +7.046440907e-34, +7.151386568e-06, +2.448602212e-06 - 8.350000000e-01, +3.976842028e-34, +7.145569631e-06, +3.084239890e-06 - 8.400000000e-01, +1.607927855e-34, +7.120905564e-06, +3.069195571e-06 - 8.450000000e-01, +5.497453374e-35, +7.072669373e-06, +2.513282400e-06 - 8.500000000e-01, +1.664403419e-35, +7.098255334e-06, +1.468614583e-06 - 8.550000000e-01, +4.512584527e-36, +7.083647648e-06, +1.049390248e-07 - 8.600000000e-01, +1.083413267e-36, +7.031003144e-06, -1.370162520e-06 - 8.650000000e-01, +2.199529168e-37, +7.059239847e-06, -2.843337345e-06 - 8.700000000e-01, +3.199079223e-38, +7.042162596e-06, -4.135744192e-06 - 8.750000000e-01, -1.264445967e-51, +6.994434700e-06, -5.160739942e-06 - 8.800000000e-01, -2.376070608e-39, +7.018235462e-06, -5.879989487e-06 - 8.850000000e-01, -1.213384435e-39, +6.992994840e-06, -6.251503897e-06 - 8.900000000e-01, -4.439123120e-40, +6.963005224e-06, -6.361764416e-06 - 8.950000000e-01, -1.373291519e-40, +6.981556219e-06, -6.243466006e-06 - 9.000000000e-01, -3.762099992e-41, +6.943067937e-06, -5.955312166e-06 - 9.050000000e-01, -9.229276070e-42, +6.934956605e-06, -5.624901710e-06 - 9.100000000e-01, -2.004965889e-42, +6.950190011e-06, -5.274163619e-06 - 9.150000000e-01, -3.683096656e-43, +6.898186604e-06, -4.954940491e-06 - 9.200000000e-01, -4.847066048e-44, +6.906297954e-06, -4.714449048e-06 - 9.250000000e-01, +2.695492675e-57, +6.919489159e-06, -4.547087289e-06 - 9.300000000e-01, +2.947503899e-45, +6.859734325e-06, -4.455716460e-06 - 9.350000000e-01, +1.361958949e-45, +6.871729450e-06, -4.407401579e-06 - 9.400000000e-01, +4.508513145e-46, +6.880083711e-06, -4.416745311e-06 - 9.450000000e-01, +1.262029305e-46, +6.821626996e-06, -4.454645761e-06 - 9.500000000e-01, +3.128294188e-47, +6.824531932e-06, -4.469286482e-06 - 9.550000000e-01, +6.944091618e-48, +6.822281822e-06, -4.516015523e-06 - 9.600000000e-01, +1.364977037e-48, +6.774092686e-06, -4.554107840e-06 - 9.650000000e-01, +2.268830361e-49, +6.761097990e-06, -4.553323344e-06 - 9.700000000e-01, +2.701707935e-50, +6.745674152e-06, -4.575690441e-06 - 9.750000000e-01, -1.705334349e-63, +6.715192958e-06, -4.584090223e-06 - 9.800000000e-01, -1.345101176e-51, +6.690264706e-06, -4.574936988e-06 - 9.850000000e-01, -5.623868195e-52, +6.668524663e-06, -4.575957586e-06 - 9.900000000e-01, -1.684515487e-52, +6.660450423e-06, -4.572317693e-06 - 9.950000000e-01, -4.266597350e-53, +6.636345082e-06, -4.572399297e-06 - 1.000000000e+00, -9.569524512e-54, +6.623360227e-06, -4.562702280e-06 + 5.000000000e-03, -8.409123651e-06, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-02, -1.105147275e-05, -4.558931380e-06, -1.912755783e-22 + 1.500000000e-02, -1.228163970e-05, -7.650778372e-06, +8.147646178e-22 + 2.000000000e-02, -9.778049726e-06, -6.421623690e-06, -5.938260077e-22 + 2.500000000e-02, -6.103350322e-20, -2.712670640e-06, -2.814162384e-21 + 3.000000000e-02, +2.176144987e-05, +1.157986030e-05, +2.929578005e-22 + 3.500000000e-02, +6.083135968e-05, +4.048822554e-05, +1.083444898e-21 + 4.000000000e-02, +1.218223334e-04, +8.954576786e-05, -1.490242717e-22 + 4.500000000e-02, +2.062970799e-04, +1.630096150e-04, -1.029357737e-20 + 5.000000000e-02, +3.093579607e-04, +2.606497678e-04, -2.266646440e-20 + 5.500000000e-02, +4.154313032e-04, +3.740739943e-04, -3.957902006e-20 + 6.000000000e-02, +4.940139224e-04, +4.804906383e-04, -6.132247541e-20 + 6.500000000e-02, +4.967592192e-04, +5.417436564e-04, -2.576063847e-20 + 7.000000000e-02, +3.578593563e-04, +4.996335610e-04, -1.220416441e-19 + 7.500000000e-02, -5.771941699e-19, +2.777235134e-04, -7.263449800e-20 + 8.000000000e-02, -6.520622610e-04, -2.060803646e-04, +2.827739902e-19 + 8.500000000e-02, -1.649298690e-03, -1.024597503e-03, +1.615195813e-19 + 9.000000000e-02, -2.988610073e-03, -2.214329530e-03, +2.287923516e-18 + 9.500000000e-02, -4.579372529e-03, -3.739580096e-03, +1.684154137e-17 + 1.000000000e-01, -6.213620742e-03, -5.459163967e-03, +1.217046143e-16 + 1.050000000e-01, -7.550108895e-03, -7.099605696e-03, +7.948191548e-16 + 1.100000000e-01, -8.123884454e-03, -8.246910169e-03, +4.683948431e-15 + 1.150000000e-01, -7.391643913e-03, -8.370988748e-03, +2.517629299e-14 + 1.200000000e-01, -4.818124626e-03, -6.892290557e-03, +1.241223817e-13 + 1.250000000e-01, +4.687776326e-18, -3.290217576e-03, +5.643425348e-13 + 1.300000000e-01, +7.187797314e-03, +2.755025178e-03, +2.376835698e-12 + 1.350000000e-01, +1.645040606e-02, +1.120480778e-02, +9.306407162e-12 + 1.400000000e-01, +2.697224625e-02, +2.152688943e-02, +3.397261790e-11 + 1.450000000e-01, +3.739593417e-02, +3.262256056e-02, +1.158725183e-10 + 1.500000000e-01, +4.591279224e-02, +4.285112854e-02, +3.698095400e-10 + 1.550000000e-01, +5.047923110e-02, +5.018315209e-02, +1.105236972e-09 + 1.600000000e-01, +4.914663699e-02, +5.248490296e-02, +3.093103017e-09 + 1.650000000e-01, +4.046146992e-02, +4.790393739e-02, +8.097459858e-09 + 1.700000000e-01, +2.386432750e-02, +3.529820109e-02, +1.978342957e-08 + 1.750000000e-01, -4.859694655e-17, +1.462324779e-02, +4.491600840e-08 + 1.800000000e-01, -2.914795543e-02, -1.281777602e-02, +9.406833310e-08 + 1.850000000e-01, -6.036142013e-02, -4.434400766e-02, +1.793682965e-07 + 1.900000000e-01, -8.955101123e-02, -7.613319948e-02, +3.036069284e-07 + 1.950000000e-01, -1.123435949e-01, -1.037192750e-01, +4.303219307e-07 + 2.000000000e-01, -1.248039088e-01, -1.226875357e-01, +4.198975963e-07 + 2.050000000e-01, -1.241588739e-01, -1.294473326e-01, -8.313959321e-08 + 2.100000000e-01, -1.093778521e-01, -1.219328685e-01, -1.813850167e-06 + 2.150000000e-01, -8.147939460e-02, -1.000839545e-01, -6.070749982e-06 + 2.200000000e-01, -4.348363979e-02, -6.599067576e-02, -1.483452101e-05 + 2.250000000e-01, +2.632536371e-16, -2.365274054e-02, -3.067661723e-05 + 2.300000000e-01, +4.348363979e-02, +2.161684704e-02, -5.628387935e-05 + 2.350000000e-01, +8.147939460e-02, +6.403823028e-02, -9.346768144e-05 + 2.400000000e-01, +1.093778521e-01, +9.829987744e-02, -1.416505748e-04 + 2.450000000e-01, +1.241588739e-01, +1.204027545e-01, -1.959832842e-04 + 2.500000000e-01, +1.248039088e-01, +1.282530138e-01, -2.453599163e-04 + 2.550000000e-01, +1.123435949e-01, +1.218984640e-01, -2.706465170e-04 + 2.600000000e-01, +8.955101123e-02, +1.033816856e-01, -2.435373131e-04 + 2.650000000e-01, +6.036142013e-02, +7.626019250e-02, -1.267893438e-04 + 2.700000000e-01, +2.914795543e-02, +4.490854887e-02, +1.228597382e-04 + 2.750000000e-01, +4.859694655e-17, +1.375152770e-02, +5.474677291e-04 + 2.800000000e-01, -2.386432750e-02, -1.342344799e-02, +1.175327797e-03 + 2.850000000e-01, -4.046146992e-02, -3.395798208e-02, +2.003703834e-03 + 2.900000000e-01, -4.914663699e-02, -4.655533012e-02, +2.979456874e-03 + 2.950000000e-01, -5.047923110e-02, -5.124870503e-02, +3.981457088e-03 + 3.000000000e-01, -4.591279224e-02, -4.915359045e-02, +4.809337905e-03 + 3.050000000e-01, -3.739593417e-02, -4.208645024e-02, +5.184282749e-03 + 3.100000000e-01, -2.697224625e-02, -3.214184015e-02, +4.769041949e-03 + 3.150000000e-01, -1.645040606e-02, -2.131247325e-02, +3.213364134e-03 + 3.200000000e-01, -7.187797314e-03, -1.121125444e-02, +2.253809932e-04 + 3.250000000e-01, -3.446700285e-16, -2.920982592e-03, -4.338691116e-03 + 3.300000000e-01, +4.818124626e-03, +3.031289580e-03, -1.038074602e-02 + 3.350000000e-01, +7.391643913e-03, +6.601457284e-03, -1.748071274e-02 + 3.400000000e-01, +8.123884454e-03, +8.095990792e-03, -2.485296546e-02 + 3.450000000e-01, +7.550108895e-03, +8.019746922e-03, -3.136695214e-02 + 3.500000000e-01, +6.213620742e-03, +6.936286524e-03, -3.565106682e-02 + 3.550000000e-01, +4.579372529e-03, +5.361473646e-03, -3.627839139e-02 + 3.600000000e-01, +2.988610073e-03, +3.699574158e-03, -3.201874061e-02 + 3.650000000e-01, +1.649298690e-03, +2.219143890e-03, -2.212550851e-02 + 3.700000000e-01, +6.520622610e-04, +1.059513973e-03, -6.601455001e-03 + 3.750000000e-01, +5.639207957e-17, +2.570318052e-04, +1.362160633e-02 + 3.800000000e-01, -3.578593563e-04, -2.210989454e-04, +3.664535709e-02 + 3.850000000e-01, -4.967592192e-04, -4.443154235e-04, +5.974785640e-02 + 3.900000000e-01, -4.940139224e-04, -4.924111517e-04, +7.971130500e-02 + 3.950000000e-01, -4.154313032e-04, -4.381037202e-04, +9.330099361e-02 + 4.000000000e-01, -3.093579607e-04, -3.380215717e-04, +9.782231844e-02 + 4.050000000e-01, -2.062970799e-04, -2.303095652e-04, +9.164751712e-02 + 4.100000000e-01, -1.218223334e-04, -1.364864753e-04, +7.460452826e-02 + 4.150000000e-01, -6.083135968e-05, -6.534537816e-05, +4.813998837e-02 + 4.200000000e-01, -2.176144987e-05, -1.752220467e-05, +1.519501669e-02 + 4.250000000e-01, -2.551434914e-18, +1.069555063e-05, -2.020034507e-02 + 4.300000000e-01, +9.778049726e-06, +2.461035081e-05, -5.354384614e-02 + 4.350000000e-01, +1.228163970e-05, +2.929783723e-05, -8.058550261e-02 + 4.400000000e-01, +1.105147275e-05, +2.884536245e-05, -9.801889894e-02 + 4.450000000e-01, +8.409123651e-06, +2.609058230e-05, -1.040005386e-01 + 4.500000000e-01, +5.666088695e-06, +2.279193468e-05, -9.840580248e-02 + 4.550000000e-01, +3.418894541e-06, +1.994415019e-05, -8.277341793e-02 + 4.600000000e-01, +1.826796159e-06, +1.797379987e-05, -5.995950614e-02 + 4.650000000e-01, +8.253938937e-07, +1.715095898e-05, -3.358774776e-02 + 4.700000000e-01, +2.671727168e-07, +1.771568365e-05, -7.405700146e-03 + 4.750000000e-01, +3.777032805e-20, +1.982011546e-05, +1.532064726e-02 + 4.800000000e-01, -9.828734975e-08, +2.368160614e-05, +3.225986545e-02 + 4.850000000e-01, -1.117049164e-07, +2.947230816e-05, +4.225664270e-02 + 4.900000000e-01, -9.095082526e-08, +3.712978090e-05, +4.533678327e-02 + 4.950000000e-01, -6.261923782e-08, +4.627723198e-05, +4.250515161e-02 + 5.000000000e-01, -3.817780532e-08, +5.609211672e-05, +3.541398250e-02 + 5.050000000e-01, -2.084413355e-08, +6.512915944e-05, +2.597743348e-02 + 5.100000000e-01, -1.007763869e-08, +7.120891193e-05, +1.601353359e-02 + 5.150000000e-01, -4.120031130e-09, +7.163307377e-05, +6.980149385e-03 + 5.200000000e-01, -1.206707201e-09, +6.337261691e-05, -1.713694606e-04 + 5.250000000e-01, -1.928824299e-22, +4.334138383e-05, -5.021509383e-03 + 5.300000000e-01, +3.634532244e-10, +9.161548691e-06, -7.608630267e-03 + 5.350000000e-01, +3.737607916e-10, -4.020423049e-05, -8.296853830e-03 + 5.400000000e-01, +2.753586026e-10, -1.038501690e-04, -7.622425257e-03 + 5.450000000e-01, +1.715419466e-10, -1.781684714e-04, -6.154634101e-03 + 5.500000000e-01, +9.463331804e-11, -2.565799878e-04, -4.393083589e-03 + 5.550000000e-01, +4.675063429e-11, -3.297394506e-04, -2.707583641e-03 + 5.600000000e-01, +2.045186871e-11, -3.861843193e-04, -1.321962488e-03 + 5.650000000e-01, +7.565632846e-12, -4.135780877e-04, -3.285644804e-04 + 5.700000000e-01, +2.005013126e-12, -4.004920546e-04, +2.797123371e-04 + 5.750000000e-01, +2.328620401e-25, -3.385037763e-04, +5.696250917e-04 + 5.800000000e-01, -4.944301496e-13, -2.241154537e-04, +6.332276963e-04 + 5.850000000e-01, -4.600666072e-13, -6.035328553e-05, +5.615925044e-04 + 5.900000000e-01, -3.066875683e-13, +1.424123797e-04, +4.286678800e-04 + 5.950000000e-01, -1.728774743e-13, +3.669467322e-04, +2.863408102e-04 + 6.000000000e-01, -8.629441606e-14, +5.906900825e-04, +1.639955921e-04 + 6.050000000e-01, -3.857417852e-14, +7.884165073e-04, +7.329647422e-05 + 6.100000000e-01, -1.526907493e-14, +9.357512699e-04, +1.511936402e-05 + 6.150000000e-01, -5.110878347e-15, +1.012825923e-03, -1.661129676e-05 + 6.200000000e-01, -1.225569810e-15, +1.007591806e-03, -2.995879686e-05 + 6.250000000e-01, -9.083457823e-29, +9.180061011e-04, -3.190764668e-05 + 6.300000000e-01, +2.474382771e-16, +7.527032189e-04, -2.842548367e-05 + 6.350000000e-01, +2.083306657e-16, +5.300561354e-04, -2.326003205e-05 + 6.400000000e-01, +1.256606244e-16, +2.755352490e-04, -1.831959303e-05 + 6.450000000e-01, +6.409320687e-17, +1.796974876e-05, -1.455663685e-05 + 6.500000000e-01, +2.894855159e-17, -2.146792542e-04, -1.201679055e-05 + 6.550000000e-01, +1.170877290e-17, -3.993430411e-04, -1.061326813e-05 + 6.600000000e-01, +4.193705940e-18, -5.208386639e-04, -9.893087981e-06 + 6.650000000e-01, +1.270139270e-18, -5.734406135e-04, -9.519122907e-06 + 6.700000000e-01, +2.755906037e-19, -5.608221771e-04, -9.534630836e-06 + 6.750000000e-01, +1.075875659e-32, -4.945628439e-04, -9.508003613e-06 + 6.800000000e-01, -4.555482039e-20, -3.914932694e-04, -9.447087356e-06 + 6.850000000e-01, -3.470493289e-20, -2.704066001e-04, -9.507118026e-06 + 6.900000000e-01, -1.894121233e-20, -1.491328491e-04, -9.385948280e-06 + 6.950000000e-01, -8.741603680e-21, -4.215852152e-05, -9.276570214e-06 + 7.000000000e-01, -3.572535080e-21, +4.103340103e-05, -9.178458768e-06 + 7.050000000e-01, -1.307469592e-21, +9.631912887e-05, -8.967626409e-06 + 7.100000000e-01, -4.237295397e-22, +1.242917433e-04, -8.861020067e-06 + 7.150000000e-01, -1.161215067e-22, +1.291393524e-04, -8.695383631e-06 + 7.200000000e-01, -2.279797517e-23, +1.171995263e-04, -8.560274672e-06 + 7.250000000e-01, -3.241225490e-37, +9.537377979e-05, -8.591737681e-06 + 7.300000000e-01, +3.085370426e-24, +6.985256023e-05, -8.602381027e-06 + 7.350000000e-01, +2.126839583e-24, +4.545280098e-05, -8.798231581e-06 + 7.400000000e-01, +1.050320519e-24, +2.526009507e-05, -9.183282156e-06 + 7.450000000e-01, +4.386071853e-25, +1.063651372e-05, -9.664424004e-06 + 7.500000000e-01, +1.621928417e-25, +1.619762624e-06, -1.036175563e-05 + 7.550000000e-01, +5.371026932e-26, -2.677045921e-06, -1.116038025e-05 + 7.600000000e-01, +1.575016203e-26, -3.526573614e-06, -1.207388083e-05 + 7.650000000e-01, +3.905525687e-27, -2.213930154e-06, -1.297890217e-05 + 7.700000000e-01, +6.937989919e-28, +4.000784755e-08, -1.372550513e-05 + 7.750000000e-01, -6.993531703e-42, +2.420095579e-06, -1.437880246e-05 + 7.800000000e-01, -7.687511957e-29, +4.531723020e-06, -1.461365446e-05 + 7.850000000e-01, -4.794946636e-29, +6.070477774e-06, -1.438666141e-05 + 7.900000000e-01, -2.142601701e-29, +7.004807679e-06, -1.379614224e-05 + 7.950000000e-01, -8.095914059e-30, +7.535679641e-06, -1.255761743e-05 + 8.000000000e-01, -2.708896312e-30, +7.724191750e-06, -1.083903485e-05 + 8.050000000e-01, -8.116869824e-31, +7.681982571e-06, -8.791566317e-06 + 8.100000000e-01, -2.153708036e-31, +7.594158298e-06, -6.392192861e-06 + 8.150000000e-01, -4.832277353e-32, +7.457111187e-06, -3.944918172e-06 + 8.200000000e-01, -7.767416097e-33, +7.327675720e-06, -1.608661930e-06 + 8.250000000e-01, +2.050715652e-46, +7.270037518e-06, +4.176564995e-07 + 8.300000000e-01, +7.046440907e-34, +7.173251265e-06, +1.951966931e-06 + 8.350000000e-01, +3.976842028e-34, +7.129521853e-06, +2.945237465e-06 + 8.400000000e-01, +1.607927855e-34, +7.161617395e-06, +3.223242298e-06 + 8.450000000e-01, +5.497453374e-35, +7.080193711e-06, +2.915148822e-06 + 8.500000000e-01, +1.664403419e-35, +7.065145017e-06, +2.111415952e-06 + 8.550000000e-01, +4.512584527e-36, +7.131365640e-06, +8.258131957e-07 + 8.600000000e-01, +1.083413267e-36, +7.035929634e-06, -6.159351697e-07 + 8.650000000e-01, +2.199529168e-37, +7.026076635e-06, -2.124389895e-06 + 8.700000000e-01, +3.199079223e-38, +7.092403050e-06, -3.562284816e-06 + 8.750000000e-01, -1.264445967e-51, +6.991922120e-06, -4.709203593e-06 + 8.800000000e-01, -2.376070608e-39, +6.996947259e-06, -5.612276314e-06 + 8.850000000e-01, -1.213384435e-39, +7.039523654e-06, -6.147702681e-06 + 8.900000000e-01, -4.439123120e-40, +6.946466005e-06, -6.355305141e-06 + 8.950000000e-01, -1.373291519e-40, +6.979544426e-06, -6.368223713e-06 + 9.000000000e-01, -3.762099992e-41, +6.983567998e-06, -6.118708320e-06 + 9.050000000e-01, -9.229276070e-42, +6.902567855e-06, -5.791916040e-06 + 9.100000000e-01, -2.004965889e-42, +6.967345340e-06, -5.457887403e-06 + 9.150000000e-01, -3.683096656e-43, +6.933034664e-06, -5.090439856e-06 + 9.200000000e-01, -4.847066048e-44, +6.863338523e-06, -4.819441153e-06 + 9.250000000e-01, +2.695492675e-57, +6.949257373e-06, -4.609456967e-06 + 9.300000000e-01, +2.947503899e-45, +6.889720925e-06, -4.484717629e-06 + 9.350000000e-01, +1.361958949e-45, +6.829747704e-06, -4.426715315e-06 + 9.400000000e-01, +4.508513145e-46, +6.913711184e-06, -4.388087867e-06 + 9.450000000e-01, +1.262029305e-46, +6.846456219e-06, -4.445402775e-06 + 9.500000000e-01, +3.128294188e-47, +6.796797753e-06, -4.463888774e-06 + 9.550000000e-01, +6.944091618e-48, +6.852266096e-06, -4.474684215e-06 + 9.600000000e-01, +1.364977037e-48, +6.792297531e-06, -4.557346851e-06 + 9.650000000e-01, +2.268830361e-49, +6.755887822e-06, -4.550868855e-06 + 9.700000000e-01, +2.701707935e-50, +6.766308139e-06, -4.555777857e-06 + 9.750000000e-01, -1.705334349e-63, +6.725040151e-06, -4.595603046e-06 + 9.800000000e-01, -1.345101176e-51, +6.705345746e-06, -4.572577426e-06 + 9.850000000e-01, -5.623868195e-52, +6.675183646e-06, -4.577296573e-06 + 9.900000000e-01, -1.684515487e-52, +6.661865667e-06, -4.574618621e-06 + 9.950000000e-01, -4.266597350e-53, +6.659035161e-06, -4.570016789e-06 + 1.000000000e+00, -9.569524512e-54, +6.613654985e-06, -4.574781828e-06 diff --git a/test/examples/ref/coaxial/matched/port-V.csv b/test/examples/ref/coaxial/matched/port-V.csv index 4bafdcb71..ea4716d37 100644 --- a/test/examples/ref/coaxial/matched/port-V.csv +++ b/test/examples/ref/coaxial/matched/port-V.csv @@ -1,50 +1,50 @@ t (ns), V_inc[1] (V), V[1] (V), V[2] (V) 0.000000000e+00, -2.833044348e-04, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, -4.204561825e-04, -1.372355600e-04, -5.065452825e-22 - 1.000000000e-02, -5.525736376e-04, -2.768477037e-04, +1.575763957e-21 - 1.500000000e-02, -6.140819852e-04, -3.268163859e-04, -1.032798000e-21 - 2.000000000e-02, -4.889024863e-04, -2.310789623e-04, +1.869605058e-21 - 2.500000000e-02, -3.051675161e-18, +2.666703698e-04, +3.212734954e-22 - 3.000000000e-02, +1.088072493e-03, +1.333462552e-03, +6.574010005e-20 - 3.500000000e-02, +3.041567984e-03, +3.267358426e-03, +1.233270725e-19 - 4.000000000e-02, +6.091116670e-03, +6.298866841e-03, +2.340011443e-19 - 4.500000000e-02, +1.031485399e-02, +1.050499965e-02, +6.656483082e-19 - 5.000000000e-02, +1.546789803e-02, +1.564546720e-02, +7.413611837e-19 - 5.500000000e-02, +2.077156516e-02, +2.094951513e-02, +1.386310330e-18 - 6.000000000e-02, +2.470069612e-02, +2.491313898e-02, +2.037543604e-18 - 6.500000000e-02, +2.483796096e-02, +2.510856003e-02, +1.649354595e-18 - 7.000000000e-02, +1.789296781e-02, +1.825786070e-02, +3.745301664e-18 - 7.500000000e-02, -2.885970849e-17, +5.116704638e-04, +4.395650905e-18 - 8.000000000e-02, -3.260311305e-02, -3.191785195e-02, +4.834348342e-18 - 8.500000000e-02, -8.246493451e-02, -8.158501484e-02, -9.619797623e-19 - 9.000000000e-02, -1.494305036e-01, -1.483421678e-01, -9.697820057e-17 - 9.500000000e-02, -2.289686265e-01, -2.276918608e-01, -8.539523958e-16 - 1.000000000e-01, -3.106810371e-01, -3.092516108e-01, -6.477780006e-15 - 1.050000000e-01, -3.775054448e-01, -3.759601744e-01, -4.395648630e-14 - 1.100000000e-01, -4.061942227e-01, -4.045725400e-01, -2.698275123e-13 - 1.150000000e-01, -3.695821957e-01, -3.679216876e-01, -1.509875053e-12 - 1.200000000e-01, -2.409062313e-01, -2.392327277e-01, -7.742134141e-12 - 1.250000000e-01, +2.343888163e-16, +1.648793989e-03, -3.654747037e-11 - 1.300000000e-01, +3.593898657e-01, +3.609079016e-01, -1.594313124e-10 - 1.350000000e-01, +8.225203029e-01, +8.236876014e-01, -6.446384098e-10 - 1.400000000e-01, +1.348612313e+00, +1.349024689e+00, -2.421496590e-09 - 1.450000000e-01, +1.869796708e+00, +1.868794378e+00, -8.464185863e-09 - 1.500000000e-01, +2.295639612e+00, +2.292310507e+00, -2.755740009e-08 - 1.550000000e-01, +2.523961555e+00, +2.517204835e+00, -8.358950510e-08 - 1.600000000e-01, +2.457331849e+00, +2.446003413e+00, -2.360889142e-07 - 1.650000000e-01, +2.023073496e+00, +2.006245268e+00, -6.198760827e-07 - 1.700000000e-01, +1.193216375e+00, +1.170501686e+00, -1.508341849e-06 - 1.750000000e-01, -2.429847328e-15, -2.811424978e-02, -3.383291458e-06 - 1.800000000e-01, -1.457397771e+00, -1.489281056e+00, -6.931218033e-06 + 5.000000000e-03, -4.204561825e-04, -1.372355600e-04, -4.968809365e-22 + 1.000000000e-02, -5.525736376e-04, -2.768477037e-04, +1.550052947e-21 + 1.500000000e-02, -6.140819852e-04, -3.268163859e-04, -1.007047768e-21 + 2.000000000e-02, -4.889024863e-04, -2.310789623e-04, +1.923209727e-21 + 2.500000000e-02, -3.051675161e-18, +2.666703698e-04, +3.755743315e-22 + 3.000000000e-02, +1.088072493e-03, +1.333462552e-03, +6.717002876e-20 + 3.500000000e-02, +3.041567984e-03, +3.267358426e-03, +1.230374859e-19 + 4.000000000e-02, +6.091116670e-03, +6.298866841e-03, +2.374113961e-19 + 4.500000000e-02, +1.031485399e-02, +1.050499965e-02, +6.561797255e-19 + 5.000000000e-02, +1.546789803e-02, +1.564546720e-02, +7.350599478e-19 + 5.500000000e-02, +2.077156516e-02, +2.094951513e-02, +1.431716580e-18 + 6.000000000e-02, +2.470069612e-02, +2.491313898e-02, +2.120282033e-18 + 6.500000000e-02, +2.483796096e-02, +2.510856003e-02, +1.574229362e-18 + 7.000000000e-02, +1.789296781e-02, +1.825786070e-02, +2.877576215e-18 + 7.500000000e-02, -2.885970849e-17, +5.116704638e-04, +1.711536770e-18 + 8.000000000e-02, -3.260311305e-02, -3.191785195e-02, -4.781862958e-19 + 8.500000000e-02, -8.246493451e-02, -8.158501484e-02, -9.364475828e-18 + 9.000000000e-02, -1.494305036e-01, -1.483421678e-01, -1.078374447e-16 + 9.500000000e-02, -2.289686265e-01, -2.276918608e-01, -8.654727608e-16 + 1.000000000e-01, -3.106810371e-01, -3.092516108e-01, -6.487385185e-15 + 1.050000000e-01, -3.775054448e-01, -3.759601744e-01, -4.395998826e-14 + 1.100000000e-01, -4.061942227e-01, -4.045725400e-01, -2.698211395e-13 + 1.150000000e-01, -3.695821957e-01, -3.679216876e-01, -1.509855833e-12 + 1.200000000e-01, -2.409062313e-01, -2.392327277e-01, -7.742099060e-12 + 1.250000000e-01, +2.343888163e-16, +1.648793990e-03, -3.654742037e-11 + 1.300000000e-01, +3.593898657e-01, +3.609079016e-01, -1.594312505e-10 + 1.350000000e-01, +8.225203029e-01, +8.236876014e-01, -6.446383461e-10 + 1.400000000e-01, +1.348612313e+00, +1.349024689e+00, -2.421496548e-09 + 1.450000000e-01, +1.869796708e+00, +1.868794378e+00, -8.464185875e-09 + 1.500000000e-01, +2.295639612e+00, +2.292310507e+00, -2.755740020e-08 + 1.550000000e-01, +2.523961555e+00, +2.517204835e+00, -8.358950536e-08 + 1.600000000e-01, +2.457331849e+00, +2.446003413e+00, -2.360889146e-07 + 1.650000000e-01, +2.023073496e+00, +2.006245268e+00, -6.198760834e-07 + 1.700000000e-01, +1.193216375e+00, +1.170501686e+00, -1.508341850e-06 + 1.750000000e-01, -2.429847328e-15, -2.811424978e-02, -3.383291459e-06 + 1.800000000e-01, -1.457397771e+00, -1.489281056e+00, -6.931218034e-06 1.850000000e-01, -3.018071006e+00, -3.050826731e+00, -1.275149362e-05 1.900000000e-01, -4.477550561e+00, -4.507130087e+00, -2.034209320e-05 1.950000000e-01, -5.617179743e+00, -5.638770098e+00, -2.567346106e-05 2.000000000e-01, -6.240195442e+00, -6.248845777e+00, -1.655146561e-05 - 2.050000000e-01, -6.207943693e+00, -6.199369191e+00, +3.465328750e-05 + 2.050000000e-01, -6.207943693e+00, -6.199369191e+00, +3.465328749e-05 2.100000000e-01, -5.468892605e+00, -5.440318963e+00, +1.800690952e-04 2.150000000e-01, -4.073969730e+00, -4.024835976e+00, +5.040310132e-04 2.200000000e-01, -2.174181990e+00, -2.106553983e+00, +1.123447369e-03 - 2.250000000e-01, +1.316268185e-14, +8.143006830e-02, +2.172872637e-03 + 2.250000000e-01, +1.316268185e-14, +8.143006831e-02, +2.172872637e-03 2.300000000e-01, +2.174181990e+00, +2.262556595e+00, +3.767029670e-03 2.350000000e-01, +4.073969730e+00, +4.161132300e+00, +5.937769792e-03 2.400000000e-01, +5.468892605e+00, +5.546524634e+00, +8.549006978e-03 @@ -52,7 +52,7 @@ 2.500000000e-01, +6.240195442e+00, +6.279010884e+00, +1.312459642e-02 2.550000000e-01, +5.617179743e+00, +5.631588195e+00, +1.312318719e-02 2.600000000e-01, +4.477550561e+00, +4.468177987e+00, +9.530076029e-03 - 2.650000000e-01, +3.018071006e+00, +2.988313662e+00, +3.008352239e-04 + 2.650000000e-01, +3.018071006e+00, +2.988313662e+00, +3.008352242e-04 2.700000000e-01, +1.457397771e+00, +1.412743251e+00, -1.672529553e-02 2.750000000e-01, +2.429847328e-15, -5.292842286e-02, -4.332059946e-02 2.800000000e-01, -1.193216375e+00, -1.247700830e+00, -8.011657114e-02 @@ -62,7 +62,7 @@ 3.000000000e-01, -2.295639612e+00, -2.314203094e+00, -2.518599038e-01 3.050000000e-01, -1.869796708e+00, -1.877568047e+00, -2.505419293e-01 3.100000000e-01, -1.348612313e+00, -1.347678916e+00, -2.004478135e-01 - 3.150000000e-01, -8.225203029e-01, -8.155374439e-01, -8.549956606e-02 + 3.150000000e-01, -8.225203029e-01, -8.155374439e-01, -8.549956607e-02 3.200000000e-01, -3.593898657e-01, -3.490662015e-01, +1.051120149e-01 3.250000000e-01, -1.723350142e-14, +1.129722163e-02, +3.723054651e-01 3.300000000e-01, +2.409062313e-01, +2.513918903e-01, +7.027478871e-01 @@ -81,33 +81,33 @@ 3.950000000e-01, -2.077156516e-02, -2.133157149e-02, -4.775816538e+00 4.000000000e-01, -1.546789803e-02, -1.590526908e-02, -4.724853592e+00 4.050000000e-01, -1.031485399e-02, -1.067686760e-02, -4.135894301e+00 - 4.100000000e-01, -6.091116670e-03, -6.413338880e-03, -3.042455647e+00 + 4.100000000e-01, -6.091116670e-03, -6.413338879e-03, -3.042455647e+00 4.150000000e-01, -3.041567984e-03, -3.347590794e-03, -1.555433731e+00 - 4.200000000e-01, -1.088072493e-03, -1.389554268e-03, +1.503822423e-01 - 4.250000000e-01, -1.275717457e-16, -2.995064781e-04, +1.862039013e+00 - 4.300000000e-01, +4.889024863e-04, +1.941689465e-04, +3.361896348e+00 - 4.350000000e-01, +6.140819852e-04, +3.301372063e-04, +4.462759288e+00 - 4.400000000e-01, +5.525736376e-04, +2.854895253e-04, +5.037821074e+00 - 4.450000000e-01, +4.204561825e-04, +1.741971507e-04, +5.039629281e+00 - 4.500000000e-01, +2.833044348e-04, +5.700503910e-05, +4.504737032e+00 - 4.550000000e-01, +1.709447271e-04, -4.405130144e-05, +3.543482320e+00 - 4.600000000e-01, +9.133980795e-05, -1.312500586e-04, +2.317515506e+00 - 4.650000000e-01, +4.126969468e-05, -2.232931046e-04, +1.010103265e+00 - 4.700000000e-01, +1.335863584e-05, -3.454537785e-04, -2.048055017e-01 - 4.750000000e-01, +1.888516403e-18, -5.222323413e-04, -1.188767560e+00 + 4.200000000e-01, -1.088072493e-03, -1.389554267e-03, +1.503822423e-01 + 4.250000000e-01, -1.275717457e-16, -2.995064771e-04, +1.862039013e+00 + 4.300000000e-01, +4.889024863e-04, +1.941689475e-04, +3.361896348e+00 + 4.350000000e-01, +6.140819852e-04, +3.301372077e-04, +4.462759288e+00 + 4.400000000e-01, +5.525736376e-04, +2.854895268e-04, +5.037821074e+00 + 4.450000000e-01, +4.204561825e-04, +1.741971518e-04, +5.039629281e+00 + 4.500000000e-01, +2.833044348e-04, +5.700504028e-05, +4.504737032e+00 + 4.550000000e-01, +1.709447271e-04, -4.405130029e-05, +3.543482320e+00 + 4.600000000e-01, +9.133980795e-05, -1.312500581e-04, +2.317515506e+00 + 4.650000000e-01, +4.126969468e-05, -2.232931041e-04, +1.010103265e+00 + 4.700000000e-01, +1.335863584e-05, -3.454537779e-04, -2.048055017e-01 + 4.750000000e-01, +1.888516403e-18, -5.222323412e-04, -1.188767560e+00 4.800000000e-01, -4.914367487e-06, -7.750959949e-04, -1.855881786e+00 4.850000000e-01, -5.585245819e-06, -1.115324597e-03, -2.178713151e+00 4.900000000e-01, -4.547541263e-06, -1.537090408e-03, -2.183322259e+00 4.950000000e-01, -3.130961891e-06, -2.012400350e-03, -1.935923923e+00 5.000000000e-01, -1.908890266e-06, -2.484516257e-03, -1.525081205e+00 5.050000000e-01, -1.042206678e-06, -2.862955168e-03, -1.043338312e+00 - 5.100000000e-01, -5.038819347e-07, -3.024743600e-03, -5.718283326e-01 - 5.150000000e-01, -2.060015565e-07, -2.824752434e-03, -1.701654561e-01 - 5.200000000e-01, -6.033536005e-08, -2.110099227e-03, +1.277509450e-01 - 5.250000000e-01, -9.644121496e-21, -7.439345335e-04, +3.125215118e-01 - 5.300000000e-01, +1.817266122e-08, +1.359225887e-03, +3.941219649e-01 - 5.350000000e-01, +1.868803958e-08, +4.200368924e-03, +3.948411394e-01 - 5.400000000e-01, +1.376793013e-08, +7.664016878e-03, +3.420465633e-01 + 5.100000000e-01, -5.038819347e-07, -3.024743599e-03, -5.718283326e-01 + 5.150000000e-01, -2.060015565e-07, -2.824752433e-03, -1.701654561e-01 + 5.200000000e-01, -6.033536005e-08, -2.110099226e-03, +1.277509450e-01 + 5.250000000e-01, -9.644121496e-21, -7.439345321e-04, +3.125215118e-01 + 5.300000000e-01, +1.817266122e-08, +1.359225888e-03, +3.941219649e-01 + 5.350000000e-01, +1.868803958e-08, +4.200368926e-03, +3.948411395e-01 + 5.400000000e-01, +1.376793013e-08, +7.664016879e-03, +3.420465633e-01 5.450000000e-01, +8.577097330e-09, +1.149275531e-02, +2.621957853e-01 5.500000000e-01, +4.731665902e-09, +1.528517740e-02, +1.768297798e-01 5.550000000e-01, +2.337531714e-09, +1.851820152e-02, +1.006737511e-01 @@ -115,88 +115,88 @@ 5.650000000e-01, +3.782816423e-10, +2.092398946e-02, +1.723512177e-03 5.700000000e-01, +1.002506563e-10, +1.900977907e-02, -2.071508641e-02 5.750000000e-01, +1.164310201e-23, +1.456001981e-02, -2.963650520e-02 - 5.800000000e-01, -2.472150748e-11, +7.570042193e-03, -2.955907908e-02 - 5.850000000e-01, -2.300333036e-11, -1.618644852e-03, -2.457243978e-02 + 5.800000000e-01, -2.472150748e-11, +7.570042195e-03, -2.955907908e-02 + 5.850000000e-01, -2.300333036e-11, -1.618644849e-03, -2.457243978e-02 5.900000000e-01, -1.533437842e-11, -1.230966525e-02, -1.779353174e-02 - 5.950000000e-01, -8.643873713e-12, -2.350396242e-02, -1.124458956e-02 - 6.000000000e-01, -4.314720803e-12, -3.400651992e-02, -5.959505506e-03 - 6.050000000e-01, -1.928708926e-12, -4.258056666e-02, -2.251682108e-03 - 6.100000000e-01, -7.634537466e-13, -4.812729344e-02, -1.944808006e-06 - 6.150000000e-01, -2.555439173e-13, -4.985827499e-02, +1.131387319e-03 - 6.200000000e-01, -6.127849048e-14, -4.743145269e-02, +1.524927693e-03 - 6.250000000e-01, -4.541728911e-27, -4.102128372e-02, +1.496277681e-03 - 6.300000000e-01, +1.237191386e-14, -3.130923222e-02, +1.286185270e-03 - 6.350000000e-01, +1.041653328e-14, -1.939358539e-02, +1.037950100e-03 - 6.400000000e-01, +6.283031218e-15, -6.629435720e-03, +8.221271834e-04 - 6.450000000e-01, +3.204660344e-15, +5.570372277e-03, +6.659544173e-04 - 6.500000000e-01, +1.447427579e-15, +1.593950186e-02, +5.667365603e-04 - 6.550000000e-01, +5.854386450e-16, +2.353190035e-02, +5.128190666e-04 - 6.600000000e-01, +2.096852970e-16, +2.783401897e-02, +4.864553060e-04 - 6.650000000e-01, +6.350696352e-17, +2.880146865e-02, +4.759463957e-04 - 6.700000000e-01, +1.377953018e-17, +2.681846160e-02, +4.754357529e-04 - 6.750000000e-01, +5.379378296e-31, +2.259337024e-02, +4.742540093e-04 - 6.800000000e-01, -2.277741020e-18, +1.701300599e-02, +4.729023782e-04 - 6.850000000e-01, -1.735246645e-18, +1.098728471e-02, +4.719367941e-04 - 6.900000000e-01, -9.470606165e-19, +5.316416417e-03, +4.663455368e-04 - 6.950000000e-01, -4.370801840e-19, +5.935849627e-04, +4.604477808e-04 - 7.000000000e-01, -1.786267540e-19, -2.844509692e-03, +4.535957736e-04 - 7.050000000e-01, -6.537347961e-20, -4.911714935e-03, +4.449016721e-04 - 7.100000000e-01, -2.118647699e-20, -5.727982852e-03, +4.381864840e-04 - 7.150000000e-01, -5.806075333e-21, -5.554370684e-03, +4.313345980e-04 - 7.200000000e-01, -1.139898758e-21, -4.718619831e-03, +4.277145132e-04 - 7.250000000e-01, -1.620612745e-35, -3.545671653e-03, +4.294122165e-04 - 7.300000000e-01, +1.542685213e-22, -2.308296837e-03, +4.347899752e-04 - 7.350000000e-01, +1.063419792e-22, -1.202033282e-03, +4.488369599e-04 - 7.400000000e-01, +5.251602594e-23, -3.374508168e-04, +4.710786766e-04 - 7.450000000e-01, +2.193035927e-23, +2.507797380e-04, +5.003900821e-04 - 7.500000000e-01, +8.109642085e-24, +5.829705686e-04, +5.382118411e-04 - 7.550000000e-01, +2.685513466e-24, +7.122384518e-04, +5.809186893e-04 - 7.600000000e-01, +7.875081013e-25, +7.027927889e-04, +6.261043687e-04 - 7.650000000e-01, +1.952762843e-25, +6.156591070e-04, +6.683280007e-04 - 7.700000000e-01, +3.468994959e-26, +5.008972786e-04, +7.023127429e-04 - 7.750000000e-01, -3.496765852e-40, +3.901331387e-04, +7.243104846e-04 - 7.800000000e-01, -3.843755978e-27, +2.998311572e-04, +7.252655938e-04 - 7.850000000e-01, -2.397473318e-27, +2.377462921e-04, +7.033746682e-04 - 7.900000000e-01, -1.071300850e-27, +2.013511921e-04, +6.576749312e-04 - 7.950000000e-01, -4.047957029e-28, +1.834534227e-04, +5.840307464e-04 - 8.000000000e-01, -1.354448156e-28, +1.792152633e-04, +4.889649393e-04 - 8.050000000e-01, -4.058434912e-29, +1.825593405e-04, +3.781421839e-04 - 8.100000000e-01, -1.076854018e-29, +1.880221047e-04, +2.570309958e-04 - 8.150000000e-01, -2.416138676e-30, +1.943111059e-04, +1.377167927e-04 - 8.200000000e-01, -3.883708049e-31, +1.995158443e-04, +2.908880599e-05 - 8.250000000e-01, +1.025357826e-44, +2.029625271e-04, -5.982094585e-05 - 8.300000000e-01, +3.523220453e-32, +2.061475429e-04, -1.219278619e-04 - 8.350000000e-01, +1.988421014e-32, +2.074515962e-04, -1.537070015e-04 - 8.400000000e-01, +8.039639276e-33, +2.079480326e-04, -1.528269615e-04 - 8.450000000e-01, +2.748726687e-33, +2.099544896e-04, -1.241951316e-04 - 8.500000000e-01, +8.322017093e-34, +2.100094651e-04, -7.261180819e-05 - 8.550000000e-01, +2.256292263e-34, +2.097662303e-04, -4.338343337e-06 - 8.600000000e-01, +5.417066333e-35, +2.120419428e-04, +6.937026123e-05 - 8.650000000e-01, +1.099764584e-35, +2.119761891e-04, +1.422288650e-04 - 8.700000000e-01, +1.599539611e-36, +2.117370524e-04, +2.070336700e-04 - 8.750000000e-01, -6.322229835e-50, +2.140731914e-04, +2.576040934e-04 - 8.800000000e-01, -1.188035304e-37, +2.139085089e-04, +2.933273966e-04 - 8.850000000e-01, -6.066922176e-38, +2.140217876e-04, +3.122341182e-04 - 8.900000000e-01, -2.219561560e-38, +2.159888483e-04, +3.170515957e-04 - 8.950000000e-01, -6.866457597e-39, +2.155729282e-04, +3.115406361e-04 - 9.000000000e-01, -1.881049996e-39, +2.163182952e-04, +2.973765395e-04 - 9.050000000e-01, -4.614638035e-40, +2.177376590e-04, +2.805435086e-04 - 9.100000000e-01, -1.002482944e-40, +2.169880189e-04, +2.634820011e-04 - 9.150000000e-01, -1.841548328e-41, +2.184243469e-04, +2.474819008e-04 - 9.200000000e-01, -2.423533024e-42, +2.193856926e-04, +2.356124651e-04 - 9.250000000e-01, +1.347746337e-55, +2.184083467e-04, +2.272392912e-04 - 9.300000000e-01, +1.473751950e-43, +2.203584750e-04, +2.225130608e-04 - 9.350000000e-01, +6.809794745e-44, +2.211345935e-04, +2.205871215e-04 - 9.400000000e-01, +2.254256572e-44, +2.202842119e-04, +2.205025438e-04 - 9.450000000e-01, +6.310146526e-45, +2.224583123e-04, +2.224305155e-04 - 9.500000000e-01, +1.564147094e-45, +2.233412630e-04, +2.236925644e-04 - 9.550000000e-01, +3.472045809e-46, +2.230802484e-04, +2.252859374e-04 - 9.600000000e-01, +6.824885183e-47, +2.251621531e-04, +2.274781788e-04 - 9.650000000e-01, +1.134415180e-47, +2.262626847e-04, +2.277056237e-04 - 9.700000000e-01, +1.350853967e-48, +2.268272547e-04, +2.283394661e-04 - 9.750000000e-01, -8.526671746e-62, +2.284429790e-04, +2.290658008e-04 - 9.800000000e-01, -6.725505882e-50, +2.295494122e-04, +2.285373151e-04 - 9.850000000e-01, -2.811934097e-50, +2.306545763e-04, +2.285922624e-04 - 9.900000000e-01, -8.422577434e-51, +2.313803724e-04, +2.284499207e-04 - 9.950000000e-01, -2.133298675e-51, +2.320640712e-04, +2.282600142e-04 - 1.000000000e+00, -4.784762256e-52, +2.329781244e-04, +2.281435227e-04 + 5.950000000e-01, -8.643873713e-12, -2.350396242e-02, -1.124458955e-02 + 6.000000000e-01, -4.314720803e-12, -3.400651992e-02, -5.959505505e-03 + 6.050000000e-01, -1.928708926e-12, -4.258056666e-02, -2.251682106e-03 + 6.100000000e-01, -7.634537466e-13, -4.812729344e-02, -1.944807183e-06 + 6.150000000e-01, -2.555439173e-13, -4.985827499e-02, +1.131387320e-03 + 6.200000000e-01, -6.127849048e-14, -4.743145269e-02, +1.524927694e-03 + 6.250000000e-01, -4.541728911e-27, -4.102128372e-02, +1.496277682e-03 + 6.300000000e-01, +1.237191386e-14, -3.130923223e-02, +1.286185271e-03 + 6.350000000e-01, +1.041653328e-14, -1.939358539e-02, +1.037950101e-03 + 6.400000000e-01, +6.283031218e-15, -6.629435720e-03, +8.221271844e-04 + 6.450000000e-01, +3.204660344e-15, +5.570372277e-03, +6.659544184e-04 + 6.500000000e-01, +1.447427579e-15, +1.593950186e-02, +5.667365612e-04 + 6.550000000e-01, +5.854386450e-16, +2.353190035e-02, +5.128190677e-04 + 6.600000000e-01, +2.096852970e-16, +2.783401897e-02, +4.864553073e-04 + 6.650000000e-01, +6.350696352e-17, +2.880146865e-02, +4.759463967e-04 + 6.700000000e-01, +1.377953018e-17, +2.681846161e-02, +4.754357539e-04 + 6.750000000e-01, +5.379378296e-31, +2.259337024e-02, +4.742540106e-04 + 6.800000000e-01, -2.277741020e-18, +1.701300599e-02, +4.729023792e-04 + 6.850000000e-01, -1.735246645e-18, +1.098728471e-02, +4.719367950e-04 + 6.900000000e-01, -9.470606165e-19, +5.316416419e-03, +4.663455379e-04 + 6.950000000e-01, -4.370801840e-19, +5.935849637e-04, +4.604477818e-04 + 7.000000000e-01, -1.786267540e-19, -2.844509691e-03, +4.535957746e-04 + 7.050000000e-01, -6.537347961e-20, -4.911714934e-03, +4.449016731e-04 + 7.100000000e-01, -2.118647699e-20, -5.727982851e-03, +4.381864850e-04 + 7.150000000e-01, -5.806075333e-21, -5.554370683e-03, +4.313345990e-04 + 7.200000000e-01, -1.139898758e-21, -4.718619830e-03, +4.277145142e-04 + 7.250000000e-01, -1.620612745e-35, -3.545671652e-03, +4.294122176e-04 + 7.300000000e-01, +1.542685213e-22, -2.308296836e-03, +4.347899762e-04 + 7.350000000e-01, +1.063419792e-22, -1.202033282e-03, +4.488369609e-04 + 7.400000000e-01, +5.251602594e-23, -3.374508159e-04, +4.710786777e-04 + 7.450000000e-01, +2.193035927e-23, +2.507797394e-04, +5.003900831e-04 + 7.500000000e-01, +8.109642085e-24, +5.829705699e-04, +5.382118422e-04 + 7.550000000e-01, +2.685513466e-24, +7.122384528e-04, +5.809186904e-04 + 7.600000000e-01, +7.875081013e-25, +7.027927899e-04, +6.261043697e-04 + 7.650000000e-01, +1.952762843e-25, +6.156591080e-04, +6.683280017e-04 + 7.700000000e-01, +3.468994959e-26, +5.008972797e-04, +7.023127439e-04 + 7.750000000e-01, -3.496765852e-40, +3.901331399e-04, +7.243104856e-04 + 7.800000000e-01, -3.843755978e-27, +2.998311582e-04, +7.252655949e-04 + 7.850000000e-01, -2.397473318e-27, +2.377462930e-04, +7.033746692e-04 + 7.900000000e-01, -1.071300850e-27, +2.013511930e-04, +6.576749322e-04 + 7.950000000e-01, -4.047957029e-28, +1.834534237e-04, +5.840307475e-04 + 8.000000000e-01, -1.354448156e-28, +1.792152644e-04, +4.889649404e-04 + 8.050000000e-01, -4.058434912e-29, +1.825593416e-04, +3.781421849e-04 + 8.100000000e-01, -1.076854018e-29, +1.880221057e-04, +2.570309969e-04 + 8.150000000e-01, -2.416138676e-30, +1.943111069e-04, +1.377167938e-04 + 8.200000000e-01, -3.883708049e-31, +1.995158454e-04, +2.908880697e-05 + 8.250000000e-01, +1.025357826e-44, +2.029625281e-04, -5.982094485e-05 + 8.300000000e-01, +3.523220453e-32, +2.061475439e-04, -1.219278608e-04 + 8.350000000e-01, +1.988421014e-32, +2.074515972e-04, -1.537070006e-04 + 8.400000000e-01, +8.039639276e-33, +2.079480336e-04, -1.528269606e-04 + 8.450000000e-01, +2.748726687e-33, +2.099544907e-04, -1.241951305e-04 + 8.500000000e-01, +8.322017093e-34, +2.100094661e-04, -7.261180725e-05 + 8.550000000e-01, +2.256292263e-34, +2.097662314e-04, -4.338342360e-06 + 8.600000000e-01, +5.417066333e-35, +2.120419439e-04, +6.937026232e-05 + 8.650000000e-01, +1.099764584e-35, +2.119761900e-04, +1.422288660e-04 + 8.700000000e-01, +1.599539611e-36, +2.117370534e-04, +2.070336710e-04 + 8.750000000e-01, -6.322229835e-50, +2.140731925e-04, +2.576040944e-04 + 8.800000000e-01, -1.188035304e-37, +2.139085098e-04, +2.933273976e-04 + 8.850000000e-01, -6.066922176e-38, +2.140217886e-04, +3.122341193e-04 + 8.900000000e-01, -2.219561560e-38, +2.159888494e-04, +3.170515968e-04 + 8.950000000e-01, -6.866457597e-39, +2.155729292e-04, +3.115406371e-04 + 9.000000000e-01, -1.881049996e-39, +2.163182963e-04, +2.973765405e-04 + 9.050000000e-01, -4.614638035e-40, +2.177376601e-04, +2.805435097e-04 + 9.100000000e-01, -1.002482944e-40, +2.169880199e-04, +2.634820021e-04 + 9.150000000e-01, -1.841548328e-41, +2.184243480e-04, +2.474819019e-04 + 9.200000000e-01, -2.423533024e-42, +2.193856935e-04, +2.356124661e-04 + 9.250000000e-01, +1.347746337e-55, +2.184083477e-04, +2.272392922e-04 + 9.300000000e-01, +1.473751950e-43, +2.203584761e-04, +2.225130618e-04 + 9.350000000e-01, +6.809794745e-44, +2.211345945e-04, +2.205871225e-04 + 9.400000000e-01, +2.254256572e-44, +2.202842129e-04, +2.205025448e-04 + 9.450000000e-01, +6.310146526e-45, +2.224583134e-04, +2.224305166e-04 + 9.500000000e-01, +1.564147094e-45, +2.233412640e-04, +2.236925655e-04 + 9.550000000e-01, +3.472045809e-46, +2.230802494e-04, +2.252859383e-04 + 9.600000000e-01, +6.824885183e-47, +2.251621542e-04, +2.274781798e-04 + 9.650000000e-01, +1.134415180e-47, +2.262626857e-04, +2.277056248e-04 + 9.700000000e-01, +1.350853967e-48, +2.268272557e-04, +2.283394671e-04 + 9.750000000e-01, -8.526671746e-62, +2.284429800e-04, +2.290658019e-04 + 9.800000000e-01, -6.725505882e-50, +2.295494133e-04, +2.285373162e-04 + 9.850000000e-01, -2.811934097e-50, +2.306545773e-04, +2.285922633e-04 + 9.900000000e-01, -8.422577434e-51, +2.313803734e-04, +2.284499218e-04 + 9.950000000e-01, -2.133298675e-51, +2.320640723e-04, +2.282600152e-04 + 1.000000000e+00, -4.784762256e-52, +2.329781254e-04, +2.281435237e-04 diff --git a/test/examples/ref/coaxial/open/domain-E.csv b/test/examples/ref/coaxial/open/domain-E.csv index 6ee72c4e2..a38292e70 100644 --- a/test/examples/ref/coaxial/open/domain-E.csv +++ b/test/examples/ref/coaxial/open/domain-E.csv @@ -1,202 +1,202 @@ t (ns), E_elec (J), E_mag (J), E_cap (J), E_ind (J) 0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-03, +2.483779150e-13, +2.279766032e-13, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-02, +2.276378059e-12, +2.403226901e-12, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-02, +6.974949774e-12, +6.967633381e-12, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-02, +1.068852323e-11, +1.090294512e-11, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-02, +1.063816272e-11, +1.075641631e-11, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-02, +4.202730563e-11, +4.218693243e-11, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-02, +3.050624355e-10, +3.068827427e-10, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-02, +1.439976958e-09, +1.454945004e-09, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-02, +4.931171162e-09, +5.006388444e-09, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-02, +1.336749762e-08, +1.362500393e-08, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-02, +2.985127508e-08, +3.053107528e-08, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-02, +5.562062711e-08, +5.712646741e-08, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-02, +8.601393272e-08, +8.879943839e-08, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-02, +1.083337530e-07, +1.125125483e-07, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-02, +1.114096581e-07, +1.162695644e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-02, +1.224159817e-07, +1.261101601e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-02, +2.812645825e-07, +2.821379312e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-02, +9.352103649e-07, +9.366000197e-07, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-02, +2.681510288e-06, +2.701397407e-06, +0.000000000e+00, +0.000000000e+00 - 1.000000000e-01, +6.231637746e-06, +6.316047208e-06, +0.000000000e+00, +0.000000000e+00 - 1.050000000e-01, +1.198909448e-05, +1.222067965e-05, +0.000000000e+00, +0.000000000e+00 - 1.100000000e-01, +1.941101090e-05, +1.989808976e-05, +0.000000000e+00, +0.000000000e+00 - 1.150000000e-01, +2.658602817e-05, +2.741744431e-05, +0.000000000e+00, +0.000000000e+00 - 1.200000000e-01, +3.084006910e-05, +3.200448516e-05, +0.000000000e+00, +0.000000000e+00 - 1.250000000e-01, +3.116938025e-05, +3.247495182e-05, +0.000000000e+00, +0.000000000e+00 - 1.300000000e-01, +3.243953094e-05, +3.351770194e-05, +0.000000000e+00, +0.000000000e+00 - 1.350000000e-01, +4.951460936e-05, +5.001117139e-05, +0.000000000e+00, +0.000000000e+00 - 1.400000000e-01, +1.076142984e-04, +1.076244444e-04, +0.000000000e+00, +0.000000000e+00 - 1.450000000e-01, +2.349993729e-04, +2.356504713e-04, +0.000000000e+00, +0.000000000e+00 - 1.500000000e-01, +4.472801363e-04, +4.511525966e-04, +0.000000000e+00, +0.000000000e+00 - 1.550000000e-01, +7.291799861e-04, +7.401192526e-04, +0.000000000e+00, +0.000000000e+00 - 1.600000000e-01, +1.026236746e-03, +1.048199560e-03, +0.000000000e+00, +0.000000000e+00 - 1.650000000e-01, +1.259875309e-03, +1.294903116e-03, +0.000000000e+00, +0.000000000e+00 - 1.700000000e-01, +1.369839073e-03, +1.415939252e-03, +0.000000000e+00, +0.000000000e+00 - 1.750000000e-01, +1.369485226e-03, +1.419736213e-03, +0.000000000e+00, +0.000000000e+00 - 1.800000000e-01, +1.381796571e-03, +1.425914301e-03, +0.000000000e+00, +0.000000000e+00 - 1.850000000e-01, +1.621678186e-03, +1.650302782e-03, +0.000000000e+00, +0.000000000e+00 - 1.900000000e-01, +2.312297688e-03, +2.322641202e-03, +0.000000000e+00, +0.000000000e+00 - 1.950000000e-01, +3.563511952e-03, +3.563619498e-03, +0.000000000e+00, +0.000000000e+00 - 2.000000000e-01, +5.275801512e-03, +5.284520535e-03, +0.000000000e+00, +0.000000000e+00 - 2.050000000e-01, +7.136188801e-03, +7.177535486e-03, +0.000000000e+00, +0.000000000e+00 - 2.100000000e-01, +8.731595807e-03, +8.825062915e-03, +0.000000000e+00, +0.000000000e+00 - 2.150000000e-01, +9.737443473e-03, +9.888385994e-03, +0.000000000e+00, +0.000000000e+00 - 2.200000000e-01, +1.008554902e-02, +1.028049080e-02, +0.000000000e+00, +0.000000000e+00 - 2.250000000e-01, +1.001406729e-02, +1.022385075e-02, +0.000000000e+00, +0.000000000e+00 - 2.300000000e-01, +9.961477273e-03, +1.015141018e-02, +0.000000000e+00, +0.000000000e+00 - 2.350000000e-01, +1.035427455e-02, +1.049684837e-02, +0.000000000e+00, +0.000000000e+00 - 2.400000000e-01, +1.140028272e-02, +1.148468019e-02, +0.000000000e+00, +0.000000000e+00 - 2.450000000e-01, +1.299654449e-02, +1.303081420e-02, +0.000000000e+00, +0.000000000e+00 - 2.500000000e-01, +1.479431837e-02, +1.479981366e-02, +0.000000000e+00, +0.000000000e+00 - 2.550000000e-01, +1.637592669e-02, +1.637727921e-02, +0.000000000e+00, +0.000000000e+00 - 2.600000000e-01, +1.744273082e-02, +1.745827281e-02, +0.000000000e+00, +0.000000000e+00 - 2.650000000e-01, +1.792000725e-02, +1.795652360e-02, +0.000000000e+00, +0.000000000e+00 - 2.700000000e-01, +1.794180838e-02, +1.799471325e-02, +0.000000000e+00, +0.000000000e+00 - 2.750000000e-01, +1.774677843e-02, +1.780407365e-02, +0.000000000e+00, +0.000000000e+00 - 2.800000000e-01, +1.755419256e-02, +1.760147000e-02, +0.000000000e+00, +0.000000000e+00 - 2.850000000e-01, +1.748280210e-02, +1.750754851e-02, +0.000000000e+00, +0.000000000e+00 - 2.900000000e-01, +1.753735136e-02, +1.753295516e-02, +0.000000000e+00, +0.000000000e+00 - 2.950000000e-01, +1.764747642e-02, +1.761870358e-02, +0.000000000e+00, +0.000000000e+00 - 3.000000000e-01, +1.772384036e-02, +1.769418265e-02, +0.000000000e+00, +0.000000000e+00 - 3.050000000e-01, +1.770163455e-02, +1.771820738e-02, +0.000000000e+00, +0.000000000e+00 - 3.100000000e-01, +1.756068127e-02, +1.768644462e-02, +0.000000000e+00, +0.000000000e+00 - 3.150000000e-01, +1.732785065e-02, +1.760935591e-02, +0.000000000e+00, +0.000000000e+00 - 3.200000000e-01, +1.707098826e-02, +1.747952341e-02, +0.000000000e+00, +0.000000000e+00 - 3.250000000e-01, +1.688513061e-02, +1.725290711e-02, +0.000000000e+00, +0.000000000e+00 - 3.300000000e-01, +1.686211596e-02, +1.686459986e-02, +0.000000000e+00, +0.000000000e+00 - 3.350000000e-01, +1.703673143e-02, +1.628462627e-02, +0.000000000e+00, +0.000000000e+00 - 3.400000000e-01, +1.732216215e-02, +1.559339428e-02, +0.000000000e+00, +0.000000000e+00 - 3.450000000e-01, +1.747607693e-02, +1.502775939e-02, +0.000000000e+00, +0.000000000e+00 - 3.500000000e-01, +1.715292311e-02, +1.493702957e-02, +0.000000000e+00, +0.000000000e+00 - 3.550000000e-01, +1.607193770e-02, +1.561675816e-02, +0.000000000e+00, +0.000000000e+00 - 3.600000000e-01, +1.425732934e-02, +1.706303868e-02, +0.000000000e+00, +0.000000000e+00 - 3.650000000e-01, +1.221868516e-02, +1.878062245e-02, +0.000000000e+00, +0.000000000e+00 - 3.700000000e-01, +1.090198222e-02, +1.981899481e-02, +0.000000000e+00, +0.000000000e+00 - 3.750000000e-01, +1.131704946e-02, +1.913786218e-02, +0.000000000e+00, +0.000000000e+00 - 3.800000000e-01, +1.393733717e-02, +1.621324758e-02, +0.000000000e+00, +0.000000000e+00 - 3.850000000e-01, +1.817878510e-02, +1.157928584e-02, +0.000000000e+00, +0.000000000e+00 - 3.900000000e-01, +2.234078358e-02, +6.915718021e-03, +0.000000000e+00, +0.000000000e+00 - 3.950000000e-01, +2.421866038e-02, +4.456892791e-03, +0.000000000e+00, +0.000000000e+00 - 4.000000000e-01, +2.221089322e-02, +5.883751791e-03, +0.000000000e+00, +0.000000000e+00 - 4.050000000e-01, +1.636047511e-02, +1.125355726e-02, +0.000000000e+00, +0.000000000e+00 - 4.100000000e-01, +8.668558606e-03, +1.863939940e-02, +0.000000000e+00, +0.000000000e+00 - 4.150000000e-01, +2.343723605e-03, +2.483949142e-02, +0.000000000e+00, +0.000000000e+00 - 4.200000000e-01, +2.648431248e-04, +2.690256493e-02, +0.000000000e+00, +0.000000000e+00 - 4.250000000e-01, +3.465464951e-03, +2.367161489e-02, +0.000000000e+00, +0.000000000e+00 - 4.300000000e-01, +1.051961265e-02, +1.645413827e-02, +0.000000000e+00, +0.000000000e+00 - 4.350000000e-01, +1.822570483e-02, +8.393417891e-03, +0.000000000e+00, +0.000000000e+00 - 4.400000000e-01, +2.322624516e-02, +2.873951328e-03, +0.000000000e+00, +0.000000000e+00 - 4.450000000e-01, +2.365027947e-02, +1.861502579e-03, +0.000000000e+00, +0.000000000e+00 - 4.500000000e-01, +1.987926378e-02, +5.088380196e-03, +0.000000000e+00, +0.000000000e+00 - 4.550000000e-01, +1.409293518e-02, +1.045484449e-02, +0.000000000e+00, +0.000000000e+00 - 4.600000000e-01, +8.972232607e-03, +1.529653717e-02, +0.000000000e+00, +0.000000000e+00 - 4.650000000e-01, +6.361439578e-03, +1.772713533e-02, +0.000000000e+00, +0.000000000e+00 - 4.700000000e-01, +6.594517180e-03, +1.734288020e-02, +0.000000000e+00, +0.000000000e+00 - 4.750000000e-01, +8.703009867e-03, +1.505127177e-02, +0.000000000e+00, +0.000000000e+00 - 4.800000000e-01, +1.120191118e-02, +1.230855781e-02, +0.000000000e+00, +0.000000000e+00 - 4.850000000e-01, +1.291036359e-02, +1.030139719e-02, +0.000000000e+00, +0.000000000e+00 - 4.900000000e-01, +1.338467804e-02, +9.500088523e-03, +0.000000000e+00, +0.000000000e+00 - 4.950000000e-01, +1.286391478e-02, +9.694639813e-03, +0.000000000e+00, +0.000000000e+00 - 5.000000000e-01, +1.191323588e-02, +1.033859374e-02, +0.000000000e+00, +0.000000000e+00 - 5.050000000e-01, +1.104598480e-02, +1.092346956e-02, +0.000000000e+00, +0.000000000e+00 - 5.100000000e-01, +1.051750922e-02, +1.118841306e-02, +0.000000000e+00, +0.000000000e+00 - 5.150000000e-01, +1.032356197e-02, +1.112716155e-02, +0.000000000e+00, +0.000000000e+00 - 5.200000000e-01, +1.031900044e-02, +1.087280744e-02, +0.000000000e+00, +0.000000000e+00 - 5.250000000e-01, +1.034695624e-02, +1.056965116e-02, +0.000000000e+00, +0.000000000e+00 - 5.300000000e-01, +1.031194749e-02, +1.030086439e-02, +0.000000000e+00, +0.000000000e+00 - 5.350000000e-01, +1.018963297e-02, +1.008194095e-02, +0.000000000e+00, +0.000000000e+00 - 5.400000000e-01, +1.000135339e-02, +9.892368707e-03, +0.000000000e+00, +0.000000000e+00 - 5.450000000e-01, +9.784486883e-03, +9.711463637e-03, +0.000000000e+00, +0.000000000e+00 - 5.500000000e-01, +9.573798507e-03, +9.537214510e-03, +0.000000000e+00, +0.000000000e+00 - 5.550000000e-01, +9.392807642e-03, +9.383469907e-03, +0.000000000e+00, +0.000000000e+00 - 5.600000000e-01, +9.248073165e-03, +9.262119271e-03, +0.000000000e+00, +0.000000000e+00 - 5.650000000e-01, +9.123021210e-03, +9.162128636e-03, +0.000000000e+00, +0.000000000e+00 - 5.700000000e-01, +8.975084957e-03, +9.038146854e-03, +0.000000000e+00, +0.000000000e+00 - 5.750000000e-01, +8.743473340e-03, +8.818280187e-03, +0.000000000e+00, +0.000000000e+00 - 5.800000000e-01, +8.371216258e-03, +8.432734674e-03, +0.000000000e+00, +0.000000000e+00 - 5.850000000e-01, +7.835693272e-03, +7.853428679e-03, +0.000000000e+00, +0.000000000e+00 - 5.900000000e-01, +7.172497219e-03, +7.124504406e-03, +0.000000000e+00, +0.000000000e+00 - 5.950000000e-01, +6.475447979e-03, +6.362356009e-03, +0.000000000e+00, +0.000000000e+00 - 6.000000000e-01, +5.864849137e-03, +5.715830010e-03, +0.000000000e+00, +0.000000000e+00 - 6.050000000e-01, +5.433671357e-03, +5.299087978e-03, +0.000000000e+00, +0.000000000e+00 - 6.100000000e-01, +5.197468252e-03, +5.129410162e-03, +0.000000000e+00, +0.000000000e+00 - 6.150000000e-01, +5.077202785e-03, +5.106158823e-03, +0.000000000e+00, +0.000000000e+00 - 6.200000000e-01, +4.929759807e-03, +5.049076337e-03, +0.000000000e+00, +0.000000000e+00 - 6.250000000e-01, +4.614953879e-03, +4.781820798e-03, +0.000000000e+00, +0.000000000e+00 - 6.300000000e-01, +4.065453400e-03, +4.218925385e-03, +0.000000000e+00, +0.000000000e+00 - 6.350000000e-01, +3.321976548e-03, +3.409447114e-03, +0.000000000e+00, +0.000000000e+00 - 6.400000000e-01, +2.514358764e-03, +2.513321969e-03, +0.000000000e+00, +0.000000000e+00 - 6.450000000e-01, +1.799257573e-03, +1.723920340e-03, +0.000000000e+00, +0.000000000e+00 - 6.500000000e-01, +1.288922182e-03, +1.179616437e-03, +0.000000000e+00, +0.000000000e+00 - 6.550000000e-01, +1.008298071e-03, +9.106261224e-04, +0.000000000e+00, +0.000000000e+00 - 6.600000000e-01, +8.990338949e-04, +8.440947075e-04, +0.000000000e+00, +0.000000000e+00 - 6.650000000e-01, +8.615907150e-04, +8.564444980e-04, +0.000000000e+00, +0.000000000e+00 - 6.700000000e-01, +8.077812289e-04, +8.385986082e-04, +0.000000000e+00, +0.000000000e+00 - 6.750000000e-01, +6.955786241e-04, +7.391303591e-04, +0.000000000e+00, +0.000000000e+00 - 6.800000000e-01, +5.331767100e-04, +5.692065191e-04, +0.000000000e+00, +0.000000000e+00 - 6.850000000e-01, +3.583467518e-04, +3.768544914e-04, +0.000000000e+00, +0.000000000e+00 - 6.900000000e-01, +2.103464980e-04, +2.119867829e-04, +0.000000000e+00, +0.000000000e+00 - 6.950000000e-01, +1.105118481e-04, +1.022163451e-04, +0.000000000e+00, +0.000000000e+00 - 7.000000000e-01, +5.816734218e-05, +4.771136942e-05, +0.000000000e+00, +0.000000000e+00 - 7.050000000e-01, +3.842410848e-05, +3.083713846e-05, +0.000000000e+00, +0.000000000e+00 - 7.100000000e-01, +3.358657835e-05, +3.030941478e-05, +0.000000000e+00, +0.000000000e+00 - 7.150000000e-01, +3.119196881e-05, +3.119244240e-05, +0.000000000e+00, +0.000000000e+00 - 7.200000000e-01, +2.621771686e-05, +2.766748660e-05, +0.000000000e+00, +0.000000000e+00 - 7.250000000e-01, +1.898139954e-05, +2.045192231e-05, +0.000000000e+00, +0.000000000e+00 - 7.300000000e-01, +1.174547974e-05, +1.260366338e-05, +0.000000000e+00, +0.000000000e+00 - 7.350000000e-01, +6.282975258e-06, +6.513443002e-06, +0.000000000e+00, +0.000000000e+00 - 7.400000000e-01, +3.073129614e-06, +2.919838482e-06, +0.000000000e+00, +0.000000000e+00 - 7.450000000e-01, +1.631996061e-06, +1.334507558e-06, +0.000000000e+00, +0.000000000e+00 - 7.500000000e-01, +1.172609455e-06, +8.748577621e-07, +0.000000000e+00, +0.000000000e+00 - 7.550000000e-01, +1.066966607e-06, +8.430311813e-07, +0.000000000e+00, +0.000000000e+00 - 7.600000000e-01, +9.859570273e-07, +8.934205808e-07, +0.000000000e+00, +0.000000000e+00 - 7.650000000e-01, +8.350443405e-07, +9.367642561e-07, +0.000000000e+00, +0.000000000e+00 - 7.700000000e-01, +6.396481236e-07, +9.812152759e-07, +0.000000000e+00, +0.000000000e+00 - 7.750000000e-01, +4.632216136e-07, +1.027302605e-06, +0.000000000e+00, +0.000000000e+00 - 7.800000000e-01, +3.675987312e-07, +1.039850236e-06, +0.000000000e+00, +0.000000000e+00 - 7.850000000e-01, +3.939834184e-07, +9.701974674e-07, +0.000000000e+00, +0.000000000e+00 - 7.900000000e-01, +5.481632918e-07, +7.930783186e-07, +0.000000000e+00, +0.000000000e+00 - 7.950000000e-01, +7.904656681e-07, +5.319564764e-07, +0.000000000e+00, +0.000000000e+00 - 8.000000000e-01, +1.040248176e-06, +2.593108907e-07, +0.000000000e+00, +0.000000000e+00 - 8.050000000e-01, +1.200737810e-06, +7.069377338e-08, +0.000000000e+00, +0.000000000e+00 - 8.100000000e-01, +1.197830340e-06, +4.320731437e-08, +0.000000000e+00, +0.000000000e+00 - 8.150000000e-01, +1.015438191e-06, +1.975535841e-07, +0.000000000e+00, +0.000000000e+00 - 8.200000000e-01, +7.081609881e-07, +4.831739519e-07, +0.000000000e+00, +0.000000000e+00 - 8.250000000e-01, +3.818597930e-07, +7.960616117e-07, +0.000000000e+00, +0.000000000e+00 - 8.300000000e-01, +1.493017616e-07, +1.022440273e-06, +0.000000000e+00, +0.000000000e+00 - 8.350000000e-01, +8.194578772e-08, +1.087468561e-06, +0.000000000e+00, +0.000000000e+00 - 8.400000000e-01, +1.816808942e-07, +9.849492297e-07, +0.000000000e+00, +0.000000000e+00 - 8.450000000e-01, +3.858190834e-07, +7.740711893e-07, +0.000000000e+00, +0.000000000e+00 - 8.500000000e-01, +6.008995669e-07, +5.468304661e-07, +0.000000000e+00, +0.000000000e+00 - 8.550000000e-01, +7.463068032e-07, +3.846313009e-07, +0.000000000e+00, +0.000000000e+00 - 8.600000000e-01, +7.855349422e-07, +3.262709138e-07, +0.000000000e+00, +0.000000000e+00 - 8.650000000e-01, +7.320506670e-07, +3.608504532e-07, +0.000000000e+00, +0.000000000e+00 - 8.700000000e-01, +6.316190027e-07, +4.443856847e-07, +0.000000000e+00, +0.000000000e+00 - 8.750000000e-01, +5.344744333e-07, +5.271701423e-07, +0.000000000e+00, +0.000000000e+00 - 8.800000000e-01, +4.729598600e-07, +5.763245229e-07, +0.000000000e+00, +0.000000000e+00 - 8.850000000e-01, +4.537532756e-07, +5.841452615e-07, +0.000000000e+00, +0.000000000e+00 - 8.900000000e-01, +4.640725116e-07, +5.624888440e-07, +0.000000000e+00, +0.000000000e+00 - 8.950000000e-01, +4.844537042e-07, +5.303337663e-07, +0.000000000e+00, +0.000000000e+00 - 9.000000000e-01, +4.997776646e-07, +5.027773595e-07, +0.000000000e+00, +0.000000000e+00 - 9.050000000e-01, +5.039510729e-07, +4.861654432e-07, +0.000000000e+00, +0.000000000e+00 - 9.100000000e-01, +4.985008492e-07, +4.792528373e-07, +0.000000000e+00, +0.000000000e+00 - 9.150000000e-01, +4.882744128e-07, +4.773024922e-07, +0.000000000e+00, +0.000000000e+00 - 9.200000000e-01, +4.775716044e-07, +4.758436490e-07, +0.000000000e+00, +0.000000000e+00 - 9.250000000e-01, +4.683694073e-07, +4.724173788e-07, +0.000000000e+00, +0.000000000e+00 - 9.300000000e-01, +4.605076723e-07, +4.664470965e-07, +0.000000000e+00, +0.000000000e+00 - 9.350000000e-01, +4.528021517e-07, +4.582956136e-07, +0.000000000e+00, +0.000000000e+00 - 9.400000000e-01, +4.441150571e-07, +4.484818353e-07, +0.000000000e+00, +0.000000000e+00 - 9.450000000e-01, +4.339619655e-07, +4.374663580e-07, +0.000000000e+00, +0.000000000e+00 - 9.500000000e-01, +4.226525684e-07, +4.258459162e-07, +0.000000000e+00, +0.000000000e+00 - 9.550000000e-01, +4.111243670e-07, +4.145692085e-07, +0.000000000e+00, +0.000000000e+00 - 9.600000000e-01, +4.005832275e-07, +4.048549016e-07, +0.000000000e+00, +0.000000000e+00 - 9.650000000e-01, +3.919726493e-07, +3.976902679e-07, +0.000000000e+00, +0.000000000e+00 - 9.700000000e-01, +3.853733004e-07, +3.930868265e-07, +0.000000000e+00, +0.000000000e+00 - 9.750000000e-01, +3.795274377e-07, +3.894449373e-07, +0.000000000e+00, +0.000000000e+00 - 9.800000000e-01, +3.717765668e-07, +3.834516366e-07, +0.000000000e+00, +0.000000000e+00 - 9.850000000e-01, +3.586440635e-07, +3.708050801e-07, +0.000000000e+00, +0.000000000e+00 - 9.900000000e-01, +3.370207764e-07, +3.476966070e-07, +0.000000000e+00, +0.000000000e+00 - 9.950000000e-01, +3.055983668e-07, +3.125838034e-07, +0.000000000e+00, +0.000000000e+00 - 1.000000000e+00, +2.659047270e-07, +2.674496632e-07, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-03, +2.483779150e-13, +0.000000000e+00, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-02, +2.276378059e-12, +9.119064129e-13, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-02, +6.974949774e-12, +4.806875022e-12, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-02, +1.068852323e-11, +1.015560494e-11, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-02, +1.063816272e-11, +1.286120284e-11, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-02, +4.202730563e-11, +1.585962327e-11, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-02, +3.050624355e-10, +1.044439694e-10, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-02, +1.439976958e-09, +6.390916781e-10, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-02, +4.931171162e-09, +2.631890657e-09, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-02, +1.336749762e-08, +8.188415762e-09, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-02, +2.985127508e-08, +2.053688303e-08, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-02, +5.562062711e-08, +4.271189283e-08, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-02, +8.601393272e-08, +7.412015870e-08, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-02, +1.083337530e-07, +1.060294376e-07, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-02, +1.114096581e-07, +1.226421733e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-02, +1.224159817e-07, +1.212873002e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-02, +2.812645825e-07, +1.684965406e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-02, +9.352103649e-07, +4.950939825e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-02, +2.681510288e-06, +1.589370094e-06, +0.000000000e+00, +0.000000000e+00 + 1.000000000e-01, +6.231637746e-06, +4.183230998e-06, +0.000000000e+00, +0.000000000e+00 + 1.050000000e-01, +1.198909448e-05, +8.986281390e-06, +0.000000000e+00, +0.000000000e+00 + 1.100000000e-01, +1.941101090e-05, +1.610368517e-05, +0.000000000e+00, +0.000000000e+00 + 1.150000000e-01, +2.658602817e-05, +2.435724323e-05, +0.000000000e+00, +0.000000000e+00 + 1.200000000e-01, +3.084006910e-05, +3.116387901e-05, +0.000000000e+00, +0.000000000e+00 + 1.250000000e-01, +3.116938025e-05, +3.392348778e-05, +0.000000000e+00, +0.000000000e+00 + 1.300000000e-01, +3.243953094e-05, +3.352636044e-05, +0.000000000e+00, +0.000000000e+00 + 1.350000000e-01, +4.951460936e-05, +3.920802776e-05, +0.000000000e+00, +0.000000000e+00 + 1.400000000e-01, +1.076142984e-04, +7.185267677e-05, +0.000000000e+00, +0.000000000e+00 + 1.450000000e-01, +2.349993729e-04, +1.613364788e-04, +0.000000000e+00, +0.000000000e+00 + 1.500000000e-01, +4.472801363e-04, +3.346602038e-04, +0.000000000e+00, +0.000000000e+00 + 1.550000000e-01, +7.291799861e-04, +5.967731375e-04, +0.000000000e+00, +0.000000000e+00 + 1.600000000e-01, +1.026236746e-03, +9.136704006e-04, +0.000000000e+00, +0.000000000e+00 + 1.650000000e-01, +1.259875309e-03, +1.212651427e-03, +0.000000000e+00, +0.000000000e+00 + 1.700000000e-01, +1.369839073e-03, +1.411237978e-03, +0.000000000e+00, +0.000000000e+00 + 1.750000000e-01, +1.369485226e-03, +1.471282784e-03, +0.000000000e+00, +0.000000000e+00 + 1.800000000e-01, +1.381796571e-03, +1.453733702e-03, +0.000000000e+00, +0.000000000e+00 + 1.850000000e-01, +1.621678186e-03, +1.536019523e-03, +0.000000000e+00, +0.000000000e+00 + 1.900000000e-01, +2.312297688e-03, +1.962540617e-03, +0.000000000e+00, +0.000000000e+00 + 1.950000000e-01, +3.563511952e-03, +2.932707231e-03, +0.000000000e+00, +0.000000000e+00 + 2.000000000e-01, +5.275801512e-03, +4.475078793e-03, +0.000000000e+00, +0.000000000e+00 + 2.050000000e-01, +7.136188801e-03, +6.381512722e-03, +0.000000000e+00, +0.000000000e+00 + 2.100000000e-01, +8.731595807e-03, +8.257650879e-03, +0.000000000e+00, +0.000000000e+00 + 2.150000000e-01, +9.737443473e-03, +9.686161356e-03, +0.000000000e+00, +0.000000000e+00 + 2.200000000e-01, +1.008554902e-02, +1.042854771e-02, +0.000000000e+00, +0.000000000e+00 + 2.250000000e-01, +1.001406729e-02, +1.055597738e-02, +0.000000000e+00, +0.000000000e+00 + 2.300000000e-01, +9.961477273e-03, +1.042846065e-02, +0.000000000e+00, +0.000000000e+00 + 2.350000000e-01, +1.035427455e-02, +1.052361868e-02, +0.000000000e+00, +0.000000000e+00 + 2.400000000e-01, +1.140028272e-02, +1.120293174e-02, +0.000000000e+00, +0.000000000e+00 + 2.450000000e-01, +1.299654449e-02, +1.254018703e-02, +0.000000000e+00, +0.000000000e+00 + 2.500000000e-01, +1.479431837e-02, +1.430014200e-02, +0.000000000e+00, +0.000000000e+00 + 2.550000000e-01, +1.637592669e-02, +1.606883709e-02, +0.000000000e+00, +0.000000000e+00 + 2.600000000e-01, +1.744273082e-02, +1.745505273e-02, +0.000000000e+00, +0.000000000e+00 + 2.650000000e-01, +1.792000725e-02, +1.825338503e-02, +0.000000000e+00, +0.000000000e+00 + 2.700000000e-01, +1.794180838e-02, +1.849469085e-02, +0.000000000e+00, +0.000000000e+00 + 2.750000000e-01, +1.774677843e-02, +1.838020114e-02, +0.000000000e+00, +0.000000000e+00 + 2.800000000e-01, +1.755419256e-02, +1.815561484e-02, +0.000000000e+00, +0.000000000e+00 + 2.850000000e-01, +1.748280210e-02, +1.799930694e-02, +0.000000000e+00, +0.000000000e+00 + 2.900000000e-01, +1.753735136e-02, +1.797359133e-02, +0.000000000e+00, +0.000000000e+00 + 2.950000000e-01, +1.764747642e-02, +1.804373941e-02, +0.000000000e+00, +0.000000000e+00 + 3.000000000e-01, +1.772384036e-02, +1.813476841e-02, +0.000000000e+00, +0.000000000e+00 + 3.050000000e-01, +1.770163455e-02, +1.818619381e-02, +0.000000000e+00, +0.000000000e+00 + 3.100000000e-01, +1.756068127e-02, +1.817734794e-02, +0.000000000e+00, +0.000000000e+00 + 3.150000000e-01, +1.732785065e-02, +1.811756595e-02, +0.000000000e+00, +0.000000000e+00 + 3.200000000e-01, +1.707098826e-02, +1.801436229e-02, +0.000000000e+00, +0.000000000e+00 + 3.250000000e-01, +1.688513061e-02, +1.784307470e-02, +0.000000000e+00, +0.000000000e+00 + 3.300000000e-01, +1.686211596e-02, +1.754244452e-02, +0.000000000e+00, +0.000000000e+00 + 3.350000000e-01, +1.703673143e-02, +1.705142105e-02, +0.000000000e+00, +0.000000000e+00 + 3.400000000e-01, +1.732216215e-02, +1.638149241e-02, +0.000000000e+00, +0.000000000e+00 + 3.450000000e-01, +1.747607693e-02, +1.568889650e-02, +0.000000000e+00, +0.000000000e+00 + 3.500000000e-01, +1.715292311e-02, +1.528630548e-02, +0.000000000e+00, +0.000000000e+00 + 3.550000000e-01, +1.607193770e-02, +1.553832150e-02, +0.000000000e+00, +0.000000000e+00 + 3.600000000e-01, +1.425732934e-02, +1.663856477e-02, +0.000000000e+00, +0.000000000e+00 + 3.650000000e-01, +1.221868516e-02, +1.835861447e-02, +0.000000000e+00, +0.000000000e+00 + 3.700000000e-01, +1.090198222e-02, +1.993899975e-02, +0.000000000e+00, +0.000000000e+00 + 3.750000000e-01, +1.131704946e-02, +2.028514720e-02, +0.000000000e+00, +0.000000000e+00 + 3.800000000e-01, +1.393733717e-02, +1.849190846e-02, +0.000000000e+00, +0.000000000e+00 + 3.850000000e-01, +1.817878510e-02, +1.449098288e-02, +0.000000000e+00, +0.000000000e+00 + 3.900000000e-01, +2.234078358e-02, +9.434008621e-03, +0.000000000e+00, +0.000000000e+00 + 3.950000000e-01, +2.421866038e-02, +5.452489763e-03, +0.000000000e+00, +0.000000000e+00 + 4.000000000e-01, +2.221089322e-02, +4.735715297e-03, +0.000000000e+00, +0.000000000e+00 + 4.050000000e-01, +1.636047511e-02, +8.310808300e-03, +0.000000000e+00, +0.000000000e+00 + 4.100000000e-01, +8.668558606e-03, +1.521362280e-02, +0.000000000e+00, +0.000000000e+00 + 4.150000000e-01, +2.343723605e-03, +2.264727104e-02, +0.000000000e+00, +0.000000000e+00 + 4.200000000e-01, +2.648431248e-04, +2.720943456e-02, +0.000000000e+00, +0.000000000e+00 + 4.250000000e-01, +3.465464951e-03, +2.660835326e-02, +0.000000000e+00, +0.000000000e+00 + 4.300000000e-01, +1.051961265e-02, +2.091302456e-02, +0.000000000e+00, +0.000000000e+00 + 4.350000000e-01, +1.822570483e-02, +1.258512565e-02, +0.000000000e+00, +0.000000000e+00 + 4.400000000e-01, +2.322624516e-02, +5.234606909e-03, +0.000000000e+00, +0.000000000e+00 + 4.450000000e-01, +2.365027947e-02, +1.797269353e-03, +0.000000000e+00, +0.000000000e+00 + 4.500000000e-01, +1.987926378e-02, +3.160716324e-03, +0.000000000e+00, +0.000000000e+00 + 4.550000000e-01, +1.409293518e-02, +7.958404241e-03, +0.000000000e+00, +0.000000000e+00 + 4.600000000e-01, +8.972232607e-03, +1.352962337e-02, +0.000000000e+00, +0.000000000e+00 + 4.650000000e-01, +6.361439578e-03, +1.738642698e-02, +0.000000000e+00, +0.000000000e+00 + 4.700000000e-01, +6.594517180e-03, +1.833598761e-02, +0.000000000e+00, +0.000000000e+00 + 4.750000000e-01, +8.703009867e-03, +1.673697284e-02, +0.000000000e+00, +0.000000000e+00 + 4.800000000e-01, +1.120191118e-02, +1.394104188e-02, +0.000000000e+00, +0.000000000e+00 + 4.850000000e-01, +1.291036359e-02, +1.139951170e-02, +0.000000000e+00, +0.000000000e+00 + 4.900000000e-01, +1.338467804e-02, +9.976912465e-03, +0.000000000e+00, +0.000000000e+00 + 4.950000000e-01, +1.286391478e-02, +9.757078255e-03, +0.000000000e+00, +0.000000000e+00 + 5.000000000e-01, +1.191323588e-02, +1.028399217e-02, +0.000000000e+00, +0.000000000e+00 + 5.050000000e-01, +1.104598480e-02, +1.097079107e-02, +0.000000000e+00, +0.000000000e+00 + 5.100000000e-01, +1.051750922e-02, +1.141403337e-02, +0.000000000e+00, +0.000000000e+00 + 5.150000000e-01, +1.032356197e-02, +1.149479439e-02, +0.000000000e+00, +0.000000000e+00 + 5.200000000e-01, +1.031900044e-02, +1.130315120e-02, +0.000000000e+00, +0.000000000e+00 + 5.250000000e-01, +1.034695624e-02, +1.099804164e-02, +0.000000000e+00, +0.000000000e+00 + 5.300000000e-01, +1.031194749e-02, +1.069993904e-02, +0.000000000e+00, +0.000000000e+00 + 5.350000000e-01, +1.018963297e-02, +1.045433390e-02, +0.000000000e+00, +0.000000000e+00 + 5.400000000e-01, +1.000135339e-02, +1.025116943e-02, +0.000000000e+00, +0.000000000e+00 + 5.450000000e-01, +9.784486883e-03, +1.006418959e-02, +0.000000000e+00, +0.000000000e+00 + 5.500000000e-01, +9.573798507e-03, +9.880589692e-03, +0.000000000e+00, +0.000000000e+00 + 5.550000000e-01, +9.392807642e-03, +9.708576259e-03, +0.000000000e+00, +0.000000000e+00 + 5.600000000e-01, +9.248073165e-03, +9.565104090e-03, +0.000000000e+00, +0.000000000e+00 + 5.650000000e-01, +9.123021210e-03, +9.454023260e-03, +0.000000000e+00, +0.000000000e+00 + 5.700000000e-01, +8.975084957e-03, +9.347623700e-03, +0.000000000e+00, +0.000000000e+00 + 5.750000000e-01, +8.743473340e-03, +9.183570153e-03, +0.000000000e+00, +0.000000000e+00 + 5.800000000e-01, +8.371216258e-03, +8.883821937e-03, +0.000000000e+00, +0.000000000e+00 + 5.850000000e-01, +7.835693272e-03, +8.391815341e-03, +0.000000000e+00, +0.000000000e+00 + 5.900000000e-01, +7.172497219e-03, +7.711952160e-03, +0.000000000e+00, +0.000000000e+00 + 5.950000000e-01, +6.475447979e-03, +6.928320626e-03, +0.000000000e+00, +0.000000000e+00 + 6.000000000e-01, +5.864849137e-03, +6.184713988e-03, +0.000000000e+00, +0.000000000e+00 + 6.050000000e-01, +5.433671357e-03, +5.626536175e-03, +0.000000000e+00, +0.000000000e+00 + 6.100000000e-01, +5.197468252e-03, +5.328786439e-03, +0.000000000e+00, +0.000000000e+00 + 6.150000000e-01, +5.077202786e-03, +5.248441534e-03, +0.000000000e+00, +0.000000000e+00 + 6.200000000e-01, +4.929759807e-03, +5.232445641e-03, +0.000000000e+00, +0.000000000e+00 + 6.250000000e-01, +4.614953879e-03, +5.084525383e-03, +0.000000000e+00, +0.000000000e+00 + 6.300000000e-01, +4.065453400e-03, +4.659976966e-03, +0.000000000e+00, +0.000000000e+00 + 6.350000000e-01, +3.321976548e-03, +3.938649725e-03, +0.000000000e+00, +0.000000000e+00 + 6.400000000e-01, +2.514358764e-03, +3.036100985e-03, +0.000000000e+00, +0.000000000e+00 + 6.450000000e-01, +1.799257573e-03, +2.146933481e-03, +0.000000000e+00, +0.000000000e+00 + 6.500000000e-01, +1.288922182e-03, +1.452196600e-03, +0.000000000e+00, +0.000000000e+00 + 6.550000000e-01, +1.008298071e-03, +1.041152310e-03, +0.000000000e+00, +0.000000000e+00 + 6.600000000e-01, +8.990338949e-04, +8.860882689e-04, +0.000000000e+00, +0.000000000e+00 + 6.650000000e-01, +8.615907150e-04, +8.760986721e-04, +0.000000000e+00, +0.000000000e+00 + 6.700000000e-01, +8.077812289e-04, +8.834059633e-04, +0.000000000e+00, +0.000000000e+00 + 6.750000000e-01, +6.955786241e-04, +8.229419077e-04, +0.000000000e+00, +0.000000000e+00 + 6.800000000e-01, +5.331767099e-04, +6.771000872e-04, +0.000000000e+00, +0.000000000e+00 + 6.850000000e-01, +3.583467518e-04, +4.820354935e-04, +0.000000000e+00, +0.000000000e+00 + 6.900000000e-01, +2.103464980e-04, +2.928168090e-04, +0.000000000e+00, +0.000000000e+00 + 6.950000000e-01, +1.105118481e-04, +1.509398829e-04, +0.000000000e+00, +0.000000000e+00 + 7.000000000e-01, +5.816734218e-05, +6.943158293e-05, +0.000000000e+00, +0.000000000e+00 + 7.050000000e-01, +3.842410849e-05, +3.679514107e-05, +0.000000000e+00, +0.000000000e+00 + 7.100000000e-01, +3.358657835e-05, +3.095489756e-05, +0.000000000e+00, +0.000000000e+00 + 7.150000000e-01, +3.119196882e-05, +3.250642938e-05, +0.000000000e+00, +0.000000000e+00 + 7.200000000e-01, +2.621771687e-05, +3.112130030e-05, +0.000000000e+00, +0.000000000e+00 + 7.250000000e-01, +1.898139954e-05, +2.497893056e-05, +0.000000000e+00, +0.000000000e+00 + 7.300000000e-01, +1.174547974e-05, +1.668058504e-05, +0.000000000e+00, +0.000000000e+00 + 7.350000000e-01, +6.282975259e-06, +9.297280583e-06, +0.000000000e+00, +0.000000000e+00 + 7.400000000e-01, +3.073129614e-06, +4.388563217e-06, +0.000000000e+00, +0.000000000e+00 + 7.450000000e-01, +1.631996061e-06, +1.911961812e-06, +0.000000000e+00, +0.000000000e+00 + 7.500000000e-01, +1.172609455e-06, +1.024138136e-06, +0.000000000e+00, +0.000000000e+00 + 7.550000000e-01, +1.066966607e-06, +8.597397867e-07, +0.000000000e+00, +0.000000000e+00 + 7.600000000e-01, +9.859570271e-07, +8.941278266e-07, +0.000000000e+00, +0.000000000e+00 + 7.650000000e-01, +8.350443403e-07, +9.375708368e-07, +0.000000000e+00, +0.000000000e+00 + 7.700000000e-01, +6.396481235e-07, +9.750509477e-07, +0.000000000e+00, +0.000000000e+00 + 7.750000000e-01, +4.632216135e-07, +1.021956341e-06, +0.000000000e+00, +0.000000000e+00 + 7.800000000e-01, +3.675987311e-07, +1.059500660e-06, +0.000000000e+00, +0.000000000e+00 + 7.850000000e-01, +3.939834183e-07, +1.038627708e-06, +0.000000000e+00, +0.000000000e+00 + 7.900000000e-01, +5.481632917e-07, +9.155750297e-07, +0.000000000e+00, +0.000000000e+00 + 7.950000000e-01, +7.904656681e-07, +6.866412611e-07, +0.000000000e+00, +0.000000000e+00 + 8.000000000e-01, +1.040248176e-06, +4.023345742e-07, +0.000000000e+00, +0.000000000e+00 + 8.050000000e-01, +1.200737810e-06, +1.535947622e-07, +0.000000000e+00, +0.000000000e+00 + 8.100000000e-01, +1.197830340e-06, +3.502871606e-08, +0.000000000e+00, +0.000000000e+00 + 8.150000000e-01, +1.015438191e-06, +1.011353373e-07, +0.000000000e+00, +0.000000000e+00 + 8.200000000e-01, +7.081609882e-07, +3.367844092e-07, +0.000000000e+00, +0.000000000e+00 + 8.250000000e-01, +3.818597930e-07, +6.583232813e-07, +0.000000000e+00, +0.000000000e+00 + 8.300000000e-01, +1.493017616e-07, +9.472036645e-07, +0.000000000e+00, +0.000000000e+00 + 8.350000000e-01, +8.194578766e-08, +1.100919869e-06, +0.000000000e+00, +0.000000000e+00 + 8.400000000e-01, +1.816808941e-07, +1.076247257e-06, +0.000000000e+00, +0.000000000e+00 + 8.450000000e-01, +3.858190834e-07, +9.035438252e-07, +0.000000000e+00, +0.000000000e+00 + 8.500000000e-01, +6.008995669e-07, +6.664370464e-07, +0.000000000e+00, +0.000000000e+00 + 8.550000000e-01, +7.463068032e-07, +4.594857955e-07, +0.000000000e+00, +0.000000000e+00 + 8.600000000e-01, +7.855349422e-07, +3.467098524e-07, +0.000000000e+00, +0.000000000e+00 + 8.650000000e-01, +7.320506670e-07, +3.408258398e-07, +0.000000000e+00, +0.000000000e+00 + 8.700000000e-01, +6.316190027e-07, +4.096233545e-07, +0.000000000e+00, +0.000000000e+00 + 8.750000000e-01, +5.344744333e-07, +5.010317845e-07, +0.000000000e+00, +0.000000000e+00 + 8.800000000e-01, +4.729598600e-07, +5.706826419e-07, +0.000000000e+00, +0.000000000e+00 + 8.850000000e-01, +4.537532755e-07, +5.982174224e-07, +0.000000000e+00, +0.000000000e+00 + 8.900000000e-01, +4.640725116e-07, +5.877576029e-07, +0.000000000e+00, +0.000000000e+00 + 8.950000000e-01, +4.844537042e-07, +5.571979348e-07, +0.000000000e+00, +0.000000000e+00 + 9.000000000e-01, +4.997776646e-07, +5.251490436e-07, +0.000000000e+00, +0.000000000e+00 + 9.050000000e-01, +5.039510729e-07, +5.025929464e-07, +0.000000000e+00, +0.000000000e+00 + 9.100000000e-01, +4.985008492e-07, +4.914396023e-07, +0.000000000e+00, +0.000000000e+00 + 9.150000000e-01, +4.882744128e-07, +4.878562338e-07, +0.000000000e+00, +0.000000000e+00 + 9.200000000e-01, +4.775716044e-07, +4.866967575e-07, +0.000000000e+00, +0.000000000e+00 + 9.250000000e-01, +4.683694073e-07, +4.843775656e-07, +0.000000000e+00, +0.000000000e+00 + 9.300000000e-01, +4.605076723e-07, +4.795259496e-07, +0.000000000e+00, +0.000000000e+00 + 9.350000000e-01, +4.528021517e-07, +4.722244768e-07, +0.000000000e+00, +0.000000000e+00 + 9.400000000e-01, +4.441150570e-07, +4.630083760e-07, +0.000000000e+00, +0.000000000e+00 + 9.450000000e-01, +4.339619655e-07, +4.523512185e-07, +0.000000000e+00, +0.000000000e+00 + 9.500000000e-01, +4.226525683e-07, +4.407273791e-07, +0.000000000e+00, +0.000000000e+00 + 9.550000000e-01, +4.111243669e-07, +4.288834327e-07, +0.000000000e+00, +0.000000000e+00 + 9.600000000e-01, +4.005832274e-07, +4.179566770e-07, +0.000000000e+00, +0.000000000e+00 + 9.650000000e-01, +3.919726492e-07, +4.091779187e-07, +0.000000000e+00, +0.000000000e+00 + 9.700000000e-01, +3.853733003e-07, +4.031872215e-07, +0.000000000e+00, +0.000000000e+00 + 9.750000000e-01, +3.795274376e-07, +3.992731822e-07, +0.000000000e+00, +0.000000000e+00 + 9.800000000e-01, +3.717765667e-07, +3.949206093e-07, +0.000000000e+00, +0.000000000e+00 + 9.850000000e-01, +3.586440634e-07, +3.860990503e-07, +0.000000000e+00, +0.000000000e+00 + 9.900000000e-01, +3.370207764e-07, +3.684139848e-07, +0.000000000e+00, +0.000000000e+00 + 9.950000000e-01, +3.055983668e-07, +3.388671364e-07, +0.000000000e+00, +0.000000000e+00 + 1.000000000e+00, +2.659047270e-07, +2.975409472e-07, +0.000000000e+00, +0.000000000e+00 diff --git a/test/examples/ref/coaxial/open/error-indicators.csv b/test/examples/ref/coaxial/open/error-indicators.csv index a25dc337e..ff5b4d801 100644 --- a/test/examples/ref/coaxial/open/error-indicators.csv +++ b/test/examples/ref/coaxial/open/error-indicators.csv @@ -1,2 +1,2 @@ Norm, Minimum, Maximum, Mean - +9.669705923e-03, +3.071587403e-04, +3.000808140e-03, +5.440953971e-04 + +1.195616165e-02, +3.071777447e-04, +3.899267150e-03, +5.995848415e-04 diff --git a/test/examples/ref/coaxial/open/port-I.csv b/test/examples/ref/coaxial/open/port-I.csv index 3db214067..9d7135746 100644 --- a/test/examples/ref/coaxial/open/port-I.csv +++ b/test/examples/ref/coaxial/open/port-I.csv @@ -1,202 +1,202 @@ t (ns), I_inc[1] (A), I[1] (A) 0.000000000e+00, -5.666088695e-06, +0.000000000e+00 - 5.000000000e-03, -8.409123651e-06, -2.279465662e-06 - 1.000000000e-02, -1.105147275e-05, -6.104854862e-06 - 1.500000000e-02, -1.228163970e-05, -7.036201019e-06 - 2.000000000e-02, -9.778049726e-06, -4.567147137e-06 - 2.500000000e-02, -6.103350322e-20, +4.433594715e-06 - 3.000000000e-02, +2.176144987e-05, +2.603404286e-05 - 3.500000000e-02, +6.083135968e-05, +6.501699663e-05 - 4.000000000e-02, +1.218223334e-04, +1.262776913e-04 - 4.500000000e-02, +2.062970799e-04, +2.118296913e-04 - 5.000000000e-02, +3.093579607e-04, +3.173618809e-04 - 5.500000000e-02, +4.154313032e-04, +4.272823161e-04 - 6.000000000e-02, +4.940139224e-04, +5.111171470e-04 - 6.500000000e-02, +4.967592192e-04, +5.206886081e-04 - 7.000000000e-02, +3.578593563e-04, +3.886785355e-04 - 7.500000000e-02, -5.771941699e-19, +3.582147265e-05 - 8.000000000e-02, -6.520622610e-04, -6.153389310e-04 - 8.500000000e-02, -1.649298690e-03, -1.619463514e-03 - 9.000000000e-02, -2.988610073e-03, -2.976954811e-03 - 9.500000000e-02, -4.579372529e-03, -4.599372030e-03 - 1.000000000e-01, -6.213620742e-03, -6.279384829e-03 - 1.050000000e-01, -7.550108895e-03, -7.673257929e-03 - 1.100000000e-01, -8.123884454e-03, -8.308949454e-03 - 1.150000000e-01, -7.391643913e-03, -7.631639645e-03 - 1.200000000e-01, -4.818124626e-03, -5.091253532e-03 - 1.250000000e-01, +4.687776326e-18, -2.676010971e-04 - 1.300000000e-01, +7.187797314e-03, +6.979916447e-03 - 1.350000000e-01, +1.645040606e-02, +1.636584859e-02 - 1.400000000e-01, +2.697224625e-02, +2.707472498e-02 - 1.450000000e-01, +3.739593417e-02, +3.773684453e-02 - 1.500000000e-01, +4.591279224e-02, +4.651714030e-02 - 1.550000000e-01, +5.047923110e-02, +5.133402751e-02 - 1.600000000e-01, +4.914663699e-02, +5.019442015e-02 - 1.650000000e-01, +4.046146992e-02, +4.160106921e-02 - 1.700000000e-01, +2.386432750e-02, +2.496072306e-02 - 1.750000000e-01, -4.859694655e-17, +9.027416975e-04 - 1.800000000e-01, -2.914795543e-02, -2.858089172e-02 - 1.850000000e-01, -6.036142013e-02, -6.023860350e-02 - 1.900000000e-01, -8.955101123e-02, -8.992623717e-02 - 1.950000000e-01, -1.123435949e-01, -1.132034053e-01 - 2.000000000e-01, -1.248039088e-01, -1.260674341e-01 - 2.050000000e-01, -1.241588739e-01, -1.256901005e-01 - 2.100000000e-01, -1.093778521e-01, -1.110084115e-01 - 2.150000000e-01, -8.147939460e-02, -8.303731511e-02 - 2.200000000e-01, -4.348363979e-02, -4.482170606e-02 - 2.250000000e-01, +2.632536371e-16, -1.017952044e-03 - 2.300000000e-01, +4.348363979e-02, +4.282753850e-02 - 2.350000000e-01, +8.147939460e-02, +8.116905378e-02 - 2.400000000e-01, +1.093778521e-01, +1.093513159e-01 - 2.450000000e-01, +1.241588739e-01, +1.243278841e-01 - 2.500000000e-01, +1.248039088e-01, +1.250757389e-01 - 2.550000000e-01, +1.123435949e-01, +1.126400748e-01 - 2.600000000e-01, +8.955101123e-02, +8.982093901e-02 - 2.650000000e-01, +6.036142013e-02, +6.058437068e-02 - 2.700000000e-01, +2.914795543e-02, +2.933003651e-02 - 2.750000000e-01, +4.859694655e-17, +1.640427998e-04 - 2.800000000e-01, -2.386432750e-02, -2.369071496e-02 - 2.850000000e-01, -4.046146992e-02, -4.025665607e-02 - 2.900000000e-01, -4.914663699e-02, -4.890201756e-02 - 2.950000000e-01, -5.047923110e-02, -5.020114773e-02 - 3.000000000e-01, -4.591279224e-02, -4.562002034e-02 - 3.050000000e-01, -3.739593417e-02, -3.711414519e-02 - 3.100000000e-01, -2.697224625e-02, -2.672715668e-02 - 3.150000000e-01, -1.645040606e-02, -1.626186381e-02 - 3.200000000e-01, -7.187797314e-03, -7.066117894e-03 - 3.250000000e-01, -3.446700285e-16, +5.515303396e-05 - 3.300000000e-01, +4.818124626e-03, +4.816373871e-03 - 3.350000000e-01, +7.391643913e-03, +7.348725045e-03 - 3.400000000e-01, +8.123884454e-03, +8.057871019e-03 - 3.450000000e-01, +7.550108895e-03, +7.478021128e-03 - 3.500000000e-01, +6.213620742e-03, +6.148888559e-03 - 3.550000000e-01, +4.579372529e-03, +4.530539126e-03 - 3.600000000e-01, +2.988610073e-03, +2.959384056e-03 - 3.650000000e-01, +1.649298690e-03, +1.639365017e-03 - 3.700000000e-01, +6.520622610e-04, +6.583132266e-04 - 3.750000000e-01, +5.639207957e-17, +1.798187589e-05 - 3.800000000e-01, -3.578593563e-04, -3.327979443e-04 - 3.850000000e-01, -4.967592192e-04, -4.687482842e-04 - 3.900000000e-01, -4.940139224e-04, -4.663240107e-04 - 3.950000000e-01, -4.154313032e-04, -3.905392884e-04 - 4.000000000e-01, -3.093579607e-04, -2.893169810e-04 - 4.050000000e-01, -2.062970799e-04, -1.932572031e-04 - 4.100000000e-01, -1.218223334e-04, -1.185003095e-04 - 4.150000000e-01, -6.083135968e-05, -7.083741475e-05 - 4.200000000e-01, -2.176144987e-05, -4.959943871e-05 - 4.250000000e-01, -2.551434914e-18, -5.040158223e-05 - 4.300000000e-01, +9.778049726e-06, -6.662034254e-05 - 4.350000000e-01, +1.228163970e-05, -8.963785103e-05 - 4.400000000e-01, +1.105147275e-05, -1.082181466e-04 - 4.450000000e-01, +8.409123651e-06, -1.076032578e-04 - 4.500000000e-01, +5.666088695e-06, -6.891683625e-05 - 4.550000000e-01, +3.418894541e-06, +3.033423391e-05 - 4.600000000e-01, +1.826796159e-06, +2.141425316e-04 - 4.650000000e-01, +8.253938937e-07, +5.036982409e-04 - 4.700000000e-01, +2.671727168e-07, +9.104394389e-04 - 4.750000000e-01, +3.777032805e-20, +1.426879333e-03 - 4.800000000e-01, -9.828734975e-08, +2.016053765e-03 - 4.850000000e-01, -1.117049164e-07, +2.601282529e-03 - 4.900000000e-01, -9.095082526e-08, +3.059322132e-03 - 4.950000000e-01, -6.261923782e-08, +3.220640886e-03 - 5.000000000e-01, -3.817780532e-08, +2.880612905e-03 - 5.050000000e-01, -2.084413355e-08, +1.824643358e-03 - 5.100000000e-01, -1.007763869e-08, -1.318240696e-04 - 5.150000000e-01, -4.120031130e-09, -3.091022609e-03 - 5.200000000e-01, -1.206707201e-09, -7.014995127e-03 - 5.250000000e-01, -1.928824299e-22, -1.167249172e-02 - 5.300000000e-01, +3.634532244e-10, -1.660451755e-02 - 5.350000000e-01, +3.737607916e-10, -2.112373949e-02 - 5.400000000e-01, +2.753586026e-10, -2.436045456e-02 - 5.450000000e-01, +1.715419466e-10, -2.536187353e-02 - 5.500000000e-01, +9.463331804e-11, -2.324111735e-02 - 5.550000000e-01, +4.675063429e-11, -1.735907798e-02 - 5.600000000e-01, +2.045186871e-11, -7.509945122e-03 - 5.650000000e-01, +7.565632846e-12, +5.927458562e-03 - 5.700000000e-01, +2.005013126e-12, +2.191263319e-02 - 5.750000000e-01, +2.328620401e-25, +3.877451310e-02 - 5.800000000e-01, -4.944301496e-13, +5.436879699e-02 - 5.850000000e-01, -4.600666072e-13, +6.635561375e-02 - 5.900000000e-01, -3.066875683e-13, +7.256384413e-02 - 5.950000000e-01, -1.728774743e-13, +7.138288589e-02 - 6.000000000e-01, -8.629441606e-14, +6.210737871e-02 - 6.050000000e-01, -3.857417852e-14, +4.516040387e-02 - 6.100000000e-01, -1.526907493e-14, +2.213662937e-02 - 6.150000000e-01, -5.110878347e-15, -4.362280688e-03 - 6.200000000e-01, -1.225569810e-15, -3.108669484e-02 - 6.250000000e-01, -9.083457823e-29, -5.463638011e-02 - 6.300000000e-01, +2.474382771e-16, -7.200652759e-02 - 6.350000000e-01, +2.083306657e-16, -8.107865508e-02 - 6.400000000e-01, +1.256606244e-16, -8.096109780e-02 - 6.450000000e-01, +6.409320687e-17, -7.211243226e-02 - 6.500000000e-01, +2.894855159e-17, -5.622463705e-02 - 6.550000000e-01, +1.170877290e-17, -3.589267574e-02 - 6.600000000e-01, +4.193705940e-18, -1.414183746e-02 - 6.650000000e-01, +1.270139270e-18, +6.089239024e-03 - 6.700000000e-01, +2.755906037e-19, +2.240938153e-02 - 6.750000000e-01, +1.075875659e-32, +3.329738422e-02 - 6.800000000e-01, -4.555482039e-20, +3.823734807e-02 - 6.850000000e-01, -3.470493289e-20, +3.766044194e-02 - 6.900000000e-01, -1.894121233e-20, +3.272866847e-02 - 6.950000000e-01, -8.741603680e-21, +2.502430912e-02 - 7.000000000e-01, -3.572535080e-21, +1.621716482e-02 - 7.050000000e-01, -1.307469592e-21, +7.775620077e-03 - 7.100000000e-01, -4.237295397e-22, +7.697310683e-04 - 7.150000000e-01, -1.161215067e-22, -4.213272189e-03 - 7.200000000e-01, -2.279797517e-23, -7.049086115e-03 - 7.250000000e-01, -3.241225490e-37, -7.979227496e-03 - 7.300000000e-01, +3.085370426e-24, -7.472284010e-03 - 7.350000000e-01, +2.126839583e-24, -6.080112542e-03 - 7.400000000e-01, +1.050320519e-24, -4.319305044e-03 - 7.450000000e-01, +4.386071853e-25, -2.594106652e-03 - 7.500000000e-01, +1.621928417e-25, -1.162687821e-03 - 7.550000000e-01, +5.371026932e-26, -1.408438988e-04 - 7.600000000e-01, +1.575016203e-26, +4.682027305e-04 - 7.650000000e-01, +3.905525687e-27, +7.331267312e-04 - 7.700000000e-01, +6.937989919e-28, +7.552669739e-04 - 7.750000000e-01, -6.993531703e-42, +6.373124650e-04 - 7.800000000e-01, -7.687511957e-29, +4.634122058e-04 - 7.850000000e-01, -4.794946636e-29, +2.909699949e-04 - 7.900000000e-01, -2.142601701e-29, +1.512283973e-04 - 7.950000000e-01, -8.095914059e-30, +5.487228030e-05 - 8.000000000e-01, -2.708896312e-30, -1.038804897e-06 - 8.050000000e-01, -8.116869824e-31, -2.627034692e-05 - 8.100000000e-01, -2.153708036e-31, -3.164381107e-05 - 8.150000000e-01, -4.832277353e-32, -2.650277563e-05 - 8.200000000e-01, -7.767416097e-33, -1.789861163e-05 - 8.250000000e-01, +2.050715652e-46, -9.605564661e-06 - 8.300000000e-01, +7.046440907e-34, -3.093234898e-06 - 8.350000000e-01, +3.976842028e-34, +1.055734890e-06 - 8.400000000e-01, +1.607927855e-34, +3.362944132e-06 - 8.450000000e-01, +5.497453374e-35, +4.708299429e-06 - 8.500000000e-01, +1.664403419e-35, +5.575026565e-06 - 8.550000000e-01, +4.512584527e-36, +6.595329493e-06 - 8.600000000e-01, +1.083413267e-36, +8.135592089e-06 - 8.650000000e-01, +2.199529168e-37, +1.027185492e-05 - 8.700000000e-01, +3.199079223e-38, +1.327329946e-05 - 8.750000000e-01, -1.264445967e-51, +1.686284935e-05 - 8.800000000e-01, -2.376070608e-39, +2.063901018e-05 - 8.850000000e-01, -1.213384435e-39, +2.443350519e-05 - 8.900000000e-01, -4.439123120e-40, +2.718187408e-05 - 8.950000000e-01, -1.373291519e-40, +2.773946072e-05 - 9.000000000e-01, -3.762099992e-41, +2.531476622e-05 - 9.050000000e-01, -9.229276070e-42, +1.828262610e-05 - 9.100000000e-01, -2.004965889e-42, +5.303549001e-06 - 9.150000000e-01, -3.683096656e-43, -1.413025411e-05 - 9.200000000e-01, -4.847066048e-44, -4.056119047e-05 - 9.250000000e-01, +2.695492675e-57, -7.337177084e-05 - 9.300000000e-01, +2.947503899e-45, -1.104648449e-04 - 9.350000000e-01, +1.361958949e-45, -1.488772042e-04 - 9.400000000e-01, +4.508513145e-46, -1.840901569e-04 - 9.450000000e-01, +1.262029305e-46, -2.105602997e-04 - 9.500000000e-01, +3.128294188e-47, -2.224604783e-04 - 9.550000000e-01, +6.944091618e-48, -2.139153398e-04 - 9.600000000e-01, +1.364977037e-48, -1.804917306e-04 - 9.650000000e-01, +2.268830361e-49, -1.199649268e-04 - 9.700000000e-01, +2.701707935e-50, -3.284443206e-05 - 9.750000000e-01, -1.705334349e-63, +7.643907554e-05 - 9.800000000e-01, -1.345101176e-51, +1.998517569e-04 - 9.850000000e-01, -5.623868195e-52, +3.263928552e-04 - 9.900000000e-01, -1.684515487e-52, +4.427266851e-04 - 9.950000000e-01, -4.266597350e-53, +5.350871054e-04 - 1.000000000e+00, -9.569524512e-54, +5.911873106e-04 + 5.000000000e-03, -8.409123651e-06, +0.000000000e+00 + 1.000000000e-02, -1.105147275e-05, -4.558931380e-06 + 1.500000000e-02, -1.228163970e-05, -7.650778372e-06 + 2.000000000e-02, -9.778049726e-06, -6.421623690e-06 + 2.500000000e-02, -6.103350322e-20, -2.712670640e-06 + 3.000000000e-02, +2.176144987e-05, +1.157986030e-05 + 3.500000000e-02, +6.083135968e-05, +4.048822554e-05 + 4.000000000e-02, +1.218223334e-04, +8.954576786e-05 + 4.500000000e-02, +2.062970799e-04, +1.630096150e-04 + 5.000000000e-02, +3.093579607e-04, +2.606497678e-04 + 5.500000000e-02, +4.154313032e-04, +3.740739943e-04 + 6.000000000e-02, +4.940139224e-04, +4.804906383e-04 + 6.500000000e-02, +4.967592192e-04, +5.417436564e-04 + 7.000000000e-02, +3.578593563e-04, +4.996335610e-04 + 7.500000000e-02, -5.771941699e-19, +2.777235134e-04 + 8.000000000e-02, -6.520622610e-04, -2.060803646e-04 + 8.500000000e-02, -1.649298690e-03, -1.024597503e-03 + 9.000000000e-02, -2.988610073e-03, -2.214329530e-03 + 9.500000000e-02, -4.579372529e-03, -3.739580096e-03 + 1.000000000e-01, -6.213620742e-03, -5.459163967e-03 + 1.050000000e-01, -7.550108895e-03, -7.099605696e-03 + 1.100000000e-01, -8.123884454e-03, -8.246910169e-03 + 1.150000000e-01, -7.391643913e-03, -8.370988748e-03 + 1.200000000e-01, -4.818124626e-03, -6.892290557e-03 + 1.250000000e-01, +4.687776326e-18, -3.290217576e-03 + 1.300000000e-01, +7.187797314e-03, +2.755025178e-03 + 1.350000000e-01, +1.645040606e-02, +1.120480778e-02 + 1.400000000e-01, +2.697224625e-02, +2.152688943e-02 + 1.450000000e-01, +3.739593417e-02, +3.262256056e-02 + 1.500000000e-01, +4.591279224e-02, +4.285112854e-02 + 1.550000000e-01, +5.047923110e-02, +5.018315209e-02 + 1.600000000e-01, +4.914663699e-02, +5.248490296e-02 + 1.650000000e-01, +4.046146992e-02, +4.790393739e-02 + 1.700000000e-01, +2.386432750e-02, +3.529820109e-02 + 1.750000000e-01, -4.859694655e-17, +1.462324779e-02 + 1.800000000e-01, -2.914795543e-02, -1.281777602e-02 + 1.850000000e-01, -6.036142013e-02, -4.434400766e-02 + 1.900000000e-01, -8.955101123e-02, -7.613319948e-02 + 1.950000000e-01, -1.123435949e-01, -1.037192750e-01 + 2.000000000e-01, -1.248039088e-01, -1.226875357e-01 + 2.050000000e-01, -1.241588739e-01, -1.294473326e-01 + 2.100000000e-01, -1.093778521e-01, -1.219328685e-01 + 2.150000000e-01, -8.147939460e-02, -1.000839545e-01 + 2.200000000e-01, -4.348363979e-02, -6.599067575e-02 + 2.250000000e-01, +2.632536371e-16, -2.365274054e-02 + 2.300000000e-01, +4.348363979e-02, +2.161684704e-02 + 2.350000000e-01, +8.147939460e-02, +6.403823028e-02 + 2.400000000e-01, +1.093778521e-01, +9.829987744e-02 + 2.450000000e-01, +1.241588739e-01, +1.204027545e-01 + 2.500000000e-01, +1.248039088e-01, +1.282530138e-01 + 2.550000000e-01, +1.123435949e-01, +1.218984640e-01 + 2.600000000e-01, +8.955101123e-02, +1.033816856e-01 + 2.650000000e-01, +6.036142013e-02, +7.626019250e-02 + 2.700000000e-01, +2.914795543e-02, +4.490854887e-02 + 2.750000000e-01, +4.859694655e-17, +1.375152770e-02 + 2.800000000e-01, -2.386432750e-02, -1.342344799e-02 + 2.850000000e-01, -4.046146992e-02, -3.395798208e-02 + 2.900000000e-01, -4.914663699e-02, -4.655533012e-02 + 2.950000000e-01, -5.047923110e-02, -5.124870503e-02 + 3.000000000e-01, -4.591279224e-02, -4.915359045e-02 + 3.050000000e-01, -3.739593417e-02, -4.208645024e-02 + 3.100000000e-01, -2.697224625e-02, -3.214184015e-02 + 3.150000000e-01, -1.645040606e-02, -2.131247323e-02 + 3.200000000e-01, -7.187797314e-03, -1.121125439e-02 + 3.250000000e-01, -3.446700285e-16, -2.920982479e-03 + 3.300000000e-01, +4.818124626e-03, +3.031289853e-03 + 3.350000000e-01, +7.391643913e-03, +6.601457914e-03 + 3.400000000e-01, +8.123884454e-03, +8.095992184e-03 + 3.450000000e-01, +7.550108895e-03, +8.019749858e-03 + 3.500000000e-01, +6.213620742e-03, +6.936292401e-03 + 3.550000000e-01, +4.579372529e-03, +5.361484719e-03 + 3.600000000e-01, +2.988610073e-03, +3.699593533e-03 + 3.650000000e-01, +1.649298690e-03, +2.219174580e-03 + 3.700000000e-01, +6.520622610e-04, +1.059555454e-03 + 3.750000000e-01, +5.639207957e-17, +2.570710518e-04 + 3.800000000e-01, -3.578593563e-04, -2.211073472e-04 + 3.850000000e-01, -4.967592192e-04, -4.444885425e-04 + 3.900000000e-01, -4.940139224e-04, -4.930080262e-04 + 3.950000000e-01, -4.154313032e-04, -4.396399953e-04 + 4.000000000e-01, -3.093579607e-04, -3.414385816e-04 + 4.050000000e-01, -2.062970799e-04, -2.371953805e-04 + 4.100000000e-01, -1.218223334e-04, -1.493190257e-04 + 4.150000000e-01, -6.083135968e-05, -8.768159357e-05 + 4.200000000e-01, -2.176144987e-05, -5.399323324e-05 + 4.250000000e-01, -2.551434914e-18, -4.520564667e-05 + 4.300000000e-01, +9.778049726e-06, -5.559751838e-05 + 4.350000000e-01, +1.228163970e-05, -7.764316698e-05 + 4.400000000e-01, +1.105147275e-05, -1.016325352e-04 + 4.450000000e-01, +8.409123651e-06, -1.148037581e-04 + 4.500000000e-01, +5.666088695e-06, -1.004027575e-04 + 4.550000000e-01, +3.418894541e-06, -3.743091454e-05 + 4.600000000e-01, +1.826796159e-06, +9.809938310e-05 + 4.650000000e-01, +8.253938937e-07, +3.301856802e-04 + 4.700000000e-01, +2.671727168e-07, +6.772108016e-04 + 4.750000000e-01, +3.777032805e-20, +1.143668076e-03 + 4.800000000e-01, -9.828734975e-08, +1.710090589e-03 + 4.850000000e-01, -1.117049164e-07, +2.322016941e-03 + 4.900000000e-01, -9.095082526e-08, +2.880548116e-03 + 4.950000000e-01, -6.261923782e-08, +3.238096147e-03 + 5.000000000e-01, -3.817780532e-08, +3.203185625e-03 + 5.050000000e-01, -2.084413355e-08, +2.558040186e-03 + 5.100000000e-01, -1.007763869e-08, +1.091246531e-03 + 5.150000000e-01, -4.120031130e-09, -1.354894670e-03 + 5.200000000e-01, -1.206707201e-09, -4.827150549e-03 + 5.250000000e-01, -1.928824299e-22, -9.202839705e-03 + 5.300000000e-01, +3.634532244e-10, -1.414214374e-02 + 5.350000000e-01, +3.737607916e-10, -1.906689135e-02 + 5.400000000e-01, +2.753586026e-10, -2.318058763e-02 + 5.450000000e-01, +1.715419466e-10, -2.554032149e-02 + 5.500000000e-01, +9.463331804e-11, -2.518342557e-02 + 5.550000000e-01, +4.675063429e-11, -2.129880913e-02 + 5.600000000e-01, +2.045186871e-11, -1.341934684e-02 + 5.650000000e-01, +7.565632846e-12, -1.600543406e-03 + 5.700000000e-01, +2.005013126e-12, +1.345546053e-02 + 5.750000000e-01, +2.328620401e-25, +3.036980585e-02 + 5.800000000e-01, -4.944301496e-13, +4.717922035e-02 + 5.850000000e-01, -4.600666072e-13, +6.155837363e-02 + 5.900000000e-01, -3.066875683e-13, +7.115285387e-02 + 5.950000000e-01, -1.728774743e-13, +7.397483439e-02 + 6.000000000e-01, -8.629441606e-14, +6.879093739e-02 + 6.050000000e-01, -3.857417852e-14, +5.542382004e-02 + 6.100000000e-01, -1.526907493e-14, +3.489698770e-02 + 6.150000000e-01, -5.110878347e-15, +9.376271045e-03 + 6.200000000e-01, -1.225569810e-15, -1.810083242e-02 + 6.250000000e-01, -9.083457823e-29, -4.407255725e-02 + 6.300000000e-01, +2.474382771e-16, -6.520020296e-02 + 6.350000000e-01, +2.083306657e-16, -7.881285222e-02 + 6.400000000e-01, +1.256606244e-16, -8.334445794e-02 + 6.450000000e-01, +6.409320687e-17, -7.857773765e-02 + 6.500000000e-01, +2.894855159e-17, -6.564712687e-02 + 6.550000000e-01, +1.170877290e-17, -4.680214724e-02 + 6.600000000e-01, +4.193705940e-18, -2.498320425e-02 + 6.650000000e-01, +1.270139270e-18, -3.300470677e-03 + 6.700000000e-01, +2.755906037e-19, +1.547894872e-02 + 6.750000000e-01, +1.075875659e-32, +2.933981433e-02 + 6.800000000e-01, -4.555482039e-20, +3.725495411e-02 + 6.850000000e-01, -3.470493289e-20, +3.921974203e-02 + 6.900000000e-01, -1.894121233e-20, +3.610114184e-02 + 6.950000000e-01, -8.741603680e-21, +2.935619511e-02 + 7.000000000e-01, -3.572535080e-21, +2.069242313e-02 + 7.050000000e-01, -1.307469592e-21, +1.174190651e-02 + 7.100000000e-01, -4.237295397e-22, +3.809333643e-03 + 7.150000000e-01, -1.161215067e-22, -2.269871507e-03 + 7.200000000e-01, -2.279797517e-23, -6.156672872e-03 + 7.250000000e-01, -3.241225490e-37, -7.941499358e-03 + 7.300000000e-01, +3.085370426e-24, -8.016955634e-03 + 7.350000000e-01, +2.126839583e-24, -6.927612387e-03 + 7.400000000e-01, +1.050320519e-24, -5.232612698e-03 + 7.450000000e-01, +4.386071853e-25, -3.405997390e-03 + 7.500000000e-01, +1.621928417e-25, -1.782215915e-03 + 7.550000000e-01, +5.371026932e-26, -5.431597280e-04 + 7.600000000e-01, +1.575016203e-26, +2.614719301e-04 + 7.650000000e-01, +3.905525687e-27, +6.749335304e-04 + 7.700000000e-01, +6.937989919e-28, +7.913199315e-04 + 7.750000000e-01, -6.993531703e-42, +7.192140160e-04 + 7.800000000e-01, -7.687511957e-29, +5.554109136e-04 + 7.850000000e-01, -4.794946636e-29, +3.714134976e-04 + 7.900000000e-01, -2.142601701e-29, +2.105264916e-04 + 7.950000000e-01, -8.095914059e-30, +9.193030263e-05 + 8.000000000e-01, -2.708896312e-30, +1.781425765e-05 + 8.050000000e-01, -8.116869824e-31, -1.989186793e-05 + 8.100000000e-01, -2.153708036e-31, -3.264882632e-05 + 8.150000000e-01, -4.832277353e-32, -3.063879620e-05 + 8.200000000e-01, -7.767416097e-33, -2.236675551e-05 + 8.250000000e-01, +2.050715652e-46, -1.343046811e-05 + 8.300000000e-01, +7.046440907e-34, -5.780661658e-06 + 8.350000000e-01, +3.976842028e-34, -4.058086637e-07 + 8.400000000e-01, +1.607927855e-34, +2.517278106e-06 + 8.450000000e-01, +5.497453374e-35, +4.208609733e-06 + 8.500000000e-01, +1.664403419e-35, +5.207988558e-06 + 8.550000000e-01, +4.512584527e-36, +5.942064159e-06 + 8.600000000e-01, +1.083413267e-36, +7.248594436e-06 + 8.650000000e-01, +2.199529168e-37, +9.022589277e-06 + 8.700000000e-01, +3.199079223e-38, +1.152112009e-05 + 8.750000000e-01, -1.264445967e-51, +1.502547838e-05 + 8.800000000e-01, -2.376070608e-39, +1.870022000e-05 + 8.850000000e-01, -1.213384435e-39, +2.257779994e-05 + 8.900000000e-01, -4.439123120e-40, +2.628920989e-05 + 8.950000000e-01, -1.373291519e-40, +2.807453801e-05 + 9.000000000e-01, -3.762099992e-41, +2.740438314e-05 + 9.050000000e-01, -9.229276070e-42, +2.322514870e-05 + 9.100000000e-01, -2.004965889e-42, +1.334010310e-05 + 9.150000000e-01, -3.683096656e-43, -2.733005350e-06 + 9.200000000e-01, -4.847066048e-44, -2.552750333e-05 + 9.250000000e-01, +2.695492675e-57, -5.559487811e-05 + 9.300000000e-01, +2.947503899e-45, -9.114866396e-05 + 9.350000000e-01, +1.361958949e-45, -1.297810261e-04 + 9.400000000e-01, +4.508513145e-46, -1.679733827e-04 + 9.450000000e-01, +1.262029305e-46, -2.002069317e-04 + 9.500000000e-01, +3.128294188e-47, -2.209136680e-04 + 9.550000000e-01, +6.944091618e-48, -2.240072890e-04 + 9.600000000e-01, +1.364977037e-48, -2.038233913e-04 + 9.650000000e-01, +2.268830361e-49, -1.571600705e-04 + 9.700000000e-01, +2.701707935e-50, -8.276978349e-05 + 9.750000000e-01, -1.705334349e-63, +1.708091886e-05 + 9.800000000e-01, -1.345101176e-51, +1.357972317e-04 + 9.850000000e-01, -5.623868195e-52, +2.639062817e-04 + 9.900000000e-01, -1.684515487e-52, +3.888794284e-04 + 9.950000000e-01, -4.266597350e-53, +4.965739414e-04 + 1.000000000e+00, -9.569524512e-54, +5.736002689e-04 diff --git a/test/examples/ref/coaxial/open/port-V.csv b/test/examples/ref/coaxial/open/port-V.csv index 84d0750c3..4eb1653c6 100644 --- a/test/examples/ref/coaxial/open/port-V.csv +++ b/test/examples/ref/coaxial/open/port-V.csv @@ -83,15 +83,15 @@ 4.050000000e-01, -1.031485399e-02, -1.019180358e-02 4.100000000e-01, -6.091116670e-03, -5.540213304e-03 4.150000000e-01, -3.041567984e-03, -1.877704052e-03 - 4.200000000e-01, -1.088072493e-03, +9.310318786e-04 - 4.250000000e-01, -1.275717457e-16, +3.133201664e-03 - 4.300000000e-01, +4.889024863e-04, +4.928888368e-03 - 4.350000000e-01, +6.140819852e-04, +6.353132238e-03 - 4.400000000e-01, +5.525736376e-04, +7.189776845e-03 - 4.450000000e-01, +4.204561825e-04, +6.921923233e-03 - 4.500000000e-01, +2.833044348e-04, +4.724069233e-03 - 4.550000000e-01, +1.709447271e-04, -4.848891857e-04 - 4.600000000e-01, +9.133980795e-05, -9.904489803e-03 + 4.200000000e-01, -1.088072493e-03, +9.310318792e-04 + 4.250000000e-01, -1.275717457e-16, +3.133201665e-03 + 4.300000000e-01, +4.889024863e-04, +4.928888369e-03 + 4.350000000e-01, +6.140819852e-04, +6.353132239e-03 + 4.400000000e-01, +5.525736376e-04, +7.189776846e-03 + 4.450000000e-01, +4.204561825e-04, +6.921923235e-03 + 4.500000000e-01, +2.833044348e-04, +4.724069235e-03 + 4.550000000e-01, +1.709447271e-04, -4.848891835e-04 + 4.600000000e-01, +9.133980795e-05, -9.904489802e-03 4.650000000e-01, +4.126969468e-05, -2.461298755e-02 4.700000000e-01, +1.335863584e-05, -4.520322375e-02 4.750000000e-01, +1.888516403e-18, -7.130782433e-02 @@ -134,69 +134,69 @@ 6.600000000e-01, +2.096852970e-16, +6.950601359e-01 6.650000000e-01, +6.350696352e-17, -3.099405221e-01 6.700000000e-01, +1.377953018e-17, -1.119322012e+00 - 6.750000000e-01, +5.379378296e-31, -1.658168885e+00 + 6.750000000e-01, +5.379378296e-31, -1.658168884e+00 6.800000000e-01, -2.277741020e-18, -1.901475793e+00 6.850000000e-01, -1.735246645e-18, -1.871132388e+00 6.900000000e-01, -9.470606165e-19, -1.625116376e+00 6.950000000e-01, -4.370801840e-19, -1.242050597e+00 7.000000000e-01, -1.786267540e-19, -8.047242253e-01 7.050000000e-01, -6.537347961e-20, -3.858359231e-01 - 7.100000000e-01, -2.118647699e-20, -3.829917962e-02 + 7.100000000e-01, -2.118647699e-20, -3.829917960e-02 7.150000000e-01, -5.806075333e-21, +2.089007254e-01 7.200000000e-01, -1.139898758e-21, +3.496853967e-01 7.250000000e-01, -1.620612745e-35, +3.960476321e-01 - 7.300000000e-01, +1.542685213e-22, +3.711871413e-01 + 7.300000000e-01, +1.542685213e-22, +3.711871414e-01 7.350000000e-01, +1.063419792e-22, +3.024175883e-01 - 7.400000000e-01, +5.251602594e-23, +2.153068470e-01 + 7.400000000e-01, +5.251602594e-23, +2.153068471e-01 7.450000000e-01, +2.193035927e-23, +1.298621516e-01 - 7.500000000e-01, +8.109642085e-24, +5.887692498e-02 - 7.550000000e-01, +2.685513466e-24, +8.116357603e-03 - 7.600000000e-01, +7.875081013e-25, -2.222714262e-02 - 7.650000000e-01, +1.952762843e-25, -3.552555383e-02 - 7.700000000e-01, +3.468994959e-26, -3.677097815e-02 - 7.750000000e-01, -3.496765852e-40, -3.103396062e-02 - 7.800000000e-01, -3.843755978e-27, -2.247998633e-02 - 7.850000000e-01, -2.397473318e-27, -1.396045159e-02 - 7.900000000e-01, -1.071300850e-27, -7.034699268e-03 - 7.950000000e-01, -4.047957029e-28, -2.239238312e-03 - 8.000000000e-01, -1.354448156e-28, +5.584923809e-04 - 8.050000000e-01, -4.058434912e-29, +1.829978718e-03 - 8.100000000e-01, -1.076854018e-29, +2.115510606e-03 - 8.150000000e-01, -2.416138676e-30, +1.875664971e-03 - 8.200000000e-01, -3.883708049e-31, +1.452843891e-03 - 8.250000000e-01, +1.025357826e-44, +1.044094950e-03 - 8.300000000e-01, +3.523220453e-32, +7.236911579e-04 - 8.350000000e-01, +1.988421014e-32, +5.145846560e-04 - 8.400000000e-01, +8.039639276e-33, +3.989443381e-04 - 8.450000000e-01, +2.748726687e-33, +3.320318754e-04 - 8.500000000e-01, +8.322017093e-34, +2.860329405e-04 - 8.550000000e-01, +2.256292263e-34, +2.358153054e-04 - 8.600000000e-01, +5.417066333e-35, +1.577389454e-04 - 8.650000000e-01, +1.099764584e-35, +4.807422246e-05 - 8.700000000e-01, +1.599539611e-36, -9.996805373e-05 - 8.750000000e-01, -6.322229835e-50, -2.822796779e-04 - 8.800000000e-01, -1.188035304e-37, -4.749162584e-04 - 8.850000000e-01, -6.066922176e-38, -6.617188045e-04 - 8.900000000e-01, -2.219561560e-38, -8.021461627e-04 - 8.950000000e-01, -6.866457597e-39, -8.327379329e-04 - 9.000000000e-01, -1.881049996e-39, -7.062688593e-04 - 9.050000000e-01, -4.614638035e-40, -3.543666083e-04 - 9.100000000e-01, -1.002482944e-40, +2.969492618e-04 - 9.150000000e-01, -1.841548328e-41, +1.277706471e-03 - 9.200000000e-01, -2.423533024e-42, +2.604001633e-03 - 9.250000000e-01, +1.347746337e-55, +4.251217322e-03 - 9.300000000e-01, +1.473751950e-43, +6.113852167e-03 - 9.350000000e-01, +6.809794745e-44, +8.036442749e-03 - 9.400000000e-01, +2.254256572e-44, +9.798404902e-03 - 9.450000000e-01, +6.310146526e-45, +1.111745730e-02 - 9.500000000e-01, +1.564147094e-45, +1.170057041e-02 - 9.550000000e-01, +3.472045809e-46, +1.126009915e-02 - 9.600000000e-01, +6.824885183e-47, +9.569259409e-03 - 9.650000000e-01, +1.134415180e-47, +6.521434264e-03 - 9.700000000e-01, +1.350853967e-48, +2.149067214e-03 - 9.750000000e-01, -8.526671746e-62, -3.328876334e-03 - 9.800000000e-01, -6.725505882e-50, -9.504275809e-03 - 9.850000000e-01, -2.811934097e-50, -1.582366796e-02 - 9.900000000e-01, -8.422577434e-51, -2.162236117e-02 - 9.950000000e-01, -2.133298675e-51, -2.621152993e-02 - 1.000000000e+00, -4.784762256e-52, -2.898166807e-02 + 7.500000000e-01, +8.109642085e-24, +5.887692499e-02 + 7.550000000e-01, +2.685513466e-24, +8.116357611e-03 + 7.600000000e-01, +7.875081013e-25, -2.222714261e-02 + 7.650000000e-01, +1.952762843e-25, -3.552555381e-02 + 7.700000000e-01, +3.468994959e-26, -3.677097814e-02 + 7.750000000e-01, -3.496765852e-40, -3.103396061e-02 + 7.800000000e-01, -3.843755978e-27, -2.247998632e-02 + 7.850000000e-01, -2.397473318e-27, -1.396045158e-02 + 7.900000000e-01, -1.071300850e-27, -7.034699255e-03 + 7.950000000e-01, -4.047957029e-28, -2.239238301e-03 + 8.000000000e-01, -1.354448156e-28, +5.584923946e-04 + 8.050000000e-01, -4.058434912e-29, +1.829978731e-03 + 8.100000000e-01, -1.076854018e-29, +2.115510617e-03 + 8.150000000e-01, -2.416138676e-30, +1.875664984e-03 + 8.200000000e-01, -3.883708049e-31, +1.452843904e-03 + 8.250000000e-01, +1.025357826e-44, +1.044094962e-03 + 8.300000000e-01, +3.523220453e-32, +7.236911730e-04 + 8.350000000e-01, +1.988421014e-32, +5.145846687e-04 + 8.400000000e-01, +8.039639276e-33, +3.989443505e-04 + 8.450000000e-01, +2.748726687e-33, +3.320318914e-04 + 8.500000000e-01, +8.322017093e-34, +2.860329542e-04 + 8.550000000e-01, +2.256292263e-34, +2.358153177e-04 + 8.600000000e-01, +5.417066333e-35, +1.577389597e-04 + 8.650000000e-01, +1.099764584e-35, +4.807423640e-05 + 8.700000000e-01, +1.599539611e-36, -9.996804045e-05 + 8.750000000e-01, -6.322229835e-50, -2.822796660e-04 + 8.800000000e-01, -1.188035304e-37, -4.749162462e-04 + 8.850000000e-01, -6.066922176e-38, -6.617187895e-04 + 8.900000000e-01, -2.219561560e-38, -8.021461510e-04 + 8.950000000e-01, -6.866457597e-39, -8.327379230e-04 + 9.000000000e-01, -1.881049996e-39, -7.062688439e-04 + 9.050000000e-01, -4.614638035e-40, -3.543665946e-04 + 9.100000000e-01, -1.002482944e-40, +2.969492715e-04 + 9.150000000e-01, -1.841548328e-41, +1.277706484e-03 + 9.200000000e-01, -2.423533024e-42, +2.604001647e-03 + 9.250000000e-01, +1.347746337e-55, +4.251217334e-03 + 9.300000000e-01, +1.473751950e-43, +6.113852179e-03 + 9.350000000e-01, +6.809794745e-44, +8.036442762e-03 + 9.400000000e-01, +2.254256572e-44, +9.798404918e-03 + 9.450000000e-01, +6.310146526e-45, +1.111745731e-02 + 9.500000000e-01, +1.564147094e-45, +1.170057042e-02 + 9.550000000e-01, +3.472045809e-46, +1.126009917e-02 + 9.600000000e-01, +6.824885183e-47, +9.569259423e-03 + 9.650000000e-01, +1.134415180e-47, +6.521434275e-03 + 9.700000000e-01, +1.350853967e-48, +2.149067228e-03 + 9.750000000e-01, -8.526671746e-62, -3.328876318e-03 + 9.800000000e-01, -6.725505882e-50, -9.504275797e-03 + 9.850000000e-01, -2.811934097e-50, -1.582366794e-02 + 9.900000000e-01, -8.422577434e-51, -2.162236115e-02 + 9.950000000e-01, -2.133298675e-51, -2.621152992e-02 + 1.000000000e+00, -4.784762256e-52, -2.898166805e-02 From d36f954e2d9de073fa1e605eb4e3bc99674fd7fb Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 19:20:30 +0000 Subject: [PATCH 30/32] Update time domain formulation reference doc --- docs/src/reference.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/src/reference.md b/docs/src/reference.md index a9ab9475a..45c6625cf 100644 --- a/docs/src/reference.md +++ b/docs/src/reference.md @@ -94,9 +94,19 @@ boundary condition which is written for a lumped resistive port boundary, for ex = \bm{U}^{inc} \,,\; \bm{x}\in\Gamma_{Z} \,. ``` -The second-order electric field formulation is chosen to take advantage of unconditionally -stable implicit time-integration schemes without the expense of a coupled block system -solve for ``\bm{E}(\bm{x},t)`` and ``\bm{B}(\bm{x},t)``. It offers the additional benefit +The second-order electric field differential equation is transformed into a first-order +ODE system which is solved along with the equation for the magnetic flux density + +```math +\left(\begin{matrix} \varepsilon_r & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1\end{matrix}\right) + \left(\begin{matrix} \ddot{\bm{E}} \\ \dot{\bm{E}} \\ \dot{\bm{B}}\end{matrix} \right) + = \left(\begin{matrix} -\sigma & -\nabla\times\mu_r^{-1}\nabla\times & 0\\ 1 & 0 & 0 \\ 0 & -\nabla\times & 0\end{matrix}\right) + \left(\begin{matrix}\dot{\bm{E}}\\ \bm{E} \\ \bm{B} \end{matrix}\right) \,. +``` + +The first-order ODE system formulation is chosen to take advantage of implicit adaptive +time-stepping integration schemes. The ``3 \times 3`` system can be block-eliminated to +avoid an expensive coupled block system solve. It offers the additional benefit of sharing many similarities in the spatial discretization as the frequency domain formulation outlined above. From 443b3b80ce148e159ef6379c05d2ca8c2ff157f9 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 19:30:08 +0000 Subject: [PATCH 31/32] Add SUNDIALS to configuration options doc --- docs/src/install.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/src/install.md b/docs/src/install.md index 2c6f74619..39c2f70bc 100644 --- a/docs/src/install.md +++ b/docs/src/install.md @@ -156,7 +156,7 @@ and LAPACK libraries depending on the system architecture according to the follo procedure: - For `x86_64` systems: - + + If the `MKLROOT` environment variable is set, looks for an [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html) installation. @@ -167,7 +167,7 @@ procedure: which is permissively licensed and available from most package managers. - For `aarch64`/`arm64` systems: - + + If the `ARMPL_DIR` environment variable is set, looks for an [Arm Performance Libraries (PL)](https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries) installation. @@ -208,6 +208,7 @@ source code for these dependencies is downloaded during the build process: `PALACE_WITH_ARPACK=ON`) - [LIBXSMM](https://github.com/libxsmm/libxsmm) (optional, when `PALACE_WITH_LIBXSMM=ON`) - [MAGMA](https://icl.utk.edu/magma/) (optional, when `PALACE_WITH_MAGMA=ON`) + - [SUNDIALS](https://github.com/LLNL/sundials) (optional, when `PALACE_WITH_SUNDIALS=ON`) - [nlohmann/json](https://github.com/nlohmann/json) - [fmt](https://fmt.dev/latest) - [Eigen](https://eigen.tuxfamily.org) From 863aee423d543215f449ee59859558a0600f1765 Mon Sep 17 00:00:00 2001 From: Simon Lapointe Date: Tue, 19 Nov 2024 11:37:15 -0800 Subject: [PATCH 32/32] Fix formatting issues --- docs/src/install.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/install.md b/docs/src/install.md index 39c2f70bc..60418aa66 100644 --- a/docs/src/install.md +++ b/docs/src/install.md @@ -156,7 +156,7 @@ and LAPACK libraries depending on the system architecture according to the follo procedure: - For `x86_64` systems: - + + If the `MKLROOT` environment variable is set, looks for an [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html) installation. @@ -167,7 +167,7 @@ procedure: which is permissively licensed and available from most package managers. - For `aarch64`/`arm64` systems: - + + If the `ARMPL_DIR` environment variable is set, looks for an [Arm Performance Libraries (PL)](https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries) installation.