From 859437ffb58c03c381dea0f73302d34ee7967084 Mon Sep 17 00:00:00 2001 From: Edward 'Ned' Coltman <nedc@flip.iws.uni-stuttgart.de> Date: Mon, 16 Jul 2018 13:11:35 +0200 Subject: [PATCH] exercise-grids solution files --- .../exercise-grids/exercise_grids_solution.cc | 200 ++ .../exercise_grids_solution.input | 45 + .../exercise-grids/grids/grid_structured.msh | 902 ++++++ .../exercise-grids/grids/grid_unstructured.db | Bin 0 -> 949 bytes .../grids/grid_unstructured.geo | 17 + .../grids/grid_unstructured.msh | 2495 +++++++++++++++++ .../exercise-grids/injection2pproblem.hh | 268 ++ .../injection2pspatialparams.hh | 172 ++ 8 files changed, 4099 insertions(+) create mode 100644 exercises/solution/exercise-grids/exercise_grids_solution.cc create mode 100644 exercises/solution/exercise-grids/exercise_grids_solution.input create mode 100644 exercises/solution/exercise-grids/grids/grid_structured.msh create mode 100644 exercises/solution/exercise-grids/grids/grid_unstructured.db create mode 100644 exercises/solution/exercise-grids/grids/grid_unstructured.geo create mode 100644 exercises/solution/exercise-grids/grids/grid_unstructured.msh create mode 100644 exercises/solution/exercise-grids/injection2pproblem.hh create mode 100644 exercises/solution/exercise-grids/injection2pspatialparams.hh diff --git a/exercises/solution/exercise-grids/exercise_grids_solution.cc b/exercises/solution/exercise-grids/exercise_grids_solution.cc new file mode 100644 index 00000000..9da491d6 --- /dev/null +++ b/exercises/solution/exercise-grids/exercise_grids_solution.cc @@ -0,0 +1,200 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \brief The main file for the two-phase porousmediumflow problem of exercise Grids + */ +#include <config.h> + +#include <ctime> +#include <iostream> + +#include <dune/common/parallel/mpihelper.hh> +#include <dune/common/timer.hh> +#include <dune/grid/io/file/dgfparser/dgfexception.hh> +#include <dune/grid/io/file/vtk.hh> + +#include <dumux/common/properties.hh> +#include <dumux/common/parameters.hh> +#include <dumux/common/dumuxmessage.hh> +#include <dumux/common/defaultusagemessage.hh> + +#include <dumux/linear/amgbackend.hh> +#include <dumux/nonlinear/newtonsolver.hh> + +#include <dumux/assembly/fvassembler.hh> +#include <dumux/assembly/diffmethod.hh> + +#include <dumux/discretization/methods.hh> + +#include <dumux/io/vtkoutputmodule.hh> +#include <dumux/io/grid/gridmanager.hh> + +// The problem file, where setup-specific boundary and initial conditions are defined. +#include "injection2pproblem.hh" + +//////////////////////// +// the main function +//////////////////////// +int main(int argc, char** argv) try +{ + using namespace Dumux; + + // define the type tag for this problem + using TypeTag = TTAG(Injection2pCCTypeTag); + + // initialize MPI, finalize is done automatically on exit + const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv); + + // print dumux start message + if (mpiHelper.rank() == 0) + DumuxMessage::print(/*firstCall=*/true); + + // parse command line arguments and input file + Parameters::init(argc, argv); + + // try to create a grid (from the given grid file or the input file) + GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager; + gridManager.init(); + + //////////////////////////////////////////////////////////// + // run instationary non-linear problem on this grid + //////////////////////////////////////////////////////////// + + // we compute on the leaf grid view + const auto& leafGridView = gridManager.grid().leafGridView(); + + // create the finite volume grid geometry + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView); + fvGridGeometry->update(); + + // the problem (initial and boundary conditions) + using Problem = typename GET_PROP_TYPE(TypeTag, Problem); + auto problem = std::make_shared<Problem>(fvGridGeometry); + + // the solution vector + using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector); + SolutionVector x(fvGridGeometry->numDofs()); + problem->applyInitialSolution(x); + auto xOld = x; + + // the grid variables + using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); + auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry); + gridVariables->init(x, xOld); + + // get some time loop parameters + // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME + // of type TYPE given in the group GROUPNAME from the input file + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + const auto tEnd = getParam<Scalar>("TimeLoop.TEnd"); + const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize"); + auto dt = getParam<Scalar>("TimeLoop.DtInitial"); + + // intialize the vtk output module + using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields); + VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name()); + VtkOutputFields::init(vtkWriter); //! Add model specific output fields + + // instantiate time loop + auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd); + timeLoop->setMaxTimeStepSize(maxDt); + + // the assembler with time loop for instationary problem + using Assembler = FVAssembler<TypeTag, DiffMethod::numeric>; + auto assembler = std::make_shared<Assembler>(problem, fvGridGeometry, gridVariables, timeLoop); + + // the linear solver + using LinearSolver = AMGBackend<TypeTag>; + auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper()); + + // the non-linear solver + using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>; + NewtonSolver nonLinearSolver(assembler, linearSolver); + + // time loop + timeLoop->start(); + while (!timeLoop->finished()) + { + // set previous solution for storage evaluations + assembler->setPreviousSolution(xOld); + + //set time in problem (is used in time-dependent Neumann boundary condition) + problem->setTime(timeLoop->time()+timeLoop->timeStepSize()); + + // solve the non-linear system with time step control + nonLinearSolver.solve(x, *timeLoop); + + // make the new solution the old solution + xOld = x; + gridVariables->advanceTimeStep(); + + // advance to the time loop to the next step + timeLoop->advanceTimeStep(); + + // report statistics of this time step + timeLoop->reportTimeStep(); + + // set new dt as suggested by the newton solver + timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize())); + + // output to vtk + vtkWriter.write(timeLoop->time()); + } + + timeLoop->finalize(leafGridView.comm()); + + //////////////////////////////////////////////////////////// + // finalize, print dumux message to say goodbye + //////////////////////////////////////////////////////////// + + // print dumux end message + if (mpiHelper.rank() == 0) + { + Parameters::print(); + DumuxMessage::print(/*firstCall=*/false); + } + + return 0; +} // end main +catch (Dumux::ParameterException &e) +{ + std::cerr << std::endl << e << " ---> Abort!" << std::endl; + return 1; +} +catch (Dune::DGFException & e) +{ + std::cerr << "DGF exception thrown (" << e << + "). Most likely, the DGF file name is wrong " + "or the DGF file is corrupted, " + "e.g. missing hash at end of file or wrong number (dimensions) of entries." + << " ---> Abort!" << std::endl; + return 2; +} +catch (Dune::Exception &e) +{ + std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl; + return 3; +} +catch (...) +{ + std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl; + return 4; +} diff --git a/exercises/solution/exercise-grids/exercise_grids_solution.input b/exercises/solution/exercise-grids/exercise_grids_solution.input new file mode 100644 index 00000000..75af6c79 --- /dev/null +++ b/exercises/solution/exercise-grids/exercise_grids_solution.input @@ -0,0 +1,45 @@ +[TimeLoop] +DtInitial = 3600 # in seconds +TEnd = 3.154e9 # in seconds, i.e ten years + +[Grid] +# UpperRight = 60 40 +# Cells = 24 16 + +# TODO: Task 1: Globally refine your grid +# Refinement = 2 + +# TODO: Task 2: Develop even grid input parameters that can be split into zones +# Positions0 = 0 60 +# Positions1 = 0 40 +# Cells0 = 24 +# Cells1 = 16 +# Grading0 = 1.0 +# Grading1 = 1.0 + +# TODO: Task 3: Using the zoning and grading parameters, redevelop your grid to optimize your refinement in the areas that matter. +Positions0 = 0 40 60 +Positions1 = 0 25 30 35 40 +Cells0 = 10 14 +Cells1 = 10 6 6 1 +Grading0 = 1.0 -1.25 +Grading1 = 1.0 -1.2 1.2 1.0 + +# TODO: Task 4: Run your simulation the provided structured grid file ./grids/grid_structured.msh +# File = ./grids/grid_structured.msh +# File = ./grids/grid_structured.dgf + +# TODO: Task 5: Run your simulation the provided structured grid file ./grids/grid_unstructured.msh +#File = ./grids/grid_unstructured.msh + +[Problem] +Name = grid_exercise +OnlyPlotMaterialLaws = true +AquiferDepth = 2700.0 # m +InjectionDuration = 2.628e6 # in seconds, i.e. one month + +[SpatialParams] +PermeabilityAquitard = 1e-15 # m^2 +EntryPressureAquitard = 4.5e4 # Pa +PermeabilityAquifer = 1e-12 # m^2 +EntryPressureAquifer = 1e4 # Pa diff --git a/exercises/solution/exercise-grids/grids/grid_structured.msh b/exercises/solution/exercise-grids/grids/grid_structured.msh new file mode 100644 index 00000000..56c53036 --- /dev/null +++ b/exercises/solution/exercise-grids/grids/grid_structured.msh @@ -0,0 +1,902 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$Nodes +425 +1 0 0 0 +2 60 0 0 +3 0 40 0 +4 60 40 0 +5 2.499999999999129 0 0 +6 4.99999999999853 0 0 +7 7.499999999999783 0 0 +8 9.999999999997678 0 0 +9 12.4999999999954 0 0 +10 14.99999999999313 0 0 +11 17.49999999998692 0 0 +12 19.99999999997724 0 0 +13 22.49999999996757 0 0 +14 24.99999999995789 0 0 +15 27.49999999994821 0 0 +16 29.99999999993923 0 0 +17 32.49999999994366 0 0 +18 34.99999999994878 0 0 +19 37.4999999999539 0 0 +20 39.99999999995902 0 0 +21 42.49999999996415 0 0 +22 44.99999999996926 0 0 +23 47.49999999997438 0 0 +24 49.99999999997951 0 0 +25 52.49999999998462 0 0 +26 54.99999999998975 0 0 +27 57.49999999999487 0 0 +28 60 2.499999999997803 0 +29 60 4.999999999995883 0 +30 60 7.499999999988757 0 +31 60 9.999999999981455 0 +32 60 12.49999999997415 0 +33 60 14.99999999996685 0 +34 60 17.49999999996579 0 +35 60 19.9999999999696 0 +36 60 22.4999999999734 0 +37 60 24.9999999999772 0 +38 60 27.499999999981 0 +39 60 29.9999999999848 0 +40 60 32.4999999999886 0 +41 60 34.9999999999924 0 +42 60 37.4999999999962 0 +43 57.49999999999369 40 0 +44 54.99999999998739 40 0 +45 52.49999999998108 40 0 +46 49.99999999997478 40 0 +47 47.49999999996847 40 0 +48 44.99999999996216 40 0 +49 42.49999999997158 40 0 +50 39.99999999999488 40 0 +51 37.50000000001817 40 0 +52 35.00000000004147 40 0 +53 32.50000000006477 40 0 +54 30.00000000007488 40 0 +55 27.50000000006927 40 0 +56 25.00000000006298 40 0 +57 22.50000000005668 40 0 +58 20.00000000005038 40 0 +59 17.50000000004408 40 0 +60 15.00000000003779 40 0 +61 12.50000000003149 40 0 +62 10.00000000002519 40 0 +63 7.500000000018893 40 0 +64 5.000000000012598 40 0 +65 2.500000000006303 40 0 +66 0 37.5 0 +67 0 34.99999999999999 0 +68 0 32.49999999999999 0 +69 0 29.99999999999998 0 +70 0 27.49999999999998 0 +71 0 24.99999999999998 0 +72 0 22.49999999999999 0 +73 0 19.99999999999999 0 +74 0 17.49999999999999 0 +75 0 14.99999999999999 0 +76 0 12.49999999999999 0 +77 0 9.999999999999993 0 +78 0 7.499999999999993 0 +79 0 4.999999999999993 0 +80 0 2.5 0 +81 2.499999999999578 2.499999999999908 0 +82 2.500000000000025 4.999999999999822 0 +83 2.500000000000474 7.499999999999525 0 +84 2.500000000000922 9.999999999999218 0 +85 2.50000000000137 12.49999999999892 0 +86 2.500000000001819 14.99999999999861 0 +87 2.500000000002267 17.49999999999856 0 +88 2.500000000002716 19.99999999999871 0 +89 2.500000000003164 22.49999999999888 0 +90 2.500000000003611 24.99999999999903 0 +91 2.50000000000406 27.4999999999992 0 +92 2.500000000004509 29.99999999999935 0 +93 2.500000000004957 32.49999999999952 0 +94 2.500000000005406 34.99999999999967 0 +95 2.500000000005853 37.49999999999984 0 +96 4.999999999999411 2.499999999999817 0 +97 5.000000000000289 4.999999999999652 0 +98 5.00000000000117 7.499999999999059 0 +99 5.000000000002047 9.999999999998451 0 +100 5.000000000002927 12.49999999999784 0 +101 5.000000000003806 14.99999999999723 0 +102 5.000000000004686 17.49999999999714 0 +103 5.000000000005564 19.99999999999746 0 +104 5.000000000006442 22.49999999999777 0 +105 5.000000000007321 24.99999999999808 0 +106 5.000000000008202 27.4999999999984 0 +107 5.00000000000908 29.99999999999871 0 +108 5.000000000009962 32.49999999999903 0 +109 5.000000000010838 34.99999999999936 0 +110 5.00000000001172 37.49999999999968 0 +111 7.500000000000979 2.499999999999725 0 +112 7.500000000002172 4.99999999999948 0 +113 7.500000000003367 7.499999999998589 0 +114 7.500000000004562 9.999999999997677 0 +115 7.500000000005755 12.49999999999676 0 +116 7.500000000006949 14.99999999999585 0 +117 7.500000000008145 17.49999999999571 0 +118 7.500000000009338 19.99999999999618 0 +119 7.500000000010531 22.49999999999666 0 +120 7.500000000011728 24.99999999999714 0 +121 7.500000000012921 27.4999999999976 0 +122 7.500000000014115 29.99999999999808 0 +123 7.50000000001531 32.49999999999856 0 +124 7.500000000016504 34.99999999999905 0 +125 7.5000000000177 37.49999999999952 0 +126 9.999999999999394 2.499999999999634 0 +127 10.00000000000112 4.999999999999308 0 +128 10.00000000000284 7.499999999998119 0 +129 10.00000000000455 9.999999999996902 0 +130 10.00000000000628 12.49999999999568 0 +131 10.00000000000799 14.99999999999447 0 +132 10.00000000000972 17.49999999999429 0 +133 10.00000000001143 19.99999999999492 0 +134 10.00000000001316 22.49999999999555 0 +135 10.00000000001487 24.99999999999618 0 +136 10.00000000001659 27.49999999999682 0 +137 10.00000000001831 29.99999999999745 0 +138 10.00000000002003 32.4999999999981 0 +139 10.00000000002175 34.99999999999874 0 +140 10.00000000002347 37.49999999999937 0 +141 12.49999999999766 2.499999999999542 0 +142 12.49999999999991 4.999999999999136 0 +143 12.50000000000217 7.49999999999765 0 +144 12.50000000000442 9.999999999996131 0 +145 12.50000000000668 12.49999999999461 0 +146 12.50000000000893 14.99999999999309 0 +147 12.50000000001119 17.49999999999287 0 +148 12.50000000001345 19.99999999999365 0 +149 12.5000000000157 22.49999999999444 0 +150 12.50000000001796 24.99999999999523 0 +151 12.50000000002021 27.49999999999602 0 +152 12.50000000002247 29.99999999999681 0 +153 12.50000000002472 32.49999999999761 0 +154 12.50000000002698 34.99999999999841 0 +155 12.50000000002923 37.4999999999992 0 +156 14.99999999999592 2.499999999999451 0 +157 14.99999999999871 4.999999999998965 0 +158 15.0000000000015 7.499999999997183 0 +159 15.00000000000429 9.99999999999536 0 +160 15.00000000000708 12.49999999999353 0 +161 15.00000000000987 14.99999999999171 0 +162 15.00000000001267 17.49999999999144 0 +163 15.00000000001545 19.99999999999239 0 +164 15.00000000001825 22.49999999999334 0 +165 15.00000000002104 24.99999999999428 0 +166 15.00000000002383 27.49999999999524 0 +167 15.00000000002662 29.99999999999618 0 +168 15.00000000002941 32.49999999999714 0 +169 15.00000000003221 34.9999999999981 0 +170 15.000000000035 37.49999999999906 0 +171 17.49999999999049 2.499999999999359 0 +172 17.49999999999407 4.999999999998796 0 +173 17.49999999999763 7.499999999996716 0 +174 17.50000000000121 9.999999999994586 0 +175 17.50000000000478 12.49999999999246 0 +176 17.50000000000835 14.99999999999033 0 +177 17.50000000001193 17.49999999999001 0 +178 17.5000000000155 19.99999999999113 0 +179 17.50000000001907 22.49999999999223 0 +180 17.50000000002264 24.99999999999334 0 +181 17.50000000002622 27.49999999999445 0 +182 17.50000000002979 29.99999999999555 0 +183 17.50000000003336 32.49999999999667 0 +184 17.50000000003693 34.99999999999777 0 +185 17.50000000004051 37.49999999999889 0 +186 19.99999999998182 2.499999999999268 0 +187 19.99999999998639 4.999999999998623 0 +188 19.99999999999095 7.499999999996247 0 +189 19.99999999999553 9.999999999993815 0 +190 20.0000000000001 12.49999999999138 0 +191 20.00000000000467 14.99999999998895 0 +192 20.00000000000924 17.49999999998859 0 +193 20.00000000001382 19.99999999998986 0 +194 20.00000000001839 22.49999999999112 0 +195 20.00000000002295 24.99999999999238 0 +196 20.00000000002753 27.49999999999365 0 +197 20.0000000000321 29.99999999999492 0 +198 20.00000000003667 32.49999999999618 0 +199 20.00000000004125 34.99999999999746 0 +200 20.00000000004582 37.49999999999874 0 +201 22.49999999997314 2.499999999999176 0 +202 22.49999999997871 4.999999999998452 0 +203 22.49999999998428 7.499999999995778 0 +204 22.49999999998985 9.99999999999304 0 +205 22.49999999999542 12.4999999999903 0 +206 22.50000000000099 14.99999999998757 0 +207 22.50000000000655 17.49999999998717 0 +208 22.50000000001213 19.99999999998859 0 +209 22.50000000001769 22.49999999999001 0 +210 22.50000000002327 24.99999999999144 0 +211 22.50000000002883 27.49999999999286 0 +212 22.50000000003441 29.99999999999428 0 +213 22.50000000003998 32.49999999999572 0 +214 22.50000000004554 34.99999999999714 0 +215 22.50000000005111 37.49999999999856 0 +216 24.99999999996446 2.499999999999084 0 +217 24.99999999997103 4.99999999999828 0 +218 24.9999999999776 7.49999999999531 0 +219 24.99999999998417 9.999999999992269 0 +220 24.99999999999072 12.49999999998922 0 +221 24.9999999999973 14.99999999998618 0 +222 25.00000000000387 17.49999999998574 0 +223 25.00000000001044 19.99999999998733 0 +224 25.000000000017 22.49999999998891 0 +225 25.00000000002357 24.99999999999049 0 +226 25.00000000003014 27.49999999999207 0 +227 25.00000000003671 29.99999999999366 0 +228 25.00000000004328 32.49999999999524 0 +229 25.00000000004984 34.99999999999683 0 +230 25.00000000005642 37.49999999999842 0 +231 27.49999999995578 2.499999999998993 0 +232 27.49999999996334 4.999999999998108 0 +233 27.49999999997091 7.499999999994843 0 +234 27.49999999997848 9.999999999991498 0 +235 27.49999999998604 12.49999999998815 0 +236 27.49999999999361 14.9999999999848 0 +237 27.50000000000117 17.49999999998432 0 +238 27.50000000000874 19.99999999998606 0 +239 27.5000000000163 22.4999999999878 0 +240 27.50000000002387 24.99999999998954 0 +241 27.50000000003143 27.49999999999127 0 +242 27.500000000039 29.99999999999302 0 +243 27.50000000004657 32.49999999999476 0 +244 27.50000000005413 34.99999999999652 0 +245 27.5000000000617 37.49999999999826 0 +246 29.99999999994771 2.499999999998901 0 +247 29.9999999999562 4.999999999997939 0 +248 29.99999999996466 7.499999999994374 0 +249 29.99999999997315 9.999999999990724 0 +250 29.99999999998162 12.49999999998707 0 +251 29.99999999999011 14.99999999998343 0 +252 29.99999999999858 17.49999999998289 0 +253 30.00000000000706 19.99999999998479 0 +254 30.00000000001553 22.49999999998669 0 +255 30.00000000002401 24.99999999998859 0 +256 30.00000000003249 27.49999999999049 0 +257 30.00000000004097 29.99999999999239 0 +258 30.00000000004944 32.49999999999429 0 +259 30.00000000005792 34.99999999999619 0 +260 30.00000000006641 37.49999999999809 0 +261 32.49999999995124 2.49999999999881 0 +262 32.4999999999588 4.999999999997768 0 +263 32.49999999996637 7.499999999993906 0 +264 32.49999999997394 9.999999999989953 0 +265 32.4999999999815 12.499999999986 0 +266 32.49999999998908 14.99999999998204 0 +267 32.49999999999664 17.49999999998147 0 +268 32.50000000000421 19.99999999998352 0 +269 32.50000000001179 22.49999999998558 0 +270 32.50000000001936 24.99999999998764 0 +271 32.50000000002692 27.4999999999897 0 +272 32.50000000003448 29.99999999999175 0 +273 32.50000000004206 32.49999999999382 0 +274 32.50000000004963 34.99999999999588 0 +275 32.50000000005718 37.49999999999794 0 +276 34.99999999995457 2.499999999998718 0 +277 34.99999999996037 4.999999999997596 0 +278 34.99999999996616 7.499999999993436 0 +279 34.99999999997196 9.999999999989178 0 +280 34.99999999997775 12.49999999998492 0 +281 34.99999999998355 14.99999999998066 0 +282 34.99999999998934 17.49999999998004 0 +283 34.99999999999513 19.99999999998226 0 +284 35.00000000000091 22.49999999998447 0 +285 35.00000000000671 24.99999999998669 0 +286 35.00000000001251 27.4999999999889 0 +287 35.0000000000183 29.99999999999113 0 +288 35.00000000002409 32.49999999999335 0 +289 35.00000000002987 34.99999999999557 0 +290 35.00000000003566 37.49999999999778 0 +291 37.49999999995792 2.499999999998627 0 +292 37.49999999996194 4.999999999997423 0 +293 37.49999999996595 7.499999999992972 0 +294 37.49999999996996 9.999999999988407 0 +295 37.49999999997399 12.49999999998384 0 +296 37.499999999978 14.99999999997928 0 +297 37.49999999998203 17.49999999997861 0 +298 37.49999999998605 19.99999999998099 0 +299 37.49999999999005 22.49999999998337 0 +300 37.49999999999406 24.99999999998574 0 +301 37.49999999999808 27.49999999998812 0 +302 37.5000000000021 29.99999999999049 0 +303 37.50000000000612 32.49999999999287 0 +304 37.50000000001014 34.99999999999524 0 +305 37.50000000001415 37.49999999999763 0 +306 39.99999999996127 2.499999999998535 0 +307 39.9999999999635 4.999999999997253 0 +308 39.99999999996574 7.499999999992502 0 +309 39.99999999996799 9.999999999987637 0 +310 39.99999999997024 12.49999999998277 0 +311 39.99999999997247 14.9999999999779 0 +312 39.99999999997471 17.49999999997719 0 +313 39.99999999997694 19.99999999997973 0 +314 39.99999999997918 22.49999999998226 0 +315 39.99999999998143 24.99999999998479 0 +316 39.99999999998368 27.49999999998733 0 +317 39.99999999998591 29.99999999998985 0 +318 39.99999999998814 32.4999999999924 0 +319 39.99999999999039 34.99999999999493 0 +320 39.99999999999263 37.49999999999746 0 +321 42.49999999996461 2.499999999998444 0 +322 42.49999999996507 4.999999999997082 0 +323 42.49999999996553 7.499999999992033 0 +324 42.49999999996599 9.999999999986862 0 +325 42.49999999996648 12.49999999998169 0 +326 42.49999999996694 14.99999999997652 0 +327 42.49999999996739 17.49999999997577 0 +328 42.49999999996786 19.99999999997846 0 +329 42.49999999996832 22.49999999998115 0 +330 42.49999999996879 24.99999999998384 0 +331 42.49999999996926 27.49999999998653 0 +332 42.49999999996972 29.99999999998923 0 +333 42.49999999997019 32.49999999999193 0 +334 42.49999999997065 34.99999999999461 0 +335 42.49999999997112 37.49999999999731 0 +336 44.99999999996881 2.499999999998352 0 +337 44.99999999996837 4.999999999996912 0 +338 44.99999999996793 7.499999999991565 0 +339 44.99999999996749 9.999999999986088 0 +340 44.99999999996704 12.49999999998061 0 +341 44.99999999996659 14.99999999997514 0 +342 44.99999999996615 17.49999999997434 0 +343 44.99999999996571 19.9999999999772 0 +344 44.99999999996525 22.49999999998005 0 +345 44.99999999996483 24.9999999999829 0 +346 44.99999999996437 27.49999999998574 0 +347 44.99999999996393 29.99999999998859 0 +348 44.99999999996349 32.49999999999145 0 +349 44.99999999996303 34.9999999999943 0 +350 44.99999999996261 37.49999999999715 0 +351 47.49999999997403 2.499999999998261 0 +352 47.49999999997365 4.999999999996739 0 +353 47.49999999997326 7.499999999991095 0 +354 47.49999999997291 9.999999999985317 0 +355 47.49999999997254 12.49999999997954 0 +356 47.49999999997218 14.99999999997376 0 +357 47.49999999997181 17.49999999997292 0 +358 47.49999999997144 19.99999999997593 0 +359 47.49999999997106 22.49999999997894 0 +360 47.49999999997069 24.99999999998195 0 +361 47.49999999997031 27.49999999998495 0 +362 47.49999999996994 29.99999999998796 0 +363 47.49999999996957 32.49999999999098 0 +364 47.4999999999692 34.99999999999397 0 +365 47.49999999996883 37.49999999999699 0 +366 49.99999999997923 2.499999999998169 0 +367 49.99999999997891 4.999999999996567 0 +368 49.99999999997863 7.499999999990629 0 +369 49.99999999997833 9.999999999984546 0 +370 49.99999999997803 12.49999999997846 0 +371 49.99999999997772 14.99999999997238 0 +372 49.99999999997745 17.49999999997149 0 +373 49.99999999997714 19.99999999997466 0 +374 49.99999999997685 22.49999999997783 0 +375 49.99999999997656 24.99999999998099 0 +376 49.99999999997625 27.49999999998416 0 +377 49.99999999997596 29.99999999998733 0 +378 49.99999999997567 32.49999999999051 0 +379 49.99999999997536 34.99999999999366 0 +380 49.99999999997508 37.49999999999684 0 +381 52.4999999999844 2.499999999998077 0 +382 52.49999999998418 4.999999999996397 0 +383 52.49999999998397 7.499999999990162 0 +384 52.49999999998374 9.999999999983771 0 +385 52.49999999998351 12.49999999997739 0 +386 52.49999999998329 14.99999999997099 0 +387 52.49999999998306 17.49999999997007 0 +388 52.49999999998285 19.99999999997339 0 +389 52.49999999998263 22.49999999997672 0 +390 52.49999999998241 24.99999999998005 0 +391 52.49999999998218 27.49999999998337 0 +392 52.49999999998198 29.9999999999867 0 +393 52.49999999998173 32.49999999999002 0 +394 52.49999999998152 34.99999999999335 0 +395 52.4999999999813 37.49999999999667 0 +396 54.9999999999896 2.499999999997986 0 +397 54.99999999998947 4.999999999996227 0 +398 54.9999999999893 7.499999999989694 0 +399 54.99999999998917 9.999999999982997 0 +400 54.99999999998902 12.49999999997631 0 +401 54.99999999998886 14.99999999996961 0 +402 54.99999999998872 17.49999999996864 0 +403 54.99999999998857 19.99999999997213 0 +404 54.99999999998843 22.49999999997561 0 +405 54.99999999998828 24.9999999999791 0 +406 54.99999999998813 27.49999999998258 0 +407 54.99999999998797 29.99999999998606 0 +408 54.99999999998784 32.49999999998956 0 +409 54.99999999998769 34.99999999999302 0 +410 54.99999999998754 37.49999999999653 0 +411 57.4999999999948 2.499999999997894 0 +412 57.49999999999473 4.999999999996056 0 +413 57.49999999999464 7.499999999989223 0 +414 57.49999999999456 9.999999999982229 0 +415 57.49999999999451 12.49999999997523 0 +416 57.49999999999442 14.99999999996823 0 +417 57.49999999999436 17.49999999996722 0 +418 57.49999999999427 19.99999999997086 0 +419 57.49999999999421 22.4999999999745 0 +420 57.49999999999412 24.99999999997815 0 +421 57.49999999999405 27.49999999998179 0 +422 57.49999999999399 29.99999999998543 0 +423 57.4999999999939 32.49999999998909 0 +424 57.49999999999385 34.99999999999271 0 +425 57.49999999999376 37.49999999999635 0 +$EndNodes +$Elements +468 +1 15 2 0 1 1 +2 15 2 0 2 2 +3 15 2 0 3 3 +4 15 2 0 4 4 +5 1 2 0 1 1 5 +6 1 2 0 1 5 6 +7 1 2 0 1 6 7 +8 1 2 0 1 7 8 +9 1 2 0 1 8 9 +10 1 2 0 1 9 10 +11 1 2 0 1 10 11 +12 1 2 0 1 11 12 +13 1 2 0 1 12 13 +14 1 2 0 1 13 14 +15 1 2 0 1 14 15 +16 1 2 0 1 15 16 +17 1 2 0 1 16 17 +18 1 2 0 1 17 18 +19 1 2 0 1 18 19 +20 1 2 0 1 19 20 +21 1 2 0 1 20 21 +22 1 2 0 1 21 22 +23 1 2 0 1 22 23 +24 1 2 0 1 23 24 +25 1 2 0 1 24 25 +26 1 2 0 1 25 26 +27 1 2 0 1 26 27 +28 1 2 0 1 27 2 +29 1 2 0 2 2 28 +30 1 2 0 2 28 29 +31 1 2 0 2 29 30 +32 1 2 0 2 30 31 +33 1 2 0 2 31 32 +34 1 2 0 2 32 33 +35 1 2 0 2 33 34 +36 1 2 0 2 34 35 +37 1 2 0 2 35 36 +38 1 2 0 2 36 37 +39 1 2 0 2 37 38 +40 1 2 0 2 38 39 +41 1 2 0 2 39 40 +42 1 2 0 2 40 41 +43 1 2 0 2 41 42 +44 1 2 0 2 42 4 +45 1 2 0 3 4 43 +46 1 2 0 3 43 44 +47 1 2 0 3 44 45 +48 1 2 0 3 45 46 +49 1 2 0 3 46 47 +50 1 2 0 3 47 48 +51 1 2 0 3 48 49 +52 1 2 0 3 49 50 +53 1 2 0 3 50 51 +54 1 2 0 3 51 52 +55 1 2 0 3 52 53 +56 1 2 0 3 53 54 +57 1 2 0 3 54 55 +58 1 2 0 3 55 56 +59 1 2 0 3 56 57 +60 1 2 0 3 57 58 +61 1 2 0 3 58 59 +62 1 2 0 3 59 60 +63 1 2 0 3 60 61 +64 1 2 0 3 61 62 +65 1 2 0 3 62 63 +66 1 2 0 3 63 64 +67 1 2 0 3 64 65 +68 1 2 0 3 65 3 +69 1 2 0 4 3 66 +70 1 2 0 4 66 67 +71 1 2 0 4 67 68 +72 1 2 0 4 68 69 +73 1 2 0 4 69 70 +74 1 2 0 4 70 71 +75 1 2 0 4 71 72 +76 1 2 0 4 72 73 +77 1 2 0 4 73 74 +78 1 2 0 4 74 75 +79 1 2 0 4 75 76 +80 1 2 0 4 76 77 +81 1 2 0 4 77 78 +82 1 2 0 4 78 79 +83 1 2 0 4 79 80 +84 1 2 0 4 80 1 +85 3 2 0 6 1 5 81 80 +86 3 2 0 6 80 81 82 79 +87 3 2 0 6 79 82 83 78 +88 3 2 0 6 78 83 84 77 +89 3 2 0 6 77 84 85 76 +90 3 2 0 6 76 85 86 75 +91 3 2 0 6 75 86 87 74 +92 3 2 0 6 74 87 88 73 +93 3 2 0 6 73 88 89 72 +94 3 2 0 6 72 89 90 71 +95 3 2 0 6 71 90 91 70 +96 3 2 0 6 70 91 92 69 +97 3 2 0 6 69 92 93 68 +98 3 2 0 6 68 93 94 67 +99 3 2 0 6 67 94 95 66 +100 3 2 0 6 66 95 65 3 +101 3 2 0 6 5 6 96 81 +102 3 2 0 6 81 96 97 82 +103 3 2 0 6 82 97 98 83 +104 3 2 0 6 83 98 99 84 +105 3 2 0 6 84 99 100 85 +106 3 2 0 6 85 100 101 86 +107 3 2 0 6 86 101 102 87 +108 3 2 0 6 87 102 103 88 +109 3 2 0 6 88 103 104 89 +110 3 2 0 6 89 104 105 90 +111 3 2 0 6 90 105 106 91 +112 3 2 0 6 91 106 107 92 +113 3 2 0 6 92 107 108 93 +114 3 2 0 6 93 108 109 94 +115 3 2 0 6 94 109 110 95 +116 3 2 0 6 95 110 64 65 +117 3 2 0 6 6 7 111 96 +118 3 2 0 6 96 111 112 97 +119 3 2 0 6 97 112 113 98 +120 3 2 0 6 98 113 114 99 +121 3 2 0 6 99 114 115 100 +122 3 2 0 6 100 115 116 101 +123 3 2 0 6 101 116 117 102 +124 3 2 0 6 102 117 118 103 +125 3 2 0 6 103 118 119 104 +126 3 2 0 6 104 119 120 105 +127 3 2 0 6 105 120 121 106 +128 3 2 0 6 106 121 122 107 +129 3 2 0 6 107 122 123 108 +130 3 2 0 6 108 123 124 109 +131 3 2 0 6 109 124 125 110 +132 3 2 0 6 110 125 63 64 +133 3 2 0 6 7 8 126 111 +134 3 2 0 6 111 126 127 112 +135 3 2 0 6 112 127 128 113 +136 3 2 0 6 113 128 129 114 +137 3 2 0 6 114 129 130 115 +138 3 2 0 6 115 130 131 116 +139 3 2 0 6 116 131 132 117 +140 3 2 0 6 117 132 133 118 +141 3 2 0 6 118 133 134 119 +142 3 2 0 6 119 134 135 120 +143 3 2 0 6 120 135 136 121 +144 3 2 0 6 121 136 137 122 +145 3 2 0 6 122 137 138 123 +146 3 2 0 6 123 138 139 124 +147 3 2 0 6 124 139 140 125 +148 3 2 0 6 125 140 62 63 +149 3 2 0 6 8 9 141 126 +150 3 2 0 6 126 141 142 127 +151 3 2 0 6 127 142 143 128 +152 3 2 0 6 128 143 144 129 +153 3 2 0 6 129 144 145 130 +154 3 2 0 6 130 145 146 131 +155 3 2 0 6 131 146 147 132 +156 3 2 0 6 132 147 148 133 +157 3 2 0 6 133 148 149 134 +158 3 2 0 6 134 149 150 135 +159 3 2 0 6 135 150 151 136 +160 3 2 0 6 136 151 152 137 +161 3 2 0 6 137 152 153 138 +162 3 2 0 6 138 153 154 139 +163 3 2 0 6 139 154 155 140 +164 3 2 0 6 140 155 61 62 +165 3 2 0 6 9 10 156 141 +166 3 2 0 6 141 156 157 142 +167 3 2 0 6 142 157 158 143 +168 3 2 0 6 143 158 159 144 +169 3 2 0 6 144 159 160 145 +170 3 2 0 6 145 160 161 146 +171 3 2 0 6 146 161 162 147 +172 3 2 0 6 147 162 163 148 +173 3 2 0 6 148 163 164 149 +174 3 2 0 6 149 164 165 150 +175 3 2 0 6 150 165 166 151 +176 3 2 0 6 151 166 167 152 +177 3 2 0 6 152 167 168 153 +178 3 2 0 6 153 168 169 154 +179 3 2 0 6 154 169 170 155 +180 3 2 0 6 155 170 60 61 +181 3 2 0 6 10 11 171 156 +182 3 2 0 6 156 171 172 157 +183 3 2 0 6 157 172 173 158 +184 3 2 0 6 158 173 174 159 +185 3 2 0 6 159 174 175 160 +186 3 2 0 6 160 175 176 161 +187 3 2 0 6 161 176 177 162 +188 3 2 0 6 162 177 178 163 +189 3 2 0 6 163 178 179 164 +190 3 2 0 6 164 179 180 165 +191 3 2 0 6 165 180 181 166 +192 3 2 0 6 166 181 182 167 +193 3 2 0 6 167 182 183 168 +194 3 2 0 6 168 183 184 169 +195 3 2 0 6 169 184 185 170 +196 3 2 0 6 170 185 59 60 +197 3 2 0 6 11 12 186 171 +198 3 2 0 6 171 186 187 172 +199 3 2 0 6 172 187 188 173 +200 3 2 0 6 173 188 189 174 +201 3 2 0 6 174 189 190 175 +202 3 2 0 6 175 190 191 176 +203 3 2 0 6 176 191 192 177 +204 3 2 0 6 177 192 193 178 +205 3 2 0 6 178 193 194 179 +206 3 2 0 6 179 194 195 180 +207 3 2 0 6 180 195 196 181 +208 3 2 0 6 181 196 197 182 +209 3 2 0 6 182 197 198 183 +210 3 2 0 6 183 198 199 184 +211 3 2 0 6 184 199 200 185 +212 3 2 0 6 185 200 58 59 +213 3 2 0 6 12 13 201 186 +214 3 2 0 6 186 201 202 187 +215 3 2 0 6 187 202 203 188 +216 3 2 0 6 188 203 204 189 +217 3 2 0 6 189 204 205 190 +218 3 2 0 6 190 205 206 191 +219 3 2 0 6 191 206 207 192 +220 3 2 0 6 192 207 208 193 +221 3 2 0 6 193 208 209 194 +222 3 2 0 6 194 209 210 195 +223 3 2 0 6 195 210 211 196 +224 3 2 0 6 196 211 212 197 +225 3 2 0 6 197 212 213 198 +226 3 2 0 6 198 213 214 199 +227 3 2 0 6 199 214 215 200 +228 3 2 0 6 200 215 57 58 +229 3 2 0 6 13 14 216 201 +230 3 2 0 6 201 216 217 202 +231 3 2 0 6 202 217 218 203 +232 3 2 0 6 203 218 219 204 +233 3 2 0 6 204 219 220 205 +234 3 2 0 6 205 220 221 206 +235 3 2 0 6 206 221 222 207 +236 3 2 0 6 207 222 223 208 +237 3 2 0 6 208 223 224 209 +238 3 2 0 6 209 224 225 210 +239 3 2 0 6 210 225 226 211 +240 3 2 0 6 211 226 227 212 +241 3 2 0 6 212 227 228 213 +242 3 2 0 6 213 228 229 214 +243 3 2 0 6 214 229 230 215 +244 3 2 0 6 215 230 56 57 +245 3 2 0 6 14 15 231 216 +246 3 2 0 6 216 231 232 217 +247 3 2 0 6 217 232 233 218 +248 3 2 0 6 218 233 234 219 +249 3 2 0 6 219 234 235 220 +250 3 2 0 6 220 235 236 221 +251 3 2 0 6 221 236 237 222 +252 3 2 0 6 222 237 238 223 +253 3 2 0 6 223 238 239 224 +254 3 2 0 6 224 239 240 225 +255 3 2 0 6 225 240 241 226 +256 3 2 0 6 226 241 242 227 +257 3 2 0 6 227 242 243 228 +258 3 2 0 6 228 243 244 229 +259 3 2 0 6 229 244 245 230 +260 3 2 0 6 230 245 55 56 +261 3 2 0 6 15 16 246 231 +262 3 2 0 6 231 246 247 232 +263 3 2 0 6 232 247 248 233 +264 3 2 0 6 233 248 249 234 +265 3 2 0 6 234 249 250 235 +266 3 2 0 6 235 250 251 236 +267 3 2 0 6 236 251 252 237 +268 3 2 0 6 237 252 253 238 +269 3 2 0 6 238 253 254 239 +270 3 2 0 6 239 254 255 240 +271 3 2 0 6 240 255 256 241 +272 3 2 0 6 241 256 257 242 +273 3 2 0 6 242 257 258 243 +274 3 2 0 6 243 258 259 244 +275 3 2 0 6 244 259 260 245 +276 3 2 0 6 245 260 54 55 +277 3 2 0 6 16 17 261 246 +278 3 2 0 6 246 261 262 247 +279 3 2 0 6 247 262 263 248 +280 3 2 0 6 248 263 264 249 +281 3 2 0 6 249 264 265 250 +282 3 2 0 6 250 265 266 251 +283 3 2 0 6 251 266 267 252 +284 3 2 0 6 252 267 268 253 +285 3 2 0 6 253 268 269 254 +286 3 2 0 6 254 269 270 255 +287 3 2 0 6 255 270 271 256 +288 3 2 0 6 256 271 272 257 +289 3 2 0 6 257 272 273 258 +290 3 2 0 6 258 273 274 259 +291 3 2 0 6 259 274 275 260 +292 3 2 0 6 260 275 53 54 +293 3 2 0 6 17 18 276 261 +294 3 2 0 6 261 276 277 262 +295 3 2 0 6 262 277 278 263 +296 3 2 0 6 263 278 279 264 +297 3 2 0 6 264 279 280 265 +298 3 2 0 6 265 280 281 266 +299 3 2 0 6 266 281 282 267 +300 3 2 0 6 267 282 283 268 +301 3 2 0 6 268 283 284 269 +302 3 2 0 6 269 284 285 270 +303 3 2 0 6 270 285 286 271 +304 3 2 0 6 271 286 287 272 +305 3 2 0 6 272 287 288 273 +306 3 2 0 6 273 288 289 274 +307 3 2 0 6 274 289 290 275 +308 3 2 0 6 275 290 52 53 +309 3 2 0 6 18 19 291 276 +310 3 2 0 6 276 291 292 277 +311 3 2 0 6 277 292 293 278 +312 3 2 0 6 278 293 294 279 +313 3 2 0 6 279 294 295 280 +314 3 2 0 6 280 295 296 281 +315 3 2 0 6 281 296 297 282 +316 3 2 0 6 282 297 298 283 +317 3 2 0 6 283 298 299 284 +318 3 2 0 6 284 299 300 285 +319 3 2 0 6 285 300 301 286 +320 3 2 0 6 286 301 302 287 +321 3 2 0 6 287 302 303 288 +322 3 2 0 6 288 303 304 289 +323 3 2 0 6 289 304 305 290 +324 3 2 0 6 290 305 51 52 +325 3 2 0 6 19 20 306 291 +326 3 2 0 6 291 306 307 292 +327 3 2 0 6 292 307 308 293 +328 3 2 0 6 293 308 309 294 +329 3 2 0 6 294 309 310 295 +330 3 2 0 6 295 310 311 296 +331 3 2 0 6 296 311 312 297 +332 3 2 0 6 297 312 313 298 +333 3 2 0 6 298 313 314 299 +334 3 2 0 6 299 314 315 300 +335 3 2 0 6 300 315 316 301 +336 3 2 0 6 301 316 317 302 +337 3 2 0 6 302 317 318 303 +338 3 2 0 6 303 318 319 304 +339 3 2 0 6 304 319 320 305 +340 3 2 0 6 305 320 50 51 +341 3 2 0 6 20 21 321 306 +342 3 2 0 6 306 321 322 307 +343 3 2 0 6 307 322 323 308 +344 3 2 0 6 308 323 324 309 +345 3 2 0 6 309 324 325 310 +346 3 2 0 6 310 325 326 311 +347 3 2 0 6 311 326 327 312 +348 3 2 0 6 312 327 328 313 +349 3 2 0 6 313 328 329 314 +350 3 2 0 6 314 329 330 315 +351 3 2 0 6 315 330 331 316 +352 3 2 0 6 316 331 332 317 +353 3 2 0 6 317 332 333 318 +354 3 2 0 6 318 333 334 319 +355 3 2 0 6 319 334 335 320 +356 3 2 0 6 320 335 49 50 +357 3 2 0 6 21 22 336 321 +358 3 2 0 6 321 336 337 322 +359 3 2 0 6 322 337 338 323 +360 3 2 0 6 323 338 339 324 +361 3 2 0 6 324 339 340 325 +362 3 2 0 6 325 340 341 326 +363 3 2 0 6 326 341 342 327 +364 3 2 0 6 327 342 343 328 +365 3 2 0 6 328 343 344 329 +366 3 2 0 6 329 344 345 330 +367 3 2 0 6 330 345 346 331 +368 3 2 0 6 331 346 347 332 +369 3 2 0 6 332 347 348 333 +370 3 2 0 6 333 348 349 334 +371 3 2 0 6 334 349 350 335 +372 3 2 0 6 335 350 48 49 +373 3 2 0 6 22 23 351 336 +374 3 2 0 6 336 351 352 337 +375 3 2 0 6 337 352 353 338 +376 3 2 0 6 338 353 354 339 +377 3 2 0 6 339 354 355 340 +378 3 2 0 6 340 355 356 341 +379 3 2 0 6 341 356 357 342 +380 3 2 0 6 342 357 358 343 +381 3 2 0 6 343 358 359 344 +382 3 2 0 6 344 359 360 345 +383 3 2 0 6 345 360 361 346 +384 3 2 0 6 346 361 362 347 +385 3 2 0 6 347 362 363 348 +386 3 2 0 6 348 363 364 349 +387 3 2 0 6 349 364 365 350 +388 3 2 0 6 350 365 47 48 +389 3 2 0 6 23 24 366 351 +390 3 2 0 6 351 366 367 352 +391 3 2 0 6 352 367 368 353 +392 3 2 0 6 353 368 369 354 +393 3 2 0 6 354 369 370 355 +394 3 2 0 6 355 370 371 356 +395 3 2 0 6 356 371 372 357 +396 3 2 0 6 357 372 373 358 +397 3 2 0 6 358 373 374 359 +398 3 2 0 6 359 374 375 360 +399 3 2 0 6 360 375 376 361 +400 3 2 0 6 361 376 377 362 +401 3 2 0 6 362 377 378 363 +402 3 2 0 6 363 378 379 364 +403 3 2 0 6 364 379 380 365 +404 3 2 0 6 365 380 46 47 +405 3 2 0 6 24 25 381 366 +406 3 2 0 6 366 381 382 367 +407 3 2 0 6 367 382 383 368 +408 3 2 0 6 368 383 384 369 +409 3 2 0 6 369 384 385 370 +410 3 2 0 6 370 385 386 371 +411 3 2 0 6 371 386 387 372 +412 3 2 0 6 372 387 388 373 +413 3 2 0 6 373 388 389 374 +414 3 2 0 6 374 389 390 375 +415 3 2 0 6 375 390 391 376 +416 3 2 0 6 376 391 392 377 +417 3 2 0 6 377 392 393 378 +418 3 2 0 6 378 393 394 379 +419 3 2 0 6 379 394 395 380 +420 3 2 0 6 380 395 45 46 +421 3 2 0 6 25 26 396 381 +422 3 2 0 6 381 396 397 382 +423 3 2 0 6 382 397 398 383 +424 3 2 0 6 383 398 399 384 +425 3 2 0 6 384 399 400 385 +426 3 2 0 6 385 400 401 386 +427 3 2 0 6 386 401 402 387 +428 3 2 0 6 387 402 403 388 +429 3 2 0 6 388 403 404 389 +430 3 2 0 6 389 404 405 390 +431 3 2 0 6 390 405 406 391 +432 3 2 0 6 391 406 407 392 +433 3 2 0 6 392 407 408 393 +434 3 2 0 6 393 408 409 394 +435 3 2 0 6 394 409 410 395 +436 3 2 0 6 395 410 44 45 +437 3 2 0 6 26 27 411 396 +438 3 2 0 6 396 411 412 397 +439 3 2 0 6 397 412 413 398 +440 3 2 0 6 398 413 414 399 +441 3 2 0 6 399 414 415 400 +442 3 2 0 6 400 415 416 401 +443 3 2 0 6 401 416 417 402 +444 3 2 0 6 402 417 418 403 +445 3 2 0 6 403 418 419 404 +446 3 2 0 6 404 419 420 405 +447 3 2 0 6 405 420 421 406 +448 3 2 0 6 406 421 422 407 +449 3 2 0 6 407 422 423 408 +450 3 2 0 6 408 423 424 409 +451 3 2 0 6 409 424 425 410 +452 3 2 0 6 410 425 43 44 +453 3 2 0 6 27 2 28 411 +454 3 2 0 6 411 28 29 412 +455 3 2 0 6 412 29 30 413 +456 3 2 0 6 413 30 31 414 +457 3 2 0 6 414 31 32 415 +458 3 2 0 6 415 32 33 416 +459 3 2 0 6 416 33 34 417 +460 3 2 0 6 417 34 35 418 +461 3 2 0 6 418 35 36 419 +462 3 2 0 6 419 36 37 420 +463 3 2 0 6 420 37 38 421 +464 3 2 0 6 421 38 39 422 +465 3 2 0 6 422 39 40 423 +466 3 2 0 6 423 40 41 424 +467 3 2 0 6 424 41 42 425 +468 3 2 0 6 425 42 4 43 +$EndElements diff --git a/exercises/solution/exercise-grids/grids/grid_unstructured.db b/exercises/solution/exercise-grids/grids/grid_unstructured.db new file mode 100644 index 0000000000000000000000000000000000000000..58e106079941629ef1d3c8285c83ac5858b58c0f GIT binary patch literal 949 zcma)4O;77E5ZrTrh3`*oVnca_TPYs`(LQb*kz+4OL}Ew&Kycu{vrbx|1kh8YWNl|= zXU6+)bAGctWm*PVNRLc8lmRs>UYIr5$bxxvPv~gH?r8ryHjHz|#YrwsM9xIc7n7p} z<Ff-Wu`SR+zQ!P1tFg&$tnC2cfJ450QZ?oHN8~wdKWU>soy?DV9v@t7O1Q*ucAG6# zsI4KA9RuM&*|v)Tp+tkOR&+L*&-bvcuf|Xgm$XlRbNCG9hlBoI--KN!{Y)0#Hq?l9 zGE`d)oY1SrdelA9J7ZSa7PF=jnL({G9ozW4ve9`Q>ZuwQ_>4}~9(}f}rlqU3&xZGB zVT-+7Q>U#iUAJibkW0$$Cr#q#tQY%Pe{dVwVsAB(es47?y^n_SiYi2hdRC%^hq}RZ z6UTo?H?j8B1)XjZ^%{M}h9)!@gZl6C95*42A5F&5Z2IwI_JMWPi?5YzSm|u+Jh}NT zq+bS-AC6Ocy)ra=EV)h0y$22gmND2>h3b(q_&-1Ip$YghJhPI#ItAkl5@zxSu`2?{ literal 0 HcmV?d00001 diff --git a/exercises/solution/exercise-grids/grids/grid_unstructured.geo b/exercises/solution/exercise-grids/grids/grid_unstructured.geo new file mode 100644 index 00000000..f3f952d3 --- /dev/null +++ b/exercises/solution/exercise-grids/grids/grid_unstructured.geo @@ -0,0 +1,17 @@ +X = 60; +Y = 40; +Res = 1; + +Point(1) = {0,0,0,Res}; +Point(2) = {X,0,0,Res}; +Point(3) = {X,Y,0,Res}; +Point(4) = {0,Y,0,Res}; + +Line(5) = {1,2}; +Line(6) = {2,3}; +Line(7) = {3,4}; +Line(8) = {4,1}; + +Line Loop(9) = {5,6,7,8}; + +Plane Surface(10) = 9; diff --git a/exercises/solution/exercise-grids/grids/grid_unstructured.msh b/exercises/solution/exercise-grids/grids/grid_unstructured.msh new file mode 100644 index 00000000..025c1099 --- /dev/null +++ b/exercises/solution/exercise-grids/grids/grid_unstructured.msh @@ -0,0 +1,2495 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$Nodes +828 +1 0 0 0 +2 60 0 0 +3 60 40 0 +4 0 40 0 +5 1.999999999999485 0 0 +6 3.999999999998073 0 0 +7 5.999999999999088 0 0 +8 7.999999999999485 0 0 +9 9.999999999997659 0 0 +10 11.99999999999584 0 0 +11 13.99999999999401 0 0 +12 15.9999999999921 0 0 +13 17.99999999998495 0 0 +14 19.9999999999772 0 0 +15 21.99999999996945 0 0 +16 23.9999999999617 0 0 +17 25.99999999995395 0 0 +18 27.9999999999462 0 0 +19 29.99999999993915 0 0 +20 31.99999999994255 0 0 +21 33.99999999994665 0 0 +22 35.99999999995075 0 0 +23 37.99999999995486 0 0 +24 39.99999999995897 0 0 +25 41.99999999996307 0 0 +26 43.99999999996717 0 0 +27 45.99999999997128 0 0 +28 47.99999999997537 0 0 +29 49.99999999997949 0 0 +30 51.99999999998358 0 0 +31 53.99999999998769 0 0 +32 55.99999999999179 0 0 +33 57.9999999999959 0 0 +34 60 1.999999999998205 0 +35 60 3.999999999996757 0 +36 60 5.999999999993141 0 +37 60 7.999999999987307 0 +38 60 9.999999999981473 0 +39 60 11.99999999997564 0 +40 60 13.9999999999698 0 +41 60 15.99999999996411 0 +42 60 17.9999999999666 0 +43 60 19.99999999996964 0 +44 60 21.99999999997269 0 +45 60 23.99999999997573 0 +46 60 25.99999999997878 0 +47 60 27.99999999998182 0 +48 60 29.99999999998487 0 +49 60 31.99999999998791 0 +50 60 33.99999999999093 0 +51 60 35.99999999999396 0 +52 60 37.99999999999698 0 +53 57.99999999999496 40 0 +54 55.99999999998992 40 0 +55 53.99999999998488 40 0 +56 51.99999999997985 40 0 +57 49.9999999999748 40 0 +58 47.99999999996977 40 0 +59 45.99999999996473 40 0 +60 43.99999999996006 40 0 +61 41.9999999999763 40 0 +62 39.99999999999495 40 0 +63 38.00000000001359 40 0 +64 36.00000000003224 40 0 +65 34.00000000005089 40 0 +66 32.00000000006851 40 0 +67 30.00000000007499 40 0 +68 28.00000000007064 40 0 +69 26.0000000000656 40 0 +70 24.00000000006055 40 0 +71 22.00000000005551 40 0 +72 20.00000000005046 40 0 +73 18.0000000000454 40 0 +74 16.00000000004037 40 0 +75 14.00000000003531 40 0 +76 12.00000000003028 40 0 +77 10.00000000002522 40 0 +78 8.000000000020179 40 0 +79 6.000000000015135 40 0 +80 4.000000000010083 40 0 +81 2.000000000005038 40 0 +82 0 37.99999999999999 0 +83 0 35.99999999999999 0 +84 0 33.99999999999999 0 +85 0 31.99999999999998 0 +86 0 29.99999999999998 0 +87 0 27.99999999999998 0 +88 0 25.99999999999997 0 +89 0 23.99999999999996 0 +90 0 21.99999999999996 0 +91 0 19.99999999999996 0 +92 0 17.99999999999995 0 +93 0 15.99999999999995 0 +94 0 13.99999999999995 0 +95 0 11.99999999999994 0 +96 0 9.999999999999936 0 +97 0 7.999999999999929 0 +98 0 5.99999999999995 0 +99 0 3.999999999999964 0 +100 0 1.999999999999986 0 +101 39.00000000000431 20.0000000000009 0 +102 19.57173691029124 19.54049823408953 0 +103 28.99802686277825 27.54946195771791 0 +104 29.37007344651154 12.56111592387656 0 +105 47.98275862069078 12.0172413793093 0 +106 47.98275862069124 27.98275862069122 0 +107 11.46545191690494 28.61972553789946 0 +108 11.32528599485151 11.44002048724304 0 +109 38.56475496696381 30.43392971786805 0 +110 38.67651981649291 9.592987471490092 0 +111 20.54834006620429 9.347170512059202 0 +112 20.54853364096638 30.46277907463715 0 +113 9.104347738330372 19.80164381375023 0 +114 51.34000395784842 20.00000000000016 0 +115 31.30637989953582 19.63065755350712 0 +116 53.19388097028544 7.062624801210999 0 +117 53.17847789555776 32.9408955558978 0 +118 6.845742250328072 33.1542577496698 0 +119 32.14848270356406 33.49586960171212 0 +120 6.680731081496988 6.823110676686175 0 +121 32.92545744791219 6.578140824946925 0 +122 44.40525640428363 33.41464866381523 0 +123 44.50394038394682 6.485722796253228 0 +124 45.70727466001121 17.62023620746574 0 +125 23.03822747157062 24.69801623937823 0 +126 26.0248417325958 6.504732740991964 0 +127 25.47182839748599 17.17105383216406 0 +128 35.13400453636564 15.02709655118179 0 +129 26.3268589713642 33.58642735241571 0 +130 14.89053318766005 33.74435162223972 0 +131 15.04494419070886 6.24492893301058 0 +132 35.26369971811212 24.76587505927067 0 +133 42.32540932572961 25.30341032975387 0 +134 53.81389790258498 14.2317370953028 0 +135 53.65131972353306 25.59022068053177 0 +136 6.181420295222463 25.4916686647685 0 +137 17.02822019191684 25.19478066677139 0 +138 6.081921779407127 14.57596474569209 0 +139 13.74692199577804 16.80760551718488 0 +140 40.52370296669014 14.57846792369446 0 +141 18.67142315852848 14.4660838078778 0 +142 46.94999840954156 22.85107456574005 0 +143 37.14240881269247 34.90154810292083 0 +144 24.49505929666099 12.32959488128812 0 +145 12.10693102355102 23.17597007061547 0 +146 37.35755895766331 4.976199412003188 0 +147 48.7176083606431 35.07875206883834 0 +148 27.17963695010815 21.79464725545201 0 +149 22.15838483863017 4.727032769187768 0 +150 48.85976203823084 4.853048337396723 0 +151 19.26318088170371 35.26706884328454 0 +152 10.76127931309533 4.545237950540957 0 +153 43.62759114802792 11.05008997749187 0 +154 24.81821544104447 29.29969156982221 0 +155 4.50404908834339 21.22614078501238 0 +156 15.81507610323093 10.94188474149736 0 +157 10.71621761931781 35.52044200475348 0 +158 55.28430213217758 18.43057588851923 0 +159 16.26163379771344 29.50034538854167 0 +160 33.1780574761881 28.97625743314068 0 +161 3.664250174480513 29.62521670826527 0 +162 4.610539465348312 10.28775493473934 0 +163 33.55359319039001 10.79878522901872 0 +164 48.93357812889406 16.20311977609938 0 +165 56.51918617909236 10.33578203392825 0 +166 55.51197399828762 29.5076727321416 0 +167 42.42893991237332 29.71421399210089 0 +168 10.16926151701585 15.57886906055117 0 +169 15.33386751103512 20.57853108946497 0 +170 56.2057133649969 3.78558934674895 0 +171 56.17206883299853 36.20863745493613 0 +172 42.49290959298233 21.260039333213 0 +173 29.58912003771929 4.190680850420747 0 +174 31.0389651958188 24.17516382301651 0 +175 41.21230738151432 36.03659228436947 0 +176 35.13682483955292 18.88532040335662 0 +177 31.51767051423157 16.13348734066164 0 +178 29.65563245585266 36.12730276028777 0 +179 41.74524803059263 3.65596876784288 0 +180 56.05622487109099 22.37402644725489 0 +181 3.901463469354754 36.01572694520217 0 +182 51.91889814502719 10.71885804873933 0 +183 51.74575690844499 29.22623048495892 0 +184 22.85227391848806 36.44989494486925 0 +185 3.567143334471394 3.626365566332363 0 +186 18.25075015433822 3.482898292935071 0 +187 38.82074154157894 23.86046718605372 0 +188 3.813106116369589 17.37199805032064 0 +189 29.15810951324791 31.402214258306 0 +190 23.02206274235776 21.35926675171254 0 +191 8.131367176784162 29.68567787128401 0 +192 29.63780066015219 8.423631515680162 0 +193 50.61682326646074 23.69180810830027 0 +194 21.72198808236458 16.51774728190811 0 +195 47.71110897231299 7.976759097059108 0 +196 20.47526328447607 27.03511058766917 0 +197 47.43307713672556 31.76493343925862 0 +198 11.84152364623001 31.74659878292604 0 +199 8.007875176365928 10.03449284667732 0 +200 45.12895196563618 14.2650244257144 0 +201 20.25608025528369 22.89145891629432 0 +202 52.06494605777476 36.43398763652046 0 +203 52.07425778102984 3.533935408472676 0 +204 12.08752998154306 7.7933954128102 0 +205 34.19720778581862 36.5197906229385 0 +206 7.421324839034245 36.58583577254074 0 +207 8.894499440030188 23.35146493865577 0 +208 34.36370378506363 3.428987056967423 0 +209 45.86766484087779 36.97124127277168 0 +210 24.73076859933535 3.30103914644281 0 +211 26.53496670070944 25.20854350842316 0 +212 23.92093578710172 9.028942952696639 0 +213 41.86498041379962 17.86555484949344 0 +214 41.08239746262585 32.33750768523045 0 +215 12.34436886887416 19.76703096029577 0 +216 7.590006916977604 3.219198800854388 0 +217 46.0096533167744 3.033663598643167 0 +218 38.03379690478792 16.76527759565394 0 +219 35.50044382592352 32.0887313085932 0 +220 3.435581074717459 7.075641217793229 0 +221 3.49122095864401 32.65209572974848 0 +222 41.32862406194875 7.496939889467725 0 +223 37.94374655615847 12.97316377120565 0 +224 14.04556998194999 13.49399166171501 0 +225 48.00773443660442 19.67440548518706 0 +226 37.67501745790091 27.04402127205134 0 +227 35.86874801157273 7.818226755792534 0 +228 56.76677828122477 7.352864377373234 0 +229 56.76558057717082 32.66608619952301 0 +230 16.24214918771036 36.61347836309096 0 +231 28.65117168060504 17.9353991346328 0 +232 45.55237183638609 25.80211371768788 0 +233 13.52369703684965 2.923934485866771 0 +234 33.69478926382234 21.9475711033987 0 +235 18.1394375176183 7.268117427966128 0 +236 22.987805948129 32.84667440042395 0 +237 56.8627267525591 15.47810196459868 0 +238 3.219543247879315 24.21195468504503 0 +239 27.22267696679798 14.3427721411452 0 +240 17.16233273913676 17.52664705251821 0 +241 57.0552505065171 26.3479942468148 0 +242 21.30722192858797 12.53236554837953 0 +243 2.874739091811121 13.58334737057625 0 +244 26.5027694931902 36.79419910475468 0 +245 26.86235244040927 10.21610171363138 0 +246 17.83008563610607 32.5523352173009 0 +247 13.98150151833597 26.07834876735972 0 +248 8.879605436296627 26.69482148846037 0 +249 52.22258263354087 16.99328642532413 0 +250 6.914308197590605 17.45164249426969 0 +251 50.9866381564024 13.49340587218996 0 +252 13.29978786556951 37.2167066166575 0 +253 36.71055090760149 21.88657294066183 0 +254 40.5476922038166 11.65415077575604 0 +255 45.53429792865123 29.56755427468955 0 +256 8.597194550683991 12.93419968780056 0 +257 2.767019233155985 27.02440729217133 0 +258 50.52927409769192 26.59202012957235 0 +259 40.48207811230814 27.38278568114894 0 +260 53.06988167574252 22.32543718171095 0 +261 50.31529139679847 31.68166394518787 0 +262 18.61416775494303 11.59839082508717 0 +263 32.28961109377968 13.48076826316487 0 +264 57.22841358845311 12.86500010339141 0 +265 50.42506433696962 8.337671976611372 0 +266 38.93917253511727 2.588963466409449 0 +267 38.77021242901854 37.42157559986858 0 +268 32.65295918394641 26.27066573303631 0 +269 36.01451747777997 29.20874372507058 0 +270 9.033987587163905 6.734650151015549 0 +271 48.2722405068158 25.28664489811088 0 +272 45.72247743714108 20.67178589702385 0 +273 13.57788062132239 30.16329394810695 0 +274 22.69122415749995 27.48337068265297 0 +275 23.93539964670421 14.95322389871303 0 +276 35.94501367213665 10.71486669252743 0 +277 29.38003705311343 21.96857202994988 0 +278 15.00028305888307 23.33219412893082 0 +279 21.20330411424706 37.34321272231626 0 +280 46.01183513477358 10.25776442226347 0 +281 44.88041651671634 23.56316576090219 0 +282 20.16259845192405 2.44199215365775 0 +283 31.32184054626386 2.920318105719168 0 +284 27.47145812694843 2.550129400637472 0 +285 17.39493265151342 22.38850377096898 0 +286 57.36553795148912 20.44062546811967 0 +287 9.3109154756718 33.26106709708652 0 +288 27.39167000636339 29.52864414423557 0 +289 31.59385736524082 37.46155243135509 0 +290 25.34803052025728 19.69414289978238 0 +291 43.11485031308248 37.48231184029044 0 +292 38.35227900940082 32.78618242991001 0 +293 42.77497290409048 16.16536521279788 0 +294 16.70252903035232 14.3978583158714 0 +295 10.47681564259297 17.92587752785463 0 +296 14.17740773239179 8.727733254814229 0 +297 6.96111019091434 21.28334915736548 0 +298 32.72909731222875 17.98418252712202 0 +299 43.21030666824404 2.589939926943599 0 +300 38.65873585924841 7.05721733055844 0 +301 2.513416901559941 19.67770596234235 0 +302 22.20332101133977 7.171748596492664 0 +303 49.9356972294575 37.54961894594748 0 +304 40.39530100965223 21.99543877461477 0 +305 31.92909711675484 30.68601656955341 0 +306 31.13689923999755 10.29406208353852 0 +307 5.912554824637231 11.80707431757932 0 +308 36.16392808400488 37.56352972466203 0 +309 11.67846038026281 25.5790828582812 0 +310 50.23379444125948 2.682686901482759 0 +311 6.324232974749579 27.85186401670527 0 +312 18.00106778741716 27.30610237355508 0 +313 10.64225593621168 21.59998673847218 0 +314 22.87073307681506 18.49476522020559 0 +315 36.35288217513344 2.374111616838479 0 +316 16.08511435961772 2.460293090698518 0 +317 20.82983910892262 33.57581920304675 0 +318 57.53268003622506 24.14227236050319 0 +319 46.62112655786532 33.95114753404405 0 +320 24.18820251475016 23.06863511482712 0 +321 30.06918278221957 33.65249645026755 0 +322 42.71891576025518 13.33578641522837 0 +323 46.74262852930829 15.69631533961131 0 +324 46.82273721411058 6.037287255008842 0 +325 43.67428555349414 26.74985315841814 0 +326 57.5249675704227 2.260632422589489 0 +327 57.5163028996113 37.73526218367768 0 +328 50.83848059245574 34.41451207693906 0 +329 43.23496029252441 8.617686395677884 0 +330 54.17226391689067 37.51274691618801 0 +331 23.08406063280706 2.057836906351393 0 +332 29.26965346135665 25.2183425250081 0 +333 49.01558250185536 21.83447295713087 0 +334 23.7069926497193 5.885081461632971 0 +335 9.366206426118179 37.44095998602512 0 +336 9.734527362771772 2.520653240237734 0 +337 50.92784177784564 5.518679641891389 0 +338 2.382999405733814 15.74549787165582 0 +339 18.40206198559648 37.97152888743174 0 +340 53.46688842854071 19.70895695994599 0 +341 28.46438379917853 6.421286048424378 0 +342 54.18628324086568 2.504850247422153 0 +343 53.67540049321199 12.14128136883171 0 +344 54.02227877196081 27.96660617498954 0 +345 35.04227775527324 34.33920369104627 0 +346 53.71689361990878 8.999289279627753 0 +347 53.96878815489915 30.93734758417207 0 +348 2.338963468773561 37.66103653122556 0 +349 2.444104733490598 9.287283229728823 0 +350 2.130772239724846 31.04418074969577 0 +351 24.99411939563818 31.64325330858832 0 +352 22.82634888427999 30.58306906602309 0 +353 29.31932961162838 14.61407821507989 0 +354 12.69286939908629 34.03866363868207 0 +355 35.14815855622347 5.684745015074453 0 +356 12.76851626183019 5.734299204789629 0 +357 24.94508862034155 27.13548593095083 0 +358 57.70953137781392 17.57681025682843 0 +359 6.419622133708633 31.18760078330426 0 +360 2.457480598742092 22.04061553781128 0 +361 58.04092695844812 8.946912289297275 0 +362 57.78739745510342 30.71773126695873 0 +363 12.4775339582016 15.08535676321622 0 +364 18.33343817648206 29.56974146801459 0 +365 5.692918262147 2.479037356673015 0 +366 2.282570210130277 2.282570210130205 0 +367 9.891151183535474 9.764589049800046 0 +368 5.629143840397585 37.57606399369745 0 +369 34.46128516749135 27.29236074576465 0 +370 19.40595580666523 16.41764118762331 0 +371 47.51432813426099 37.76406513942555 0 +372 5.925772176070656 19.35708652666798 0 +373 6.193724356418632 8.850333049992114 0 +374 5.461805815543469 23.3231299320548 0 +375 49.8852664359446 10.39892217040645 0 +376 47.69667753293451 2.258873392396585 0 +377 13.75232178509519 10.96155027299799 0 +378 35.08472318936315 12.5462509669707 0 +379 17.62722394713153 9.004320828010602 0 +380 30.92970420454268 28.74426027548914 0 +381 49.79236994184181 29.60070723742907 0 +382 57.64758092787582 5.535295122960225 0 +383 57.63771363035474 34.46467229013062 0 +384 2.167970600632248 34.66663784377177 0 +385 10.51587740239985 30.00228151326705 0 +386 19.39759348135664 5.599058559312496 0 +387 28.30962274080807 20.06271778648156 0 +388 33.75414226625833 8.612693153783741 0 +389 54.27717696910059 16.42523018018881 0 +390 41.20590908133474 9.588143445298178 0 +391 2.211327150411201 5.381196839559157 0 +392 48.08807720679192 14.2555866656263 0 +393 49.7220167407089 18.32905918920004 0 +394 15.79306895698383 31.80242812886434 0 +395 53.8878157306571 35.2025571294521 0 +396 17.00739913927048 34.60907064893013 0 +397 16.78151440398475 12.4664474621253 0 +398 22.59415801437667 10.89636748893317 0 +399 44.17082309553253 31.10589310438481 0 +400 17.8900258611142 19.42791296309485 0 +401 53.92347493832002 4.808735078536634 0 +402 43.22895962192177 35.36782099461898 0 +403 20.77201616767405 24.73349396353334 0 +404 39.35233109160435 34.74048095849416 0 +405 40.53178998911878 30.41428484855692 0 +406 31.54381583324982 35.32814993991371 0 +407 7.710627580036661 15.51625837802682 0 +408 24.82427442502761 37.90021314490829 0 +409 13.75393894477771 21.65512924758953 0 +410 28.19692427416226 37.68276136589138 0 +411 43.34717384725252 4.668408434767493 0 +412 14.65734457713399 28.40014052444941 0 +413 11.83166227796881 2.237903632753146 0 +414 37.52619580249826 18.50319967677398 0 +415 36.13110325125734 16.91843296578633 0 +416 31.67776905850334 4.761387910868395 0 +417 14.27816327814473 18.98374830239077 0 +418 20.8594696406515 14.45162857075821 0 +419 57.86852837524871 28.50738497855249 0 +420 43.04756903265353 19.61592878102145 0 +421 40.21180051551505 25.64495781973783 0 +422 1.825568396313961 11.58085148771633 0 +423 39.10724170213062 5.214053979250364 0 +424 41.10024517481158 19.85588335314041 0 +425 20.94807123612145 21.32029900443863 0 +426 27.08422332070924 31.65686200823724 0 +427 4.92382893318552 34.06794902486415 0 +428 5.61783490386467 4.72346235453806 0 +429 31.69430052143954 8.358164330872388 0 +430 22.05753144023211 23.0172212073912 0 +431 40.99999999996098 1.874192934027594 0 +432 10.99127586661583 13.59669943856671 0 +433 33.83181286812501 30.9431949993918 0 +434 27.41543282216439 12.35682536791638 0 +435 55.59969245303147 24.64907322514555 0 +436 33.29949996533691 15.86327345488534 0 +437 40.94406331492611 38.13172369890317 0 +438 33.17381671798605 23.96169774892727 0 +439 31.40765912898637 21.98446009004605 0 +440 27.36918038025064 4.639899043993399 0 +441 28.13808030738179 34.39601165591665 0 +442 27.45453676228438 8.213578134647001 0 +443 45.86931782463719 12.34477172597377 0 +444 45.71700505874415 8.290912234850339 0 +445 42.56761454305065 23.24645033565276 0 +446 39.69663458661197 18.2502806220007 0 +447 49.33695317324812 6.954309530424624 0 +448 21.58522008174965 28.86948618514256 0 +449 37.106778094589 15.07362065605123 0 +450 16.09506283023486 7.855315859594591 0 +451 29.19748838724398 1.7151910162548 0 +452 16.13940456247037 4.549367981385069 0 +453 30.56858447175172 17.88134784023002 0 +454 26.96708389772039 27.38430021041982 0 +455 49.19727074817031 32.98093603086695 0 +456 24.96019778460114 35.40793574832817 0 +457 21.09589940754463 35.66020394169296 0 +458 37.15200125033736 25.08487223223558 0 +459 8.146409617851901 31.80178347644605 0 +460 33.27002000104612 20.01336721384393 0 +461 4.334761862152043 15.07651916453535 0 +462 30.71082322206885 6.555194004812993 0 +463 30.83373539929095 26.32829670863272 0 +464 27.88093849502859 23.82406050064556 0 +465 18.94621431842196 25.6261676470621 0 +466 27.53959924143032 16.36576028282729 0 +467 8.960093648515032 4.894995131309189 0 +468 14.88953450754686 38.12638628509853 0 +469 58.15478910221405 22.31999377287977 0 +470 13.98200865880546 31.97987876834006 0 +471 11.22086307299893 37.94449418859994 0 +472 28.98535232952183 10.58299389598307 0 +473 54.84332051386557 7.743948414444318 0 +474 54.90861905624838 32.28331321777286 0 +475 18.70284373950589 1.440084573567959 0 +476 26.63158628477963 18.54835001215597 0 +477 52.51906446325611 23.99158272237233 0 +478 8.050993122147537 34.77980784973232 0 +479 47.66777089155723 17.75273847897243 0 +480 4.494514669546739 26.55469225321671 0 +481 55.43552941651073 13.34370678836217 0 +482 15.88452400906054 26.67294860347618 0 +483 45.96098638836703 27.84069546253532 0 +484 20.6836187285522 18.12435874139773 0 +485 14.48082329058513 35.72636673335771 0 +486 20.395731766704 7.594280950480094 0 +487 1.704558008232715 17.58396913256762 0 +488 8.08397143351266 8.22740190828117 0 +489 12.26793942096946 18.04641382471681 0 +490 9.62099317882001 28.35127826981699 0 +491 1.951979655593035 28.68156272303459 0 +492 38.40966526897135 21.89022665500841 0 +493 45.69278635428876 32.17265733722654 0 +494 9.42621360048453 11.31012570203877 0 +495 55.59513989420995 20.22666965131133 0 +496 52.03236468157642 15.00441365594449 0 +497 51.25529406712213 21.88014082622838 0 +498 22.66268477139535 38.4322868919798 0 +499 47.4309120522217 29.81524825277734 0 +500 55.43523456118346 34.03024813739633 0 +501 18.89774112307645 21.37350590194583 0 +502 44.74508907504942 38.37491605865969 0 +503 35.22151450823115 22.91189904520873 0 +504 24.99898519990304 10.5115030027878 0 +505 1.776264835124096 25.42647509152486 0 +506 33.27012339955603 38.21606452370744 0 +507 44.80760200991621 1.644091423531048 0 +508 7.99961917705922 25.04369601910105 0 +509 23.73194335354934 16.64087411975753 0 +510 52.31318533751815 27.3028141641585 0 +511 22.93626076357857 13.36858606980965 0 +512 10.58703936021625 23.91341409540139 0 +513 55.43012483276141 6.048176190212392 0 +514 29.25497933514015 29.49731735471308 0 +515 58.09273511289625 11.26291697944555 0 +516 51.50474458137859 38.20738255538239 0 +517 4.863909165465706 6.250115329117637 0 +518 32.94211459765901 1.801312959989972 0 +519 39.27061884897956 28.61565715666633 0 +520 8.682871921403491 17.44933247468059 0 +521 41.20260173162733 34.12590377039601 0 +522 12.05154792136738 9.584048322141353 0 +523 44.58347482414363 15.93932924589031 0 +524 6.128749409074619 35.3632735559511 0 +525 25.51630894795712 8.505917817638085 0 +526 53.33572581204692 17.99017882209752 0 +527 52.65521273257521 1.460998605447574 0 +528 49.64095737419877 12.83844733624675 0 +529 42.18984260875824 31.31439925865966 0 +530 35.24413833853987 21.00190670539965 0 +531 58.22894164598556 14.3601197680936 0 +532 7.454415250581233 38.41491006552085 0 +533 4.486635957516457 31.20024783257203 0 +534 42.6760082457335 6.432184672283237 0 +535 40.57711674875112 16.21974125009532 0 +536 55.92291587642843 38.33135425268622 0 +537 4.26995675926788 19.23697910078066 0 +538 1.775301566227462 33.05284064461555 0 +539 4.988562475111112 13.35636223637398 0 +540 25.52800429951987 1.796733832234989 0 +541 7.210489409721462 1.615839513393684 0 +542 1.618202591723852 7.148824257416218 0 +543 39.68346810234456 13.1780416633457 0 +544 39.043303270691 11.53937654342767 0 +545 33.60020254044471 14.01123752255727 0 +546 16.88105042938436 38.2231504168497 0 +547 48.73110006741145 23.68743114939574 0 +548 10.87063096450955 6.298776607196318 0 +549 38.98795302345462 14.93348475059089 0 +550 15.31265524251108 17.7650559706938 0 +551 52.3596705898768 13.410939310189 0 +552 55.95892230710169 1.647213087357461 0 +553 58.49105723350974 7.167014357922236 0 +554 58.4381383325258 32.76969795131824 0 +555 47.74160552611309 9.634647371951488 0 +556 36.81933992471166 30.96531961638876 0 +557 4.31866178631079 8.642824005535736 0 +558 55.30167973193086 26.52672059545627 0 +559 29.62052749957459 16.31751366747155 0 +560 24.73649044515626 25.00256041539935 0 +561 43.81356292140848 17.75040342998552 0 +562 33.26788829748832 34.88339208375641 0 +563 14.51867847220224 1.674137149580596 0 +564 17.12480663363403 30.98840437769191 0 +565 25.34621595641979 13.69221730476288 0 +566 36.9834869229289 8.943199722035374 0 +567 30.00753900450147 38.33217333252318 0 +568 45.21061535109946 35.30695487214277 0 +569 47.07856995066371 35.96131129878591 0 +570 33.37422055994843 4.870914063038737 0 +571 23.48523332753721 4.093273292555056 0 +572 25.36593868544841 4.809160553550916 0 +573 8.744127461640653 21.6251967715195 0 +574 14.618630484041 15.00923548126237 0 +575 35.980575441397 4.008888222979946 0 +576 35.83131638342134 35.93639159580437 0 +577 45.35340066672818 4.680642686544201 0 +578 47.24803454272985 4.018393998500811 0 +579 36.67643109114022 33.25732576025066 0 +580 17.62292634392936 5.492760732106428 0 +581 7.49673453071427 26.62840994127169 0 +582 7.277361096666058 23.41720574765672 0 +583 22.21695137613082 8.697984061201769 0 +584 46.47864817461355 19.2927768445579 0 +585 40.77281580883953 23.93504995779551 0 +586 47.11094974788329 21.14023474951661 0 +587 36.94070954845793 6.671111557184012 0 +588 3.904535773599164 1.715562921125677 0 +589 20.31505314983664 11.17447208812127 0 +590 19.66439926986097 12.86204459540684 0 +591 10.77146659570215 19.67124937938267 0 +592 1.2131632128918 13.1356689938399 0 +593 58.70725681573862 26.84719769359039 0 +594 49.6402817253811 20.18095088217774 0 +595 51.89925125294123 30.92862676368816 0 +596 50.22123673576445 35.90905148547312 0 +597 18.51631653607353 23.74204414845963 0 +598 44.02132291540777 12.65218230376903 0 +599 25.73735458088082 15.5212152744151 0 +600 58.50849344220707 19.2163464048034 0 +601 44.00959687594654 25.09524244716776 0 +602 15.19395674239674 12.24562349881908 0 +603 39.96740474504989 8.437237073248047 0 +604 34.7317401115507 1.520882326759175 0 +605 15.3472167731378 24.88991013682922 0 +606 46.93365950535457 24.62301502508662 0 +607 33.93426019091038 32.89141437933637 0 +608 13.64472194982473 24.11843920160099 0 +609 26.78288108816816 38.49891749347402 0 +610 12.58932146399464 12.63477640382237 0 +611 24.49014864805356 33.74998587267667 0 +612 1.564958472321046 23.57265794894494 0 +613 18.94273400915193 18.20741163574473 0 +614 34.72625185389253 38.4598769742616 0 +615 35.22099681265733 9.377554310631558 0 +616 41.1551166026242 5.386431118808924 0 +617 9.025538730002548 35.80179416115121 0 +618 13.84295107091002 7.218836979096275 0 +619 3.876215102334316 38.32862503056733 0 +620 50.33710317435107 4.058627403284746 0 +621 42.21047114931417 28.04233315250196 0 +622 49.66111726770235 27.87056048915574 0 +623 37.04119323957151 23.38511240587738 0 +624 5.774451846758304 16.26405587906332 0 +625 11.56972720790791 16.55389079308283 0 +626 19.32835569845859 31.84695299998686 0 +627 18.94239125007354 33.67636387525126 0 +628 21.80197864129872 19.78189084016499 0 +629 29.74503890535231 19.23091265652509 0 +630 9.888836193396543 31.68031068249259 0 +631 34.42558581512849 17.06215003079955 0 +632 58.45499060058796 16.16811591554396 0 +633 51.90148419493524 9.037814320225367 0 +634 55.69414415755802 8.986880878195445 0 +635 56.03310154746426 31.20950908435786 0 +636 12.01839242364371 29.90287915648604 0 +637 14.1631523274399 4.612730718704957 0 +638 12.5383384027073 4.046338920031544 0 +639 4.56508046657584 25.16519577771428 0 +640 5.339519019211408 17.93635241022046 0 +641 17.86376877977601 36.36669912492435 0 +642 27.80768879934622 36.03435358401846 0 +643 25.16480980067796 21.36768925391278 0 +644 17.55264604332567 15.74643903773681 0 +645 22.86936080262317 34.61508568517295 0 +646 10.78227114364097 33.48824783635366 0 +647 44.35457563711797 9.895301077681129 0 +648 12.39400815186578 35.86470903956495 0 +649 42.66674092096797 32.92958984745573 0 +650 39.58277880087468 31.72837540411951 0 +651 29.49554316082851 23.60105252932517 0 +652 28.27621433421976 32.86163177290116 0 +653 21.4674051921354 31.95089080308664 0 +654 49.79144874309166 25.20553526198123 0 +655 50.7050358581957 16.47335511557942 0 +656 55.49509420854236 15.04858763676543 0 +657 56.0941052209058 16.96283905200605 0 +658 54.22637821389569 23.41974083598466 0 +659 1.617125854447067 36.20017496843089 0 +660 13.04120292565537 38.68377072504973 0 +661 26.03464171563112 23.52648510350097 0 +662 38.58128043346563 25.66325699502744 0 +663 47.25570530276642 26.36772498629784 0 +664 35.83887380479636 26.31837878979373 0 +665 44.26154244867634 21.50143046777536 0 +666 36.54699750017561 13.42276024689361 0 +667 1.601666155171929 3.753159940636643 0 +668 7.545372717847722 18.94416261840193 0 +669 26.01830402695114 30.38799726367781 0 +670 12.91295877946276 27.43732871619568 0 +671 3.910719687627066 22.70046023498087 0 +672 37.0045625261947 20.3612043968669 0 +673 30.90538521063324 14.33310364518323 0 +674 10.65133832409237 27.075846297938 0 +675 37.54874248547391 38.45490700209641 0 +676 51.61697992150345 18.31952565762258 0 +677 52.95679889622433 38.64254157133038 0 +678 55.95194227678903 27.77127574559094 0 +679 43.99663400462206 28.83675719077177 0 +680 51.01552264100923 1.26620737134304 0 +681 31.05889214795903 31.93243454261101 0 +682 58.41494039708284 3.774806457500512 0 +683 58.41494039708456 36.22519354250124 0 +684 31.37446740076414 12.06420314644291 0 +685 3.626452467573728 11.82049293272582 0 +686 22.44941514909726 15.07370872328715 0 +687 51.69581679163918 25.51135210356304 0 +688 34.42412657049168 7.173451437399413 0 +689 1.378635809522382 20.78970607933275 0 +690 32.53473380452136 9.51592619930334 0 +691 49.73047860685367 14.68940539246377 0 +692 49.28199518379311 1.575769397706289 0 +693 30.99999999994085 1.222631854813544 0 +694 22.1247765874396 26.05516493901553 0 +695 32.19192009445666 27.7759140303972 0 +696 23.29212851926307 28.95816276359884 0 +697 16.8837578493091 20.86603824065982 0 +698 16.37731768190634 33.16527996621467 0 +699 6.472330897030028 10.39641465871498 0 +700 23.93155858414075 7.632401271775682 0 +701 46.60688193266732 13.74840163254046 0 +702 32.32247386488523 14.76437404529047 0 +703 1.271283197336795 27.01892072953295 0 +704 48.85387497845732 26.63982061897353 0 +705 37.77872756054178 1.545097677270815 0 +706 5.279437237202434 32.48882675412501 0 +707 17.21270374997221 1.348827891434049 0 +708 58.77160969665614 20.95821448223737 0 +709 27.84988310027559 25.99565895730498 0 +710 21.46387435103691 1.461408083011448 0 +711 19.14017513173787 8.685967155976158 0 +712 26.63478121602928 20.22612718949669 0 +713 48.87764309919653 31.15572788040352 0 +714 42.27195376700706 11.62782742104427 0 +715 33.23761600053886 12.52834729954646 0 +716 48.77237771211691 38.66151599127623 0 +717 41.18047251546881 13.21421479159926 0 +718 26.74711907117671 35.24378548908674 0 +719 7.650399220854094 11.62083608031109 0 +720 8.092931833978795 27.90457866031213 0 +721 28.33187821177557 13.46869791200451 0 +722 20.47450701808135 4.126962253601397 0 +723 7.11300628233342 13.34215584873387 0 +724 35.35889762646366 30.36438026492398 0 +725 7.399705986875067 5.279088382142303 0 +726 51.46802098339516 32.85224002314832 0 +727 15.84928592252415 16.20880689587791 0 +728 9.034159249148157 14.23362508172776 0 +729 24.62829513109032 18.4002238622019 0 +730 16.51888718102843 23.63574633326419 0 +731 25.8236091431115 11.82124845407731 0 +732 21.25011492539803 5.964933025379156 0 +733 1.149142804135756 18.99999999999995 0 +734 13.07089124596451 1.205271614771737 0 +735 39.02149279764213 38.83540035648702 0 +736 23.5071614564016 26.07491964147938 0 +737 51.38391272499767 7.085459193826208 0 +738 5.487677505047835 29.60462358720678 0 +739 37.47757897826845 29.06732565762905 0 +740 58.64574253604792 25.44266896944443 0 +741 37.78030775063966 36.45899967794245 0 +742 40.98477960241879 28.83385496619501 0 +743 52.45462365320832 34.40789601191958 0 +744 19.70635906683624 28.59450162663152 0 +745 19.72720486203126 38.51108010983661 0 +746 15.81427786609114 22.07602380181305 0 +747 37.91509955319313 3.485841207119863 0 +748 4.009644923786419 28.15192688882591 0 +749 49.01999968891769 8.660462029290608 0 +750 3.788625661700634 5.399582187123174 0 +751 27.17099297335894 1.186744007644657 0 +752 58.710018069467 12.8976073701752 0 +753 54.24656481896225 21.51802895498942 0 +754 52.61298283814855 20.98789136732746 0 +755 10.41410318054429 7.974972649705201 0 +756 16.1434670802085 19.19132226980373 0 +757 58.66307662179197 1.336923378206103 0 +758 58.66307662179351 38.66307662179417 0 +759 8.674761421689817 1.330493172817047 0 +760 46.05237931348395 30.88525728166737 0 +761 52.51825189670204 5.601654892593504 0 +762 39.65321496826213 36.19456476175084 0 +763 21.74109858613904 3.241038635250128 0 +764 55.87150403049549 11.74852935807682 0 +765 51.29005171560819 12.18385855867605 0 +766 48.60077612927283 36.74126530544378 0 +767 9.781760352992908 25.27638761630629 0 +768 11.96510646149791 21.18363740469939 0 +769 46.50278657191436 1.38732568291416 0 +770 1.29605855170859 38.70394144829315 0 +771 56.61855725793807 14.09786026794269 0 +772 39.92847310689206 10.29690475809132 0 +773 44.87694217279645 11.24962362321907 0 +774 10.64098208164303 1.267124061842298 0 +775 26.16646266173229 28.72267632965516 0 +776 41.65134670315452 26.58525851486525 0 +777 15.09617614155018 30.38393648922125 0 +778 56.75951833646725 18.80897778693135 0 +779 43.56013102637838 14.49981064695188 0 +780 1.339514321870883 14.50640439673332 0 +781 1.251442899117387 1.251442899117574 0 +782 15.70758668835062 9.378940622171227 0 +783 39.9769797372698 3.700908578909845 0 +784 16.54609071480338 6.381765259652901 0 +785 17.30987808624167 10.63592008204068 0 +786 26.18354793812398 3.455438702414392 0 +787 51.01694024738521 27.99405599969779 0 +788 32.70408506737439 36.44364603226829 0 +789 5.255886128173934 7.58565375962099 0 +790 9.874825852356805 12.70293407947537 0 +791 39.24415907363385 26.87013578492638 0 +792 42.99999999996514 1.04663259572439 0 +793 3.364484490456395 25.67654501993444 0 +794 23.80598498541618 19.84966313799669 0 +795 9.20829694994875 38.76007284802918 0 +796 36.13566598641333 27.88222427009812 0 +797 32.73592970948766 3.556584019316739 0 +798 48.94289448554981 3.241233238461318 0 +799 16.35369184625045 28.06244520869978 0 +800 19.00599484960623 10.0886238946192 0 +801 19.59257000514986 36.85329893824773 0 +802 30.33023934758462 30.45318041647004 0 +803 39.16584342854592 1.170023141945107 0 +804 39.9144776192266 33.14369004963002 0 +805 3.491700114655068 34.11780395235675 0 +806 44.43343584040618 36.70064900769671 0 +807 37.46573512440179 11.49366928905868 0 +808 42.06965103344464 14.64839239358009 0 +809 33.95895098227535 25.69349433374582 0 +810 42.93899798520243 10.15580966343867 0 +811 34.77242074861059 28.96968445938228 0 +812 13.02569938764323 28.86468785048334 0 +813 40.02872666166967 6.668522202465921 0 +814 42.98979605906612 38.93522009367196 0 +815 45.78507691199172 21.94553828819161 0 +816 44.54562730178307 3.323349214085901 0 +817 44.83851244575069 19.40876027130497 0 +818 15.46844012854496 13.52263128395863 0 +819 21.11863874955593 38.85731594482653 0 +820 54.27775939280856 10.54248887450184 0 +821 53.24353907067531 29.3115496506848 0 +822 32.68238854565544 31.92694471861456 0 +823 29.98965845655969 20.59517172172251 0 +824 46.39756382816609 38.63848667374827 0 +825 9.575112650926176 34.62495917082227 0 +826 32.19990301379659 25.03356103368365 0 +827 15.14435762868554 3.518681765852218 0 +828 18.15158383198336 13.05587686949087 0 +$EndNodes +$Elements +1658 +1 15 2 0 1 1 +2 15 2 0 2 2 +3 15 2 0 3 3 +4 15 2 0 4 4 +5 1 2 0 5 1 5 +6 1 2 0 5 5 6 +7 1 2 0 5 6 7 +8 1 2 0 5 7 8 +9 1 2 0 5 8 9 +10 1 2 0 5 9 10 +11 1 2 0 5 10 11 +12 1 2 0 5 11 12 +13 1 2 0 5 12 13 +14 1 2 0 5 13 14 +15 1 2 0 5 14 15 +16 1 2 0 5 15 16 +17 1 2 0 5 16 17 +18 1 2 0 5 17 18 +19 1 2 0 5 18 19 +20 1 2 0 5 19 20 +21 1 2 0 5 20 21 +22 1 2 0 5 21 22 +23 1 2 0 5 22 23 +24 1 2 0 5 23 24 +25 1 2 0 5 24 25 +26 1 2 0 5 25 26 +27 1 2 0 5 26 27 +28 1 2 0 5 27 28 +29 1 2 0 5 28 29 +30 1 2 0 5 29 30 +31 1 2 0 5 30 31 +32 1 2 0 5 31 32 +33 1 2 0 5 32 33 +34 1 2 0 5 33 2 +35 1 2 0 6 2 34 +36 1 2 0 6 34 35 +37 1 2 0 6 35 36 +38 1 2 0 6 36 37 +39 1 2 0 6 37 38 +40 1 2 0 6 38 39 +41 1 2 0 6 39 40 +42 1 2 0 6 40 41 +43 1 2 0 6 41 42 +44 1 2 0 6 42 43 +45 1 2 0 6 43 44 +46 1 2 0 6 44 45 +47 1 2 0 6 45 46 +48 1 2 0 6 46 47 +49 1 2 0 6 47 48 +50 1 2 0 6 48 49 +51 1 2 0 6 49 50 +52 1 2 0 6 50 51 +53 1 2 0 6 51 52 +54 1 2 0 6 52 3 +55 1 2 0 7 3 53 +56 1 2 0 7 53 54 +57 1 2 0 7 54 55 +58 1 2 0 7 55 56 +59 1 2 0 7 56 57 +60 1 2 0 7 57 58 +61 1 2 0 7 58 59 +62 1 2 0 7 59 60 +63 1 2 0 7 60 61 +64 1 2 0 7 61 62 +65 1 2 0 7 62 63 +66 1 2 0 7 63 64 +67 1 2 0 7 64 65 +68 1 2 0 7 65 66 +69 1 2 0 7 66 67 +70 1 2 0 7 67 68 +71 1 2 0 7 68 69 +72 1 2 0 7 69 70 +73 1 2 0 7 70 71 +74 1 2 0 7 71 72 +75 1 2 0 7 72 73 +76 1 2 0 7 73 74 +77 1 2 0 7 74 75 +78 1 2 0 7 75 76 +79 1 2 0 7 76 77 +80 1 2 0 7 77 78 +81 1 2 0 7 78 79 +82 1 2 0 7 79 80 +83 1 2 0 7 80 81 +84 1 2 0 7 81 4 +85 1 2 0 8 4 82 +86 1 2 0 8 82 83 +87 1 2 0 8 83 84 +88 1 2 0 8 84 85 +89 1 2 0 8 85 86 +90 1 2 0 8 86 87 +91 1 2 0 8 87 88 +92 1 2 0 8 88 89 +93 1 2 0 8 89 90 +94 1 2 0 8 90 91 +95 1 2 0 8 91 92 +96 1 2 0 8 92 93 +97 1 2 0 8 93 94 +98 1 2 0 8 94 95 +99 1 2 0 8 95 96 +100 1 2 0 8 96 97 +101 1 2 0 8 97 98 +102 1 2 0 8 98 99 +103 1 2 0 8 99 100 +104 1 2 0 8 100 1 +105 2 2 0 10 525 700 126 +106 2 2 0 10 700 334 126 +107 2 2 0 10 732 149 334 +108 2 2 0 10 302 732 334 +109 2 2 0 10 608 145 409 +110 2 2 0 10 278 608 409 +111 2 2 0 10 685 422 349 +112 2 2 0 10 475 186 707 +113 2 2 0 10 152 467 336 +114 2 2 0 10 216 336 467 +115 2 2 0 10 162 685 349 +116 2 2 0 10 459 191 630 +117 2 2 0 10 173 462 341 +118 2 2 0 10 817 272 665 +119 2 2 0 10 163 684 306 +120 2 2 0 10 630 191 385 +121 2 2 0 10 163 276 378 +122 2 2 0 10 53 536 327 +123 2 2 0 10 118 478 524 +124 2 2 0 10 170 401 342 +125 2 2 0 10 203 342 401 +126 2 2 0 10 124 323 479 +127 2 2 0 10 111 398 589 +128 2 2 0 10 292 579 556 +129 2 2 0 10 163 715 684 +130 2 2 0 10 300 566 587 +131 2 2 0 10 828 294 397 +132 2 2 0 10 113 297 668 +133 2 2 0 10 155 360 301 +134 2 2 0 10 152 336 413 +135 2 2 0 10 148 387 277 +136 2 2 0 10 120 725 270 +137 2 2 0 10 141 294 828 +138 2 2 0 10 707 186 316 +139 2 2 0 10 113 520 295 +140 2 2 0 10 667 98 99 +141 2 2 0 10 340 676 526 +142 2 2 0 10 165 361 515 +143 2 2 0 10 392 528 691 +144 2 2 0 10 85 350 538 +145 2 2 0 10 241 435 318 +146 2 2 0 10 280 444 555 +147 2 2 0 10 555 444 195 +148 2 2 0 10 114 676 340 +149 2 2 0 10 239 353 466 +150 2 2 0 10 202 395 330 +151 2 2 0 10 171 330 395 +152 2 2 0 10 135 477 658 +153 2 2 0 10 420 817 665 +154 2 2 0 10 53 54 536 +155 2 2 0 10 597 403 465 +156 2 2 0 10 110 566 300 +157 2 2 0 10 161 350 491 +158 2 2 0 10 85 86 350 +159 2 2 0 10 176 672 530 +160 2 2 0 10 157 471 335 +161 2 2 0 10 173 416 462 +162 2 2 0 10 33 326 552 +163 2 2 0 10 172 420 665 +164 2 2 0 10 201 403 597 +165 2 2 0 10 165 515 764 +166 2 2 0 10 111 583 398 +167 2 2 0 10 683 50 51 +168 2 2 0 10 35 36 682 +169 2 2 0 10 391 98 667 +170 2 2 0 10 335 471 795 +171 2 2 0 10 14 282 475 +172 2 2 0 10 45 318 469 +173 2 2 0 10 173 451 283 +174 2 2 0 10 66 567 289 +175 2 2 0 10 109 292 556 +176 2 2 0 10 297 372 668 +177 2 2 0 10 148 277 464 +178 2 2 0 10 83 84 659 +179 2 2 0 10 105 528 392 +180 2 2 0 10 155 372 297 +181 2 2 0 10 155 297 374 +182 2 2 0 10 135 658 435 +183 2 2 0 10 184 279 457 +184 2 2 0 10 684 104 472 +185 2 2 0 10 169 409 417 +186 2 2 0 10 215 417 409 +187 2 2 0 10 179 431 299 +188 2 2 0 10 176 414 672 +189 2 2 0 10 134 389 496 +190 2 2 0 10 249 496 389 +191 2 2 0 10 96 97 349 +192 2 2 0 10 232 281 606 +193 2 2 0 10 142 606 281 +194 2 2 0 10 116 401 513 +195 2 2 0 10 162 307 685 +196 2 2 0 10 353 559 466 +197 2 2 0 10 97 542 349 +198 2 2 0 10 154 351 352 +199 2 2 0 10 236 352 351 +200 2 2 0 10 383 50 683 +201 2 2 0 10 682 36 382 +202 2 2 0 10 173 440 284 +203 2 2 0 10 659 84 384 +204 2 2 0 10 48 362 419 +205 2 2 0 10 364 626 564 +206 2 2 0 10 15 16 331 +207 2 2 0 10 219 556 579 +208 2 2 0 10 37 361 553 +209 2 2 0 10 49 554 362 +210 2 2 0 10 160 305 380 +211 2 2 0 10 154 696 357 +212 2 2 0 10 274 357 696 +213 2 2 0 10 7 365 588 +214 2 2 0 10 96 349 422 +215 2 2 0 10 109 519 405 +216 2 2 0 10 118 524 427 +217 2 2 0 10 795 471 77 +218 2 2 0 10 306 684 472 +219 2 2 0 10 378 807 666 +220 2 2 0 10 116 513 473 +221 2 2 0 10 190 320 430 +222 2 2 0 10 125 430 320 +223 2 2 0 10 820 634 165 +224 2 2 0 10 182 375 633 +225 2 2 0 10 265 633 375 +226 2 2 0 10 124 479 584 +227 2 2 0 10 276 807 378 +228 2 2 0 10 37 38 361 +229 2 2 0 10 48 49 362 +230 2 2 0 10 196 274 448 +231 2 2 0 10 120 270 488 +232 2 2 0 10 161 491 748 +233 2 2 0 10 32 33 552 +234 2 2 0 10 284 786 540 +235 2 2 0 10 199 488 367 +236 2 2 0 10 618 131 450 +237 2 2 0 10 296 618 450 +238 2 2 0 10 79 619 368 +239 2 2 0 10 157 648 471 +240 2 2 0 10 243 461 338 +241 2 2 0 10 261 381 595 +242 2 2 0 10 183 595 381 +243 2 2 0 10 213 535 293 +244 2 2 0 10 189 426 288 +245 2 2 0 10 241 558 435 +246 2 2 0 10 6 7 588 +247 2 2 0 10 117 500 395 +248 2 2 0 10 284 540 751 +249 2 2 0 10 79 80 619 +250 2 2 0 10 115 460 439 +251 2 2 0 10 55 330 536 +252 2 2 0 10 175 402 291 +253 2 2 0 10 405 519 742 +254 2 2 0 10 173 283 416 +255 2 2 0 10 123 444 329 +256 2 2 0 10 243 539 461 +257 2 2 0 10 307 539 685 +258 2 2 0 10 143 292 404 +259 2 2 0 10 198 273 470 +260 2 2 0 10 178 406 289 +261 2 2 0 10 232 601 281 +262 2 2 0 10 367 488 755 +263 2 2 0 10 31 552 342 +264 2 2 0 10 175 291 437 +265 2 2 0 10 312 364 799 +266 2 2 0 10 159 799 364 +267 2 2 0 10 139 625 363 +268 2 2 0 10 195 444 324 +269 2 2 0 10 123 324 444 +270 2 2 0 10 130 485 354 +271 2 2 0 10 105 443 280 +272 2 2 0 10 68 410 567 +273 2 2 0 10 163 615 276 +274 2 2 0 10 139 489 625 +275 2 2 0 10 112 626 364 +276 2 2 0 10 197 455 319 +277 2 2 0 10 147 319 455 +278 2 2 0 10 166 419 362 +279 2 2 0 10 196 694 274 +280 2 2 0 10 198 636 273 +281 2 2 0 10 67 68 567 +282 2 2 0 10 234 439 460 +283 2 2 0 10 195 324 447 +284 2 2 0 10 150 447 324 +285 2 2 0 10 207 313 512 +286 2 2 0 10 180 286 469 +287 2 2 0 10 69 70 408 +288 2 2 0 10 145 512 313 +289 2 2 0 10 277 439 651 +290 2 2 0 10 117 474 500 +291 2 2 0 10 179 299 411 +292 2 2 0 10 204 296 522 +293 2 2 0 10 223 543 549 +294 2 2 0 10 69 408 609 +295 2 2 0 10 216 428 365 +296 2 2 0 10 185 365 428 +297 2 2 0 10 222 329 390 +298 2 2 0 10 145 608 309 +299 2 2 0 10 247 309 608 +300 2 2 0 10 224 377 602 +301 2 2 0 10 224 610 377 +302 2 2 0 10 164 323 392 +303 2 2 0 10 113 668 520 +304 2 2 0 10 184 498 279 +305 2 2 0 10 174 651 439 +306 2 2 0 10 203 310 680 +307 2 2 0 10 404 762 741 +308 2 2 0 10 16 540 331 +309 2 2 0 10 223 549 449 +310 2 2 0 10 244 408 456 +311 2 2 0 10 184 456 408 +312 2 2 0 10 18 451 751 +313 2 2 0 10 143 404 741 +314 2 2 0 10 346 634 820 +315 2 2 0 10 142 281 815 +316 2 2 0 10 173 284 451 +317 2 2 0 10 196 312 465 +318 2 2 0 10 137 465 312 +319 2 2 0 10 103 463 380 +320 2 2 0 10 186 282 722 +321 2 2 0 10 101 414 446 +322 2 2 0 10 218 446 414 +323 2 2 0 10 152 548 467 +324 2 2 0 10 206 335 532 +325 2 2 0 10 270 467 548 +326 2 2 0 10 188 301 487 +327 2 2 0 10 146 423 300 +328 2 2 0 10 236 645 317 +329 2 2 0 10 160 695 369 +330 2 2 0 10 186 475 282 +331 2 2 0 10 218 415 449 +332 2 2 0 10 128 449 415 +333 2 2 0 10 128 415 631 +334 2 2 0 10 765 343 551 +335 2 2 0 10 270 725 467 +336 2 2 0 10 168 295 520 +337 2 2 0 10 47 48 419 +338 2 2 0 10 302 583 486 +339 2 2 0 10 583 111 486 +340 2 2 0 10 232 483 325 +341 2 2 0 10 101 424 304 +342 2 2 0 10 177 436 298 +343 2 2 0 10 128 631 436 +344 2 2 0 10 218 535 446 +345 2 2 0 10 268 369 695 +346 2 2 0 10 105 280 555 +347 2 2 0 10 178 289 567 +348 2 2 0 10 281 445 665 +349 2 2 0 10 103 288 454 +350 2 2 0 10 118 459 287 +351 2 2 0 10 227 587 566 +352 2 2 0 10 172 304 424 +353 2 2 0 10 218 549 535 +354 2 2 0 10 166 635 347 +355 2 2 0 10 152 413 638 +356 2 2 0 10 119 406 321 +357 2 2 0 10 178 321 406 +358 2 2 0 10 177 298 453 +359 2 2 0 10 130 396 485 +360 2 2 0 10 230 485 396 +361 2 2 0 10 57 303 516 +362 2 2 0 10 221 538 350 +363 2 2 0 10 115 298 460 +364 2 2 0 10 245 504 525 +365 2 2 0 10 192 306 472 +366 2 2 0 10 31 32 552 +367 2 2 0 10 172 665 445 +368 2 2 0 10 44 45 469 +369 2 2 0 10 281 601 445 +370 2 2 0 10 160 433 305 +371 2 2 0 10 170 326 682 +372 2 2 0 10 171 683 327 +373 2 2 0 10 192 429 306 +374 2 2 0 10 66 289 506 +375 2 2 0 10 245 442 472 +376 2 2 0 10 192 472 442 +377 2 2 0 10 126 341 442 +378 2 2 0 10 192 442 341 +379 2 2 0 10 132 503 623 +380 2 2 0 10 765 528 375 +381 2 2 0 10 354 485 648 +382 2 2 0 10 14 710 282 +383 2 2 0 10 173 341 440 +384 2 2 0 10 132 623 458 +385 2 2 0 10 5 588 366 +386 2 2 0 10 54 55 536 +387 2 2 0 10 66 67 567 +388 2 2 0 10 193 497 477 +389 2 2 0 10 260 477 497 +390 2 2 0 10 147 455 328 +391 2 2 0 10 95 96 422 +392 2 2 0 10 118 287 478 +393 2 2 0 10 112 448 352 +394 2 2 0 10 102 501 400 +395 2 2 0 10 42 358 632 +396 2 2 0 10 133 445 601 +397 2 2 0 10 194 370 418 +398 2 2 0 10 141 418 370 +399 2 2 0 10 332 709 464 +400 2 2 0 10 709 211 464 +401 2 2 0 10 229 383 500 +402 2 2 0 10 171 500 383 +403 2 2 0 10 224 363 610 +404 2 2 0 10 213 420 424 +405 2 2 0 10 172 424 420 +406 2 2 0 10 182 343 765 +407 2 2 0 10 115 453 298 +408 2 2 0 10 146 587 355 +409 2 2 0 10 234 438 439 +410 2 2 0 10 174 439 438 +411 2 2 0 10 172 445 304 +412 2 2 0 10 174 463 332 +413 2 2 0 10 222 534 329 +414 2 2 0 10 123 329 534 +415 2 2 0 10 141 644 294 +416 2 2 0 10 284 751 451 +417 2 2 0 10 176 460 298 +418 2 2 0 10 156 377 782 +419 2 2 0 10 296 782 377 +420 2 2 0 10 211 454 357 +421 2 2 0 10 81 348 619 +422 2 2 0 10 180 495 286 +423 2 2 0 10 201 597 501 +424 2 2 0 10 194 484 370 +425 2 2 0 10 220 349 542 +426 2 2 0 10 101 446 424 +427 2 2 0 10 285 501 597 +428 2 2 0 10 144 511 398 +429 2 2 0 10 242 398 511 +430 2 2 0 10 93 338 487 +431 2 2 0 10 230 468 485 +432 2 2 0 10 252 485 468 +433 2 2 0 10 550 240 756 +434 2 2 0 10 591 489 215 +435 2 2 0 10 295 489 591 +436 2 2 0 10 228 553 361 +437 2 2 0 10 229 362 554 +438 2 2 0 10 213 424 446 +439 2 2 0 10 180 318 435 +440 2 2 0 10 103 514 288 +441 2 2 0 10 202 330 677 +442 2 2 0 10 104 673 353 +443 2 2 0 10 182 765 375 +444 2 2 0 10 278 409 746 +445 2 2 0 10 125 403 430 +446 2 2 0 10 201 430 403 +447 2 2 0 10 203 680 527 +448 2 2 0 10 192 341 462 +449 2 2 0 10 239 565 434 +450 2 2 0 10 189 288 514 +451 2 2 0 10 182 820 343 +452 2 2 0 10 166 821 344 +453 2 2 0 10 328 455 726 +454 2 2 0 10 242 589 398 +455 2 2 0 10 104 684 673 +456 2 2 0 10 170 682 382 +457 2 2 0 10 171 383 683 +458 2 2 0 10 182 346 820 +459 2 2 0 10 166 347 821 +460 2 2 0 10 228 513 382 +461 2 2 0 10 170 382 513 +462 2 2 0 10 205 308 614 +463 2 2 0 10 251 691 528 +464 2 2 0 10 434 565 731 +465 2 2 0 10 163 306 690 +466 2 2 0 10 188 461 624 +467 2 2 0 10 346 473 634 +468 2 2 0 10 347 635 474 +469 2 2 0 10 143 579 292 +470 2 2 0 10 150 337 447 +471 2 2 0 10 188 624 640 +472 2 2 0 10 168 625 295 +473 2 2 0 10 109 650 292 +474 2 2 0 10 210 331 540 +475 2 2 0 10 178 441 321 +476 2 2 0 10 146 355 575 +477 2 2 0 10 363 432 610 +478 2 2 0 10 5 6 588 +479 2 2 0 10 183 510 821 +480 2 2 0 10 186 452 316 +481 2 2 0 10 170 552 326 +482 2 2 0 10 247 670 309 +483 2 2 0 10 113 295 591 +484 2 2 0 10 293 535 808 +485 2 2 0 10 213 293 561 +486 2 2 0 10 309 670 674 +487 2 2 0 10 104 434 472 +488 2 2 0 10 245 472 434 +489 2 2 0 10 171 327 536 +490 2 2 0 10 41 42 632 +491 2 2 0 10 169 746 409 +492 2 2 0 10 33 757 326 +493 2 2 0 10 53 327 758 +494 2 2 0 10 756 240 400 +495 2 2 0 10 344 821 510 +496 2 2 0 10 155 301 537 +497 2 2 0 10 18 19 451 +498 2 2 0 10 171 536 330 +499 2 2 0 10 151 317 457 +500 2 2 0 10 261 726 455 +501 2 2 0 10 423 747 783 +502 2 2 0 10 129 351 426 +503 2 2 0 10 76 77 471 +504 2 2 0 10 110 300 603 +505 2 2 0 10 22 705 315 +506 2 2 0 10 187 492 304 +507 2 2 0 10 176 298 631 +508 2 2 0 10 296 377 522 +509 2 2 0 10 317 645 457 +510 2 2 0 10 204 618 296 +511 2 2 0 10 113 573 297 +512 2 2 0 10 20 518 693 +513 2 2 0 10 370 484 613 +514 2 2 0 10 400 501 697 +515 2 2 0 10 12 316 563 +516 2 2 0 10 198 470 354 +517 2 2 0 10 130 354 470 +518 2 2 0 10 179 411 616 +519 2 2 0 10 146 300 587 +520 2 2 0 10 126 440 341 +521 2 2 0 10 82 659 348 +522 2 2 0 10 170 342 552 +523 2 2 0 10 335 795 532 +524 2 2 0 10 122 402 649 +525 2 2 0 10 34 682 757 +526 2 2 0 10 52 758 683 +527 2 2 0 10 380 463 695 +528 2 2 0 10 146 747 423 +529 2 2 0 10 311 738 748 +530 2 2 0 10 196 744 312 +531 2 2 0 10 101 304 492 +532 2 2 0 10 255 483 499 +533 2 2 0 10 106 499 483 +534 2 2 0 10 181 348 659 +535 2 2 0 10 138 461 539 +536 2 2 0 10 180 469 318 +537 2 2 0 10 31 342 527 +538 2 2 0 10 188 537 301 +539 2 2 0 10 254 390 714 +540 2 2 0 10 175 404 521 +541 2 2 0 10 326 757 682 +542 2 2 0 10 327 683 758 +543 2 2 0 10 161 533 350 +544 2 2 0 10 221 350 533 +545 2 2 0 10 40 41 531 +546 2 2 0 10 136 311 480 +547 2 2 0 10 176 415 414 +548 2 2 0 10 218 414 415 +549 2 2 0 10 168 432 363 +550 2 2 0 10 57 716 303 +551 2 2 0 10 191 738 311 +552 2 2 0 10 137 312 482 +553 2 2 0 10 787 381 622 +554 2 2 0 10 183 381 787 +555 2 2 0 10 116 346 633 +556 2 2 0 10 107 674 670 +557 2 2 0 10 202 516 303 +558 2 2 0 10 64 308 675 +559 2 2 0 10 135 435 558 +560 2 2 0 10 393 655 676 +561 2 2 0 10 242 511 418 +562 2 2 0 10 275 599 509 +563 2 2 0 10 117 595 347 +564 2 2 0 10 151 396 627 +565 2 2 0 10 133 601 325 +566 2 2 0 10 232 325 601 +567 2 2 0 10 200 701 323 +568 2 2 0 10 103 332 463 +569 2 2 0 10 80 81 619 +570 2 2 0 10 193 333 497 +571 2 2 0 10 210 540 786 +572 2 2 0 10 208 604 315 +573 2 2 0 10 181 619 348 +574 2 2 0 10 267 762 437 +575 2 2 0 10 160 811 433 +576 2 2 0 10 194 314 484 +577 2 2 0 10 433 811 724 +578 2 2 0 10 202 303 596 +579 2 2 0 10 13 14 475 +580 2 2 0 10 187 304 585 +581 2 2 0 10 188 338 461 +582 2 2 0 10 190 430 425 +583 2 2 0 10 201 425 430 +584 2 2 0 10 41 632 531 +585 2 2 0 10 325 483 679 +586 2 2 0 10 411 534 616 +587 2 2 0 10 110 807 566 +588 2 2 0 10 121 388 429 +589 2 2 0 10 86 491 350 +590 2 2 0 10 164 479 323 +591 2 2 0 10 166 344 678 +592 2 2 0 10 211 357 560 +593 2 2 0 10 122 493 319 +594 2 2 0 10 197 319 493 +595 2 2 0 10 158 495 340 +596 2 2 0 10 127 509 599 +597 2 2 0 10 191 459 359 +598 2 2 0 10 118 359 459 +599 2 2 0 10 270 755 488 +600 2 2 0 10 402 521 649 +601 2 2 0 10 162 699 307 +602 2 2 0 10 145 309 512 +603 2 2 0 10 283 693 518 +604 2 2 0 10 194 509 314 +605 2 2 0 10 164 655 393 +606 2 2 0 10 181 659 384 +607 2 2 0 10 166 678 419 +608 2 2 0 10 190 643 320 +609 2 2 0 10 189 681 321 +610 2 2 0 10 161 748 738 +611 2 2 0 10 390 810 714 +612 2 2 0 10 216 759 336 +613 2 2 0 10 100 366 667 +614 2 2 0 10 145 313 768 +615 2 2 0 10 112 364 744 +616 2 2 0 10 245 525 442 +617 2 2 0 10 755 204 522 +618 2 2 0 10 64 614 308 +619 2 2 0 10 12 707 316 +620 2 2 0 10 206 524 478 +621 2 2 0 10 191 311 720 +622 2 2 0 10 181 368 619 +623 2 2 0 10 496 655 691 +624 2 2 0 10 205 576 308 +625 2 2 0 10 251 496 691 +626 2 2 0 10 90 360 612 +627 2 2 0 10 235 379 450 +628 2 2 0 10 183 787 510 +629 2 2 0 10 113 591 313 +630 2 2 0 10 207 573 313 +631 2 2 0 10 192 462 429 +632 2 2 0 10 407 723 728 +633 2 2 0 10 367 755 522 +634 2 2 0 10 203 620 310 +635 2 2 0 10 329 444 647 +636 2 2 0 10 202 677 516 +637 2 2 0 10 641 546 230 +638 2 2 0 10 339 546 641 +639 2 2 0 10 116 473 346 +640 2 2 0 10 117 347 474 +641 2 2 0 10 136 581 311 +642 2 2 0 10 113 313 573 +643 2 2 0 10 241 318 740 +644 2 2 0 10 138 723 407 +645 2 2 0 10 227 355 587 +646 2 2 0 10 114 340 754 +647 2 2 0 10 404 804 521 +648 2 2 0 10 168 520 407 +649 2 2 0 10 130 470 394 +650 2 2 0 10 236 317 653 +651 2 2 0 10 73 339 745 +652 2 2 0 10 134 343 481 +653 2 2 0 10 225 333 586 +654 2 2 0 10 142 586 333 +655 2 2 0 10 186 722 386 +656 2 2 0 10 210 571 331 +657 2 2 0 10 162 349 557 +658 2 2 0 10 220 557 349 +659 2 2 0 10 133 325 776 +660 2 2 0 10 244 609 408 +661 2 2 0 10 22 315 604 +662 2 2 0 10 212 525 504 +663 2 2 0 10 82 348 770 +664 2 2 0 10 81 770 348 +665 2 2 0 10 119 321 681 +666 2 2 0 10 185 667 366 +667 2 2 0 10 252 471 648 +668 2 2 0 10 208 315 575 +669 2 2 0 10 124 523 323 +670 2 2 0 10 200 323 523 +671 2 2 0 10 70 498 408 +672 2 2 0 10 15 331 710 +673 2 2 0 10 151 627 317 +674 2 2 0 10 92 93 487 +675 2 2 0 10 151 641 396 +676 2 2 0 10 142 333 547 +677 2 2 0 10 188 487 338 +678 2 2 0 10 312 744 364 +679 2 2 0 10 129 426 652 +680 2 2 0 10 133 421 585 +681 2 2 0 10 45 740 318 +682 2 2 0 10 178 567 410 +683 2 2 0 10 333 594 497 +684 2 2 0 10 136 374 582 +685 2 2 0 10 160 369 811 +686 2 2 0 10 122 319 568 +687 2 2 0 10 147 569 319 +688 2 2 0 10 125 320 560 +689 2 2 0 10 299 431 792 +690 2 2 0 10 129 611 351 +691 2 2 0 10 236 351 611 +692 2 2 0 10 238 374 639 +693 2 2 0 10 231 476 466 +694 2 2 0 10 127 466 476 +695 2 2 0 10 144 565 511 +696 2 2 0 10 275 511 565 +697 2 2 0 10 302 334 700 +698 2 2 0 10 191 359 738 +699 2 2 0 10 267 437 735 +700 2 2 0 10 185 391 667 +701 2 2 0 10 129 652 441 +702 2 2 0 10 185 588 365 +703 2 2 0 10 279 801 457 +704 2 2 0 10 107 385 490 +705 2 2 0 10 297 573 582 +706 2 2 0 10 181 524 368 +707 2 2 0 10 206 368 524 +708 2 2 0 10 189 321 652 +709 2 2 0 10 82 83 659 +710 2 2 0 10 202 328 743 +711 2 2 0 10 144 398 504 +712 2 2 0 10 212 504 398 +713 2 2 0 10 185 366 588 +714 2 2 0 10 309 674 767 +715 2 2 0 10 167 679 399 +716 2 2 0 10 255 399 679 +717 2 2 0 10 133 585 445 +718 2 2 0 10 106 381 499 +719 2 2 0 10 55 677 330 +720 2 2 0 10 207 582 573 +721 2 2 0 10 234 503 438 +722 2 2 0 10 132 438 503 +723 2 2 0 10 139 417 489 +724 2 2 0 10 215 489 417 +725 2 2 0 10 202 596 328 +726 2 2 0 10 323 701 392 +727 2 2 0 10 73 546 339 +728 2 2 0 10 56 57 516 +729 2 2 0 10 238 671 374 +730 2 2 0 10 209 569 371 +731 2 2 0 10 135 344 510 +732 2 2 0 10 123 577 324 +733 2 2 0 10 150 324 578 +734 2 2 0 10 88 89 505 +735 2 2 0 10 163 388 615 +736 2 2 0 10 246 564 626 +737 2 2 0 10 418 511 686 +738 2 2 0 10 158 340 526 +739 2 2 0 10 147 328 596 +740 2 2 0 10 225 479 393 +741 2 2 0 10 164 393 479 +742 2 2 0 10 143 345 579 +743 2 2 0 10 219 579 345 +744 2 2 0 10 673 177 559 +745 2 2 0 10 353 673 559 +746 2 2 0 10 112 744 448 +747 2 2 0 10 263 684 715 +748 2 2 0 10 301 360 689 +749 2 2 0 10 235 386 486 +750 2 2 0 10 193 547 333 +751 2 2 0 10 231 387 476 +752 2 2 0 10 174 332 651 +753 2 2 0 10 38 515 361 +754 2 2 0 10 311 748 480 +755 2 2 0 10 337 737 447 +756 2 2 0 10 142 547 606 +757 2 2 0 10 121 462 416 +758 2 2 0 10 199 373 488 +759 2 2 0 10 120 488 373 +760 2 2 0 10 203 761 337 +761 2 2 0 10 217 376 578 +762 2 2 0 10 243 338 780 +763 2 2 0 10 203 527 342 +764 2 2 0 10 103 709 332 +765 2 2 0 10 24 25 431 +766 2 2 0 10 225 594 333 +767 2 2 0 10 149 571 334 +768 2 2 0 10 126 334 572 +769 2 2 0 10 203 337 620 +770 2 2 0 10 276 566 807 +771 2 2 0 10 34 35 682 +772 2 2 0 10 51 52 683 +773 2 2 0 10 186 386 580 +774 2 2 0 10 235 580 386 +775 2 2 0 10 206 617 335 +776 2 2 0 10 99 100 667 +777 2 2 0 10 196 465 403 +778 2 2 0 10 185 428 750 +779 2 2 0 10 157 335 617 +780 2 2 0 10 7 541 365 +781 2 2 0 10 116 633 737 +782 2 2 0 10 121 429 462 +783 2 2 0 10 283 451 693 +784 2 2 0 10 175 437 762 +785 2 2 0 10 255 760 399 +786 2 2 0 10 148 661 643 +787 2 2 0 10 61 62 437 +788 2 2 0 10 70 71 498 +789 2 2 0 10 352 448 696 +790 2 2 0 10 246 627 396 +791 2 2 0 10 102 628 425 +792 2 2 0 10 157 646 354 +793 2 2 0 10 108 494 367 +794 2 2 0 10 199 367 494 +795 2 2 0 10 231 466 559 +796 2 2 0 10 248 767 674 +797 2 2 0 10 93 780 338 +798 2 2 0 10 134 551 343 +799 2 2 0 10 150 620 337 +800 2 2 0 10 155 537 372 +801 2 2 0 10 184 408 498 +802 2 2 0 10 184 645 456 +803 2 2 0 10 20 21 518 +804 2 2 0 10 224 574 363 +805 2 2 0 10 139 363 574 +806 2 2 0 10 135 558 344 +807 2 2 0 10 140 808 535 +808 2 2 0 10 320 643 661 +809 2 2 0 10 268 809 369 +810 2 2 0 10 79 368 532 +811 2 2 0 10 114 497 594 +812 2 2 0 10 108 367 522 +813 2 2 0 10 265 447 737 +814 2 2 0 10 168 728 432 +815 2 2 0 10 30 31 527 +816 2 2 0 10 156 602 377 +817 2 2 0 10 122 649 399 +818 2 2 0 10 22 23 705 +819 2 2 0 10 103 380 514 +820 2 2 0 10 105 392 701 +821 2 2 0 10 211 709 454 +822 2 2 0 10 205 345 576 +823 2 2 0 10 196 403 694 +824 2 2 0 10 191 490 385 +825 2 2 0 10 205 562 345 +826 2 2 0 10 209 371 824 +827 2 2 0 10 271 606 547 +828 2 2 0 10 104 353 721 +829 2 2 0 10 5 366 781 +830 2 2 0 10 100 781 366 +831 2 2 0 10 143 576 345 +832 2 2 0 10 208 575 355 +833 2 2 0 10 108 377 610 +834 2 2 0 10 236 653 352 +835 2 2 0 10 112 352 653 +836 2 2 0 10 738 533 161 +837 2 2 0 10 359 533 738 +838 2 2 0 10 219 345 607 +839 2 2 0 10 154 357 775 +840 2 2 0 10 154 352 696 +841 2 2 0 10 290 729 476 +842 2 2 0 10 127 476 729 +843 2 2 0 10 182 633 346 +844 2 2 0 10 105 555 375 +845 2 2 0 10 274 736 357 +846 2 2 0 10 264 764 515 +847 2 2 0 10 89 90 612 +848 2 2 0 10 162 373 699 +849 2 2 0 10 198 385 636 +850 2 2 0 10 152 356 548 +851 2 2 0 10 136 639 374 +852 2 2 0 10 247 482 412 +853 2 2 0 10 159 777 412 +854 2 2 0 10 273 412 777 +855 2 2 0 10 204 548 356 +856 2 2 0 10 86 87 491 +857 2 2 0 10 205 614 506 +858 2 2 0 10 204 356 618 +859 2 2 0 10 456 645 611 +860 2 2 0 10 428 517 750 +861 2 2 0 10 201 501 425 +862 2 2 0 10 432 728 790 +863 2 2 0 10 394 470 777 +864 2 2 0 10 102 613 484 +865 2 2 0 10 357 736 560 +866 2 2 0 10 154 669 351 +867 2 2 0 10 117 726 595 +868 2 2 0 10 217 769 376 +869 2 2 0 10 121 570 355 +870 2 2 0 10 208 355 570 +871 2 2 0 10 277 823 439 +872 2 2 0 10 65 66 506 +873 2 2 0 10 89 612 505 +874 2 2 0 10 343 820 764 +875 2 2 0 10 216 365 541 +876 2 2 0 10 171 395 500 +877 2 2 0 10 108 522 377 +878 2 2 0 10 237 358 657 +879 2 2 0 10 227 688 355 +880 2 2 0 10 122 399 493 +881 2 2 0 10 206 532 368 +882 2 2 0 10 239 721 353 +883 2 2 0 10 102 484 628 +884 2 2 0 10 252 648 485 +885 2 2 0 10 158 526 389 +886 2 2 0 10 253 530 672 +887 2 2 0 10 151 457 801 +888 2 2 0 10 420 561 817 +889 2 2 0 10 817 561 124 +890 2 2 0 10 291 814 437 +891 2 2 0 10 11 12 563 +892 2 2 0 10 74 75 468 +893 2 2 0 10 105 375 528 +894 2 2 0 10 118 706 359 +895 2 2 0 10 141 370 644 +896 2 2 0 10 240 644 370 +897 2 2 0 10 157 354 648 +898 2 2 0 10 198 354 646 +899 2 2 0 10 253 503 530 +900 2 2 0 10 234 530 503 +901 2 2 0 10 121 355 688 +902 2 2 0 10 344 558 678 +903 2 2 0 10 58 824 371 +904 2 2 0 10 216 541 759 +905 2 2 0 10 42 600 358 +906 2 2 0 10 131 618 356 +907 2 2 0 10 131 356 637 +908 2 2 0 10 152 638 356 +909 2 2 0 10 90 689 360 +910 2 2 0 10 255 679 483 +911 2 2 0 10 159 364 564 +912 2 2 0 10 36 553 382 +913 2 2 0 10 228 382 553 +914 2 2 0 10 229 554 383 +915 2 2 0 10 50 383 554 +916 2 2 0 10 237 632 358 +917 2 2 0 10 249 389 526 +918 2 2 0 10 155 671 360 +919 2 2 0 10 238 360 671 +920 2 2 0 10 238 612 360 +921 2 2 0 10 128 436 545 +922 2 2 0 10 138 407 624 +923 2 2 0 10 250 624 407 +924 2 2 0 10 260 658 477 +925 2 2 0 10 277 651 464 +926 2 2 0 10 28 376 769 +927 2 2 0 10 84 538 384 +928 2 2 0 10 297 582 374 +929 2 2 0 10 145 768 409 +930 2 2 0 10 263 673 684 +931 2 2 0 10 165 634 361 +932 2 2 0 10 228 361 634 +933 2 2 0 10 166 362 635 +934 2 2 0 10 229 635 362 +935 2 2 0 10 128 545 378 +936 2 2 0 10 399 760 493 +937 2 2 0 10 249 676 655 +938 2 2 0 10 72 73 745 +939 2 2 0 10 174 826 463 +940 2 2 0 10 102 400 613 +941 2 2 0 10 240 613 400 +942 2 2 0 10 777 159 564 +943 2 2 0 10 158 778 495 +944 2 2 0 10 170 513 401 +945 2 2 0 10 123 411 577 +946 2 2 0 10 162 557 373 +947 2 2 0 10 394 777 564 +948 2 2 0 10 329 810 390 +949 2 2 0 10 168 363 625 +950 2 2 0 10 122 568 402 +951 2 2 0 10 189 802 681 +952 2 2 0 10 105 701 443 +953 2 2 0 10 220 542 391 +954 2 2 0 10 98 391 542 +955 2 2 0 10 301 733 487 +956 2 2 0 10 273 777 470 +957 2 2 0 10 167 399 529 +958 2 2 0 10 233 413 734 +959 2 2 0 10 242 418 590 +960 2 2 0 10 141 590 418 +961 2 2 0 10 379 785 782 +962 2 2 0 10 222 390 603 +963 2 2 0 10 202 743 395 +964 2 2 0 10 265 375 749 +965 2 2 0 10 212 398 583 +966 2 2 0 10 175 521 402 +967 2 2 0 10 128 378 666 +968 2 2 0 10 136 582 508 +969 2 2 0 10 58 371 716 +970 2 2 0 10 120 373 789 +971 2 2 0 10 167 529 405 +972 2 2 0 10 240 370 613 +973 2 2 0 10 156 782 785 +974 2 2 0 10 267 741 762 +975 2 2 0 10 250 407 520 +976 2 2 0 10 250 372 640 +977 2 2 0 10 266 783 747 +978 2 2 0 10 423 783 616 +979 2 2 0 10 783 179 616 +980 2 2 0 10 266 431 783 +981 2 2 0 10 203 401 761 +982 2 2 0 10 235 711 379 +983 2 2 0 10 102 425 501 +984 2 2 0 10 199 699 373 +985 2 2 0 10 250 668 372 +986 2 2 0 10 225 393 594 +987 2 2 0 10 114 594 393 +988 2 2 0 10 246 394 564 +989 2 2 0 10 233 638 413 +990 2 2 0 10 181 384 805 +991 2 2 0 10 155 374 671 +992 2 2 0 10 115 439 823 +993 2 2 0 10 249 526 676 +994 2 2 0 10 438 809 826 +995 2 2 0 10 214 405 529 +996 2 2 0 10 240 727 644 +997 2 2 0 10 221 805 538 +998 2 2 0 10 384 538 805 +999 2 2 0 10 28 692 376 +1000 2 2 0 10 261 713 381 +1001 2 2 0 10 262 397 785 +1002 2 2 0 10 156 785 397 +1003 2 2 0 10 163 378 715 +1004 2 2 0 10 106 622 381 +1005 2 2 0 10 63 64 675 +1006 2 2 0 10 25 792 431 +1007 2 2 0 10 160 380 695 +1008 2 2 0 10 176 530 460 +1009 2 2 0 10 234 460 530 +1010 2 2 0 10 223 666 807 +1011 2 2 0 10 305 802 380 +1012 2 2 0 10 221 706 427 +1013 2 2 0 10 343 764 481 +1014 2 2 0 10 177 453 559 +1015 2 2 0 10 231 629 387 +1016 2 2 0 10 61 437 814 +1017 2 2 0 10 268 695 463 +1018 2 2 0 10 68 609 410 +1019 2 2 0 10 198 630 385 +1020 2 2 0 10 227 615 388 +1021 2 2 0 10 107 636 385 +1022 2 2 0 10 190 794 643 +1023 2 2 0 10 120 517 428 +1024 2 2 0 10 132 809 438 +1025 2 2 0 10 288 426 669 +1026 2 2 0 10 121 688 388 +1027 2 2 0 10 214 521 804 +1028 2 2 0 10 220 391 750 +1029 2 2 0 10 179 783 431 +1030 2 2 0 10 123 534 411 +1031 2 2 0 10 38 39 515 +1032 2 2 0 10 185 750 391 +1033 2 2 0 10 148 712 387 +1034 2 2 0 10 277 387 823 +1035 2 2 0 10 134 656 389 +1036 2 2 0 10 158 389 657 +1037 2 2 0 10 163 690 388 +1038 2 2 0 10 227 388 688 +1039 2 2 0 10 257 748 491 +1040 2 2 0 10 62 735 437 +1041 2 2 0 10 254 772 390 +1042 2 2 0 10 230 396 641 +1043 2 2 0 10 181 427 524 +1044 2 2 0 10 259 742 519 +1045 2 2 0 10 110 544 807 +1046 2 2 0 10 265 749 447 +1047 2 2 0 10 195 447 749 +1048 2 2 0 10 345 562 607 +1049 2 2 0 10 119 607 562 +1050 2 2 0 10 178 410 642 +1051 2 2 0 10 244 642 410 +1052 2 2 0 10 208 518 604 +1053 2 2 0 10 399 649 529 +1054 2 2 0 10 7 8 541 +1055 2 2 0 10 286 495 778 +1056 2 2 0 10 119 562 406 +1057 2 2 0 10 156 397 602 +1058 2 2 0 10 225 584 479 +1059 2 2 0 10 381 713 499 +1060 2 2 0 10 78 79 532 +1061 2 2 0 10 274 696 448 +1062 2 2 0 10 126 572 440 +1063 2 2 0 10 164 392 691 +1064 2 2 0 10 114 393 676 +1065 2 2 0 10 165 764 820 +1066 2 2 0 10 117 395 743 +1067 2 2 0 10 246 698 394 +1068 2 2 0 10 130 394 698 +1069 2 2 0 10 291 402 806 +1070 2 2 0 10 134 496 551 +1071 2 2 0 10 251 551 496 +1072 2 2 0 10 262 828 397 +1073 2 2 0 10 26 27 507 +1074 2 2 0 10 109 405 650 +1075 2 2 0 10 74 468 546 +1076 2 2 0 10 139 550 417 +1077 2 2 0 10 313 591 768 +1078 2 2 0 10 209 824 502 +1079 2 2 0 10 126 442 525 +1080 2 2 0 10 275 509 686 +1081 2 2 0 10 194 686 509 +1082 2 2 0 10 193 477 687 +1083 2 2 0 10 228 473 513 +1084 2 2 0 10 266 803 431 +1085 2 2 0 10 231 559 453 +1086 2 2 0 10 292 804 404 +1087 2 2 0 10 130 698 396 +1088 2 2 0 10 229 500 474 +1089 2 2 0 10 246 396 698 +1090 2 2 0 10 131 637 452 +1091 2 2 0 10 307 723 539 +1092 2 2 0 10 138 539 723 +1093 2 2 0 10 59 60 502 +1094 2 2 0 10 187 623 492 +1095 2 2 0 10 213 561 420 +1096 2 2 0 10 294 818 397 +1097 2 2 0 10 144 731 565 +1098 2 2 0 10 325 621 776 +1099 2 2 0 10 47 419 593 +1100 2 2 0 10 200 598 443 +1101 2 2 0 10 197 713 455 +1102 2 2 0 10 261 455 713 +1103 2 2 0 10 135 687 477 +1104 2 2 0 10 219 607 433 +1105 2 2 0 10 140 549 543 +1106 2 2 0 10 116 761 401 +1107 2 2 0 10 73 74 546 +1108 2 2 0 10 112 653 626 +1109 2 2 0 10 317 626 653 +1110 2 2 0 10 193 687 654 +1111 2 2 0 10 187 585 421 +1112 2 2 0 10 358 778 657 +1113 2 2 0 10 357 454 775 +1114 2 2 0 10 121 416 570 +1115 2 2 0 10 331 571 763 +1116 2 2 0 10 294 644 727 +1117 2 2 0 10 176 631 415 +1118 2 2 0 10 213 446 535 +1119 2 2 0 10 256 728 723 +1120 2 2 0 10 244 410 609 +1121 2 2 0 10 230 546 468 +1122 2 2 0 10 379 782 450 +1123 2 2 0 10 280 647 444 +1124 2 2 0 10 289 406 788 +1125 2 2 0 10 175 762 404 +1126 2 2 0 10 376 798 578 +1127 2 2 0 10 286 708 469 +1128 2 2 0 10 95 422 592 +1129 2 2 0 10 14 15 710 +1130 2 2 0 10 167 621 679 +1131 2 2 0 10 325 679 621 +1132 2 2 0 10 371 569 766 +1133 2 2 0 10 212 700 525 +1134 2 2 0 10 214 650 405 +1135 2 2 0 10 309 767 512 +1136 2 2 0 10 299 816 411 +1137 2 2 0 10 272 584 586 +1138 2 2 0 10 225 586 584 +1139 2 2 0 10 216 725 428 +1140 2 2 0 10 187 421 662 +1141 2 2 0 10 125 694 403 +1142 2 2 0 10 253 492 623 +1143 2 2 0 10 167 405 742 +1144 2 2 0 10 232 606 663 +1145 2 2 0 10 24 431 803 +1146 2 2 0 10 241 593 419 +1147 2 2 0 10 140 535 549 +1148 2 2 0 10 321 441 652 +1149 2 2 0 10 291 806 502 +1150 2 2 0 10 58 59 824 +1151 2 2 0 10 215 409 768 +1152 2 2 0 10 218 449 549 +1153 2 2 0 10 158 657 778 +1154 2 2 0 10 243 592 422 +1155 2 2 0 10 181 805 427 +1156 2 2 0 10 190 425 628 +1157 2 2 0 10 241 419 678 +1158 2 2 0 10 10 413 774 +1159 2 2 0 10 137 597 465 +1160 2 2 0 10 159 412 799 +1161 2 2 0 10 215 768 591 +1162 2 2 0 10 168 407 728 +1163 2 2 0 10 217 507 769 +1164 2 2 0 10 250 520 668 +1165 2 2 0 10 135 510 687 +1166 2 2 0 10 291 502 814 +1167 2 2 0 10 247 412 670 +1168 2 2 0 10 68 69 609 +1169 2 2 0 10 259 791 421 +1170 2 2 0 10 351 669 426 +1171 2 2 0 10 233 734 563 +1172 2 2 0 10 26 507 792 +1173 2 2 0 10 252 468 660 +1174 2 2 0 10 75 660 468 +1175 2 2 0 10 27 28 769 +1176 2 2 0 10 84 85 538 +1177 2 2 0 10 131 452 784 +1178 2 2 0 10 101 672 414 +1179 2 2 0 10 223 544 543 +1180 2 2 0 10 254 543 544 +1181 2 2 0 10 336 774 413 +1182 2 2 0 10 108 610 432 +1183 2 2 0 10 322 714 598 +1184 2 2 0 10 153 598 714 +1185 2 2 0 10 273 812 412 +1186 2 2 0 10 132 664 809 +1187 2 2 0 10 241 740 593 +1188 2 2 0 10 299 792 507 +1189 2 2 0 10 10 734 413 +1190 2 2 0 10 148 464 661 +1191 2 2 0 10 16 17 540 +1192 2 2 0 10 97 98 542 +1193 2 2 0 10 128 666 449 +1194 2 2 0 10 268 463 826 +1195 2 2 0 10 259 421 776 +1196 2 2 0 10 133 776 421 +1197 2 2 0 10 221 533 706 +1198 2 2 0 10 245 434 731 +1199 2 2 0 10 268 826 809 +1200 2 2 0 10 108 432 790 +1201 2 2 0 10 304 445 585 +1202 2 2 0 10 197 499 713 +1203 2 2 0 10 210 572 571 +1204 2 2 0 10 334 571 572 +1205 2 2 0 10 93 94 780 +1206 2 2 0 10 189 652 426 +1207 2 2 0 10 209 502 806 +1208 2 2 0 10 194 418 686 +1209 2 2 0 10 283 797 416 +1210 2 2 0 10 220 517 789 +1211 2 2 0 10 298 436 631 +1212 2 2 0 10 103 454 709 +1213 2 2 0 10 226 519 739 +1214 2 2 0 10 169 417 756 +1215 2 2 0 10 287 459 630 +1216 2 2 0 10 36 37 553 +1217 2 2 0 10 49 50 554 +1218 2 2 0 10 186 580 452 +1219 2 2 0 10 305 681 802 +1220 2 2 0 10 243 422 685 +1221 2 2 0 10 271 663 606 +1222 2 2 0 10 46 47 593 +1223 2 2 0 10 369 809 664 +1224 2 2 0 10 60 814 502 +1225 2 2 0 10 45 46 740 +1226 2 2 0 10 187 662 458 +1227 2 2 0 10 132 458 664 +1228 2 2 0 10 388 690 429 +1229 2 2 0 10 180 435 658 +1230 2 2 0 10 239 434 721 +1231 2 2 0 10 293 523 561 +1232 2 2 0 10 124 561 523 +1233 2 2 0 10 221 427 805 +1234 2 2 0 10 306 429 690 +1235 2 2 0 10 129 441 718 +1236 2 2 0 10 134 481 656 +1237 2 2 0 10 300 423 813 +1238 2 2 0 10 107 490 674 +1239 2 2 0 10 319 569 568 +1240 2 2 0 10 209 568 569 +1241 2 2 0 10 216 467 725 +1242 2 2 0 10 21 22 604 +1243 2 2 0 10 157 825 646 +1244 2 2 0 10 118 427 706 +1245 2 2 0 10 305 433 822 +1246 2 2 0 10 220 789 557 +1247 2 2 0 10 302 700 583 +1248 2 2 0 10 212 583 700 +1249 2 2 0 10 235 450 784 +1250 2 2 0 10 178 642 441 +1251 2 2 0 10 177 702 436 +1252 2 2 0 10 205 506 788 +1253 2 2 0 10 289 788 506 +1254 2 2 0 10 219 433 724 +1255 2 2 0 10 120 428 725 +1256 2 2 0 10 231 453 629 +1257 2 2 0 10 94 95 592 +1258 2 2 0 10 332 464 651 +1259 2 2 0 10 400 697 756 +1260 2 2 0 10 169 756 697 +1261 2 2 0 10 390 772 603 +1262 2 2 0 10 411 816 577 +1263 2 2 0 10 243 780 592 +1264 2 2 0 10 129 456 611 +1265 2 2 0 10 247 605 482 +1266 2 2 0 10 253 623 503 +1267 2 2 0 10 29 680 692 +1268 2 2 0 10 239 466 599 +1269 2 2 0 10 127 599 466 +1270 2 2 0 10 104 721 434 +1271 2 2 0 10 137 730 597 +1272 2 2 0 10 9 774 759 +1273 2 2 0 10 137 482 605 +1274 2 2 0 10 19 693 451 +1275 2 2 0 10 217 816 507 +1276 2 2 0 10 299 507 816 +1277 2 2 0 10 265 737 633 +1278 2 2 0 10 90 91 689 +1279 2 2 0 10 206 478 617 +1280 2 2 0 10 115 629 453 +1281 2 2 0 10 2 757 33 +1282 2 2 0 10 2 34 757 +1283 2 2 0 10 3 53 758 +1284 2 2 0 10 3 758 52 +1285 2 2 0 10 64 65 614 +1286 2 2 0 10 436 702 545 +1287 2 2 0 10 174 438 826 +1288 2 2 0 10 187 458 623 +1289 2 2 0 10 198 646 630 +1290 2 2 0 10 287 630 646 +1291 2 2 0 10 8 9 759 +1292 2 2 0 10 223 449 666 +1293 2 2 0 10 42 43 600 +1294 2 2 0 10 125 560 736 +1295 2 2 0 10 138 624 461 +1296 2 2 0 10 310 692 680 +1297 2 2 0 10 17 751 540 +1298 2 2 0 10 340 753 754 +1299 2 2 0 10 184 457 645 +1300 2 2 0 10 293 779 523 +1301 2 2 0 10 200 523 779 +1302 2 2 0 10 101 492 672 +1303 2 2 0 10 253 672 492 +1304 2 2 0 10 200 779 598 +1305 2 2 0 10 200 443 701 +1306 2 2 0 10 57 58 716 +1307 2 2 0 10 238 505 612 +1308 2 2 0 10 232 663 483 +1309 2 2 0 10 211 661 464 +1310 2 2 0 10 284 440 786 +1311 2 2 0 10 290 643 794 +1312 2 2 0 10 402 568 806 +1313 2 2 0 10 226 458 662 +1314 2 2 0 10 226 739 796 +1315 2 2 0 10 226 664 458 +1316 2 2 0 10 248 490 720 +1317 2 2 0 10 244 456 718 +1318 2 2 0 10 4 770 81 +1319 2 2 0 10 4 82 770 +1320 2 2 0 10 149 763 571 +1321 2 2 0 10 280 443 773 +1322 2 2 0 10 285 697 501 +1323 2 2 0 10 9 10 774 +1324 2 2 0 10 76 471 660 +1325 2 2 0 10 386 732 486 +1326 2 2 0 10 235 486 711 +1327 2 2 0 10 75 76 660 +1328 2 2 0 10 250 640 624 +1329 2 2 0 10 242 590 589 +1330 2 2 0 10 262 589 590 +1331 2 2 0 10 196 448 744 +1332 2 2 0 10 228 634 473 +1333 2 2 0 10 229 474 635 +1334 2 2 0 10 324 577 578 +1335 2 2 0 10 217 578 577 +1336 2 2 0 10 21 604 518 +1337 2 2 0 10 110 603 772 +1338 2 2 0 10 136 508 581 +1339 2 2 0 10 248 581 508 +1340 2 2 0 10 257 793 480 +1341 2 2 0 10 252 660 471 +1342 2 2 0 10 149 732 722 +1343 2 2 0 10 386 722 732 +1344 2 2 0 10 131 784 450 +1345 2 2 0 10 296 450 782 +1346 2 2 0 10 295 625 489 +1347 2 2 0 10 55 56 677 +1348 2 2 0 10 1 5 781 +1349 2 2 0 10 1 781 100 +1350 2 2 0 10 275 565 599 +1351 2 2 0 10 12 13 707 +1352 2 2 0 10 129 718 456 +1353 2 2 0 10 281 665 815 +1354 2 2 0 10 28 29 692 +1355 2 2 0 10 87 703 491 +1356 2 2 0 10 257 491 703 +1357 2 2 0 10 256 790 728 +1358 2 2 0 10 316 452 827 +1359 2 2 0 10 136 480 639 +1360 2 2 0 10 29 30 680 +1361 2 2 0 10 369 796 811 +1362 2 2 0 10 207 508 582 +1363 2 2 0 10 314 509 729 +1364 2 2 0 10 183 821 595 +1365 2 2 0 10 347 595 821 +1366 2 2 0 10 283 518 797 +1367 2 2 0 10 208 797 518 +1368 2 2 0 10 288 775 454 +1369 2 2 0 10 314 628 484 +1370 2 2 0 10 412 482 799 +1371 2 2 0 10 44 469 708 +1372 2 2 0 10 452 580 784 +1373 2 2 0 10 240 550 727 +1374 2 2 0 10 260 754 753 +1375 2 2 0 10 237 657 656 +1376 2 2 0 10 389 656 657 +1377 2 2 0 10 43 44 708 +1378 2 2 0 10 261 595 726 +1379 2 2 0 10 39 40 752 +1380 2 2 0 10 285 597 730 +1381 2 2 0 10 19 20 693 +1382 2 2 0 10 214 649 521 +1383 2 2 0 10 356 638 637 +1384 2 2 0 10 233 637 638 +1385 2 2 0 10 452 637 827 +1386 2 2 0 10 108 790 494 +1387 2 2 0 10 336 759 774 +1388 2 2 0 10 359 706 533 +1389 2 2 0 10 290 476 712 +1390 2 2 0 10 286 600 708 +1391 2 2 0 10 43 708 600 +1392 2 2 0 10 387 712 476 +1393 2 2 0 10 10 11 734 +1394 2 2 0 10 220 750 517 +1395 2 2 0 10 237 531 632 +1396 2 2 0 10 87 88 703 +1397 2 2 0 10 106 483 663 +1398 2 2 0 10 65 506 614 +1399 2 2 0 10 271 547 654 +1400 2 2 0 10 193 654 547 +1401 2 2 0 10 78 532 795 +1402 2 2 0 10 127 729 509 +1403 2 2 0 10 23 24 803 +1404 2 2 0 10 153 714 810 +1405 2 2 0 10 214 529 649 +1406 2 2 0 10 245 731 504 +1407 2 2 0 10 13 475 707 +1408 2 2 0 10 302 486 732 +1409 2 2 0 10 340 495 753 +1410 2 2 0 10 62 63 735 +1411 2 2 0 10 190 628 794 +1412 2 2 0 10 256 719 494 +1413 2 2 0 10 199 494 719 +1414 2 2 0 10 275 686 511 +1415 2 2 0 10 91 92 733 +1416 2 2 0 10 322 598 779 +1417 2 2 0 10 316 827 563 +1418 2 2 0 10 233 563 827 +1419 2 2 0 10 92 487 733 +1420 2 2 0 10 248 720 581 +1421 2 2 0 10 440 572 786 +1422 2 2 0 10 17 18 751 +1423 2 2 0 10 147 596 766 +1424 2 2 0 10 303 766 596 +1425 2 2 0 10 248 674 490 +1426 2 2 0 10 71 72 819 +1427 2 2 0 10 249 655 496 +1428 2 2 0 10 243 685 539 +1429 2 2 0 10 150 578 798 +1430 2 2 0 10 180 753 495 +1431 2 2 0 10 379 800 785 +1432 2 2 0 10 236 611 645 +1433 2 2 0 10 258 654 687 +1434 2 2 0 10 222 616 534 +1435 2 2 0 10 146 575 747 +1436 2 2 0 10 315 747 575 +1437 2 2 0 10 25 26 792 +1438 2 2 0 10 77 78 795 +1439 2 2 0 10 310 798 692 +1440 2 2 0 10 376 692 798 +1441 2 2 0 10 207 767 508 +1442 2 2 0 10 371 766 716 +1443 2 2 0 10 303 716 766 +1444 2 2 0 10 60 61 814 +1445 2 2 0 10 39 752 515 +1446 2 2 0 10 264 515 752 +1447 2 2 0 10 258 704 654 +1448 2 2 0 10 207 512 767 +1449 2 2 0 10 481 771 656 +1450 2 2 0 10 164 691 655 +1451 2 2 0 10 372 537 640 +1452 2 2 0 10 276 615 566 +1453 2 2 0 10 227 566 615 +1454 2 2 0 10 380 802 514 +1455 2 2 0 10 269 811 796 +1456 2 2 0 10 111 711 486 +1457 2 2 0 10 148 643 712 +1458 2 2 0 10 290 712 643 +1459 2 2 0 10 257 480 748 +1460 2 2 0 10 308 576 741 +1461 2 2 0 10 143 741 576 +1462 2 2 0 10 314 794 628 +1463 2 2 0 10 209 806 568 +1464 2 2 0 10 287 825 478 +1465 2 2 0 10 269 724 811 +1466 2 2 0 10 88 505 703 +1467 2 2 0 10 257 703 505 +1468 2 2 0 10 217 577 816 +1469 2 2 0 10 56 516 677 +1470 2 2 0 10 239 599 565 +1471 2 2 0 10 264 481 764 +1472 2 2 0 10 264 771 481 +1473 2 2 0 10 114 754 497 +1474 2 2 0 10 260 497 754 +1475 2 2 0 10 147 766 569 +1476 2 2 0 10 188 640 537 +1477 2 2 0 10 375 555 749 +1478 2 2 0 10 195 749 555 +1479 2 2 0 10 191 720 490 +1480 2 2 0 10 312 799 482 +1481 2 2 0 10 258 687 510 +1482 2 2 0 10 269 739 556 +1483 2 2 0 10 109 556 739 +1484 2 2 0 10 204 755 548 +1485 2 2 0 10 270 548 755 +1486 2 2 0 10 308 741 675 +1487 2 2 0 10 267 675 741 +1488 2 2 0 10 279 498 819 +1489 2 2 0 10 71 819 498 +1490 2 2 0 10 262 785 800 +1491 2 2 0 10 287 646 825 +1492 2 2 0 10 211 560 661 +1493 2 2 0 10 278 605 608 +1494 2 2 0 10 311 581 720 +1495 2 2 0 10 247 608 605 +1496 2 2 0 10 271 654 704 +1497 2 2 0 10 151 801 641 +1498 2 2 0 10 339 641 801 +1499 2 2 0 10 30 527 680 +1500 2 2 0 10 433 607 822 +1501 2 2 0 10 137 605 730 +1502 2 2 0 10 278 730 605 +1503 2 2 0 10 421 791 662 +1504 2 2 0 10 235 784 580 +1505 2 2 0 10 150 798 620 +1506 2 2 0 10 310 620 798 +1507 2 2 0 10 197 493 760 +1508 2 2 0 10 153 810 647 +1509 2 2 0 10 329 647 810 +1510 2 2 0 10 144 504 731 +1511 2 2 0 10 40 531 752 +1512 2 2 0 10 320 661 560 +1513 2 2 0 10 120 789 517 +1514 2 2 0 10 255 499 760 +1515 2 2 0 10 197 760 499 +1516 2 2 0 10 294 574 818 +1517 2 2 0 10 224 818 574 +1518 2 2 0 10 480 793 639 +1519 2 2 0 10 378 545 715 +1520 2 2 0 10 256 494 790 +1521 2 2 0 10 317 627 626 +1522 2 2 0 10 246 626 627 +1523 2 2 0 10 241 678 558 +1524 2 2 0 10 264 531 771 +1525 2 2 0 10 237 771 531 +1526 2 2 0 10 109 739 519 +1527 2 2 0 10 441 642 718 +1528 2 2 0 10 238 793 505 +1529 2 2 0 10 27 769 507 +1530 2 2 0 10 315 705 747 +1531 2 2 0 10 266 747 705 +1532 2 2 0 10 248 508 767 +1533 2 2 0 10 282 710 763 +1534 2 2 0 10 331 763 710 +1535 2 2 0 10 328 726 743 +1536 2 2 0 10 117 743 726 +1537 2 2 0 10 199 719 699 +1538 2 2 0 10 307 699 719 +1539 2 2 0 10 222 603 813 +1540 2 2 0 10 300 813 603 +1541 2 2 0 10 301 689 733 +1542 2 2 0 10 91 733 689 +1543 2 2 0 10 263 545 702 +1544 2 2 0 10 139 727 550 +1545 2 2 0 10 387 629 823 +1546 2 2 0 10 257 505 793 +1547 2 2 0 10 256 723 719 +1548 2 2 0 10 307 719 723 +1549 2 2 0 10 219 724 556 +1550 2 2 0 10 140 543 717 +1551 2 2 0 10 59 502 824 +1552 2 2 0 10 258 510 787 +1553 2 2 0 10 210 786 572 +1554 2 2 0 10 251 528 765 +1555 2 2 0 10 258 622 704 +1556 2 2 0 10 226 791 519 +1557 2 2 0 10 254 717 543 +1558 2 2 0 10 263 715 545 +1559 2 2 0 10 254 544 772 +1560 2 2 0 10 116 737 761 +1561 2 2 0 10 337 761 737 +1562 2 2 0 10 189 514 802 +1563 2 2 0 10 369 664 796 +1564 2 2 0 10 406 562 788 +1565 2 2 0 10 259 519 791 +1566 2 2 0 10 264 752 531 +1567 2 2 0 10 180 658 753 +1568 2 2 0 10 167 742 621 +1569 2 2 0 10 205 788 562 +1570 2 2 0 10 139 574 727 +1571 2 2 0 10 358 600 778 +1572 2 2 0 10 286 778 600 +1573 2 2 0 10 417 550 756 +1574 2 2 0 10 244 718 642 +1575 2 2 0 10 269 556 724 +1576 2 2 0 10 251 765 551 +1577 2 2 0 10 8 759 541 +1578 2 2 0 10 237 656 771 +1579 2 2 0 10 416 797 570 +1580 2 2 0 10 119 822 607 +1581 2 2 0 10 11 563 734 +1582 2 2 0 10 110 772 544 +1583 2 2 0 10 294 727 574 +1584 2 2 0 10 271 704 663 +1585 2 2 0 10 106 663 704 +1586 2 2 0 10 106 704 622 +1587 2 2 0 10 397 818 602 +1588 2 2 0 10 177 673 702 +1589 2 2 0 10 288 669 775 +1590 2 2 0 10 154 775 669 +1591 2 2 0 10 322 717 714 +1592 2 2 0 10 254 714 717 +1593 2 2 0 10 223 807 544 +1594 2 2 0 10 46 593 740 +1595 2 2 0 10 292 650 804 +1596 2 2 0 10 214 804 650 +1597 2 2 0 10 233 827 637 +1598 2 2 0 10 285 746 697 +1599 2 2 0 10 169 697 746 +1600 2 2 0 10 111 589 800 +1601 2 2 0 10 279 745 801 +1602 2 2 0 10 339 801 745 +1603 2 2 0 10 373 557 789 +1604 2 2 0 10 140 717 808 +1605 2 2 0 10 412 812 670 +1606 2 2 0 10 263 702 673 +1607 2 2 0 10 153 647 773 +1608 2 2 0 10 280 773 647 +1609 2 2 0 10 262 590 828 +1610 2 2 0 10 322 808 717 +1611 2 2 0 10 258 787 622 +1612 2 2 0 10 272 586 815 +1613 2 2 0 10 142 815 586 +1614 2 2 0 10 259 621 742 +1615 2 2 0 10 119 681 822 +1616 2 2 0 10 305 822 681 +1617 2 2 0 10 443 598 773 +1618 2 2 0 10 153 773 598 +1619 2 2 0 10 208 570 797 +1620 2 2 0 10 124 584 817 +1621 2 2 0 10 272 817 584 +1622 2 2 0 10 63 675 735 +1623 2 2 0 10 94 592 780 +1624 2 2 0 10 379 711 800 +1625 2 2 0 10 23 803 705 +1626 2 2 0 10 423 616 813 +1627 2 2 0 10 262 800 589 +1628 2 2 0 10 267 735 675 +1629 2 2 0 10 269 796 739 +1630 2 2 0 10 290 794 729 +1631 2 2 0 10 314 729 794 +1632 2 2 0 10 260 753 658 +1633 2 2 0 10 125 736 694 +1634 2 2 0 10 274 694 736 +1635 2 2 0 10 478 825 617 +1636 2 2 0 10 141 828 590 +1637 2 2 0 10 259 776 621 +1638 2 2 0 10 238 639 793 +1639 2 2 0 10 222 813 616 +1640 2 2 0 10 285 730 746 +1641 2 2 0 10 278 746 730 +1642 2 2 0 10 224 602 818 +1643 2 2 0 10 226 662 791 +1644 2 2 0 10 157 617 825 +1645 2 2 0 10 107 812 636 +1646 2 2 0 10 273 636 812 +1647 2 2 0 10 111 800 711 +1648 2 2 0 10 115 823 629 +1649 2 2 0 10 226 796 664 +1650 2 2 0 10 272 815 665 +1651 2 2 0 10 282 763 722 +1652 2 2 0 10 149 722 763 +1653 2 2 0 10 107 670 812 +1654 2 2 0 10 72 745 819 +1655 2 2 0 10 293 808 779 +1656 2 2 0 10 322 779 808 +1657 2 2 0 10 266 705 803 +1658 2 2 0 10 279 819 745 +$EndElements diff --git a/exercises/solution/exercise-grids/injection2pproblem.hh b/exercises/solution/exercise-grids/injection2pproblem.hh new file mode 100644 index 00000000..5d785ab3 --- /dev/null +++ b/exercises/solution/exercise-grids/injection2pproblem.hh @@ -0,0 +1,268 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief The two-phase porousmediumflow problem for exercise Grids + */ + +#ifndef DUMUX_EXGRIDS_INJECTION_PROBLEM_2P_HH +#define DUMUX_EXGRIDS_INJECTION_PROBLEM_2P_HH + +#include <dumux/discretization/cellcentered/tpfa/properties.hh> +#include <dumux/porousmediumflow/2p/model.hh> +#include <dumux/porousmediumflow/problem.hh> +#include <dumux/material/fluidsystems/h2on2.hh> + +#include "injection2pspatialparams.hh" + +namespace Dumux { + +// forward declare problem +template <class TypeTag> +class InjectionProblem2P; + +namespace Properties { +// define the TypeTag for this problem with a cell-centered two-point flux approximation spatial discretization. +NEW_TYPE_TAG(Injection2pTypeTag, INHERITS_FROM(TwoP)); +NEW_TYPE_TAG(Injection2pCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2pTypeTag)); + +// Set the grid type +SET_TYPE_PROP(Injection2pTypeTag, Grid, Dune::YaspGrid<2>); +// TODO: Task 2: Replace the above Grid Property definition with a more flexible grid (Use Dune::TensorProductCoordinates) +//SET_TYPE_PROP(Injection2pTypeTag, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<double, 2> >); + +// TODO: Task 4: Replace the above Grid Property definition to read in a external structured grid via a .msh file (Use Dune::ALUGrid and Dune:cube) +//SET_TYPE_PROP(Injection2pTypeTag, Grid, Dune::ALUGrid<2, 2, Dune::cube, Dune::nonconforming>); + +// TODO: Task 5: Replace the above Grid Property definition to read in a external unstructured grid via a .msh file (Use Dune::ALUGrid and Dune::simplex) +// SET_TYPE_PROP(Injection2pTypeTag, Grid, Dune::ALUGrid<2, 2, Dune::simplex, Dune::nonconforming>); + +// Set the problem property +SET_TYPE_PROP(Injection2pTypeTag, Problem, InjectionProblem2P<TypeTag>); + +// Set the spatial parameters +SET_TYPE_PROP(Injection2pTypeTag, SpatialParams, + InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry), + typename GET_PROP_TYPE(TypeTag, Scalar)>); + +// Set fluid configuration +SET_TYPE_PROP(Injection2pTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/ false>); +} // end namespace Properties + +/*! + * \ingroup TwoPModel + * \ingroup ImplicitTestProblems + * \brief Gas injection problem where a gas (here nitrogen) is injected into a fully + * water saturated medium. During buoyancy driven upward migration the gas + * passes a high temperature area. + * + * The domain is sized 60 m times 40 m. + * + * For the mass conservation equation neumann boundary conditions are used on + * the top, on the bottom and on the right of the domain, while dirichlet conditions + * apply on the left boundary. + * + * Gas is injected at the right boundary from 7 m to 15 m at a rate of + * 0.001 kg/(s m), the remaining neumann boundaries are no-flow + * boundaries. + * + * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a + * + * This problem uses the \ref TwoPModel model. + */ +template<class TypeTag> +class InjectionProblem2P : public PorousMediumFlowProblem<TypeTag> +{ + using ParentType = PorousMediumFlowProblem<TypeTag>; + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView; + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + + enum { dimWorld = GridView::dimensionworld }; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + +public: + InjectionProblem2P(std::shared_ptr<const FVGridGeometry> fvGridGeometry) + : ParentType(fvGridGeometry) + { + // initialize the tables of the fluid system + FluidSystem::init(/*tempMin=*/273.15, + /*tempMax=*/423.15, + /*numTemp=*/50, + /*pMin=*/0.0, + /*pMax=*/30e6, + /*numP=*/300); + + // name of the problem and output file + // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME + // of type TYPE given in the group GROUPNAME from the input file + name_ = getParam<std::string>("Problem.Name"); + // depth of the aquifer, units: m + aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth"); + // the duration of the injection, units: second + injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration"); + } + + /*! + * \name Problem parameters + */ + // \{ + + /*! + * \brief Returns the problem name + * + * This is used as a prefix for files generated by the simulation. + */ + std::string name() const + { return name_+"-2p"; } + + /*! + * \brief Returns the temperature \f$ K \f$ + */ + Scalar temperature() const + { + return 273.15 + 30; // [K] + } + + // \} + + /*! + * \name Boundary conditions + */ + // \{ + + /*! + * \brief Specifies which kind of boundary condition should be + * used for which equation on a given boundary segment. + * + * \param bcTypes The boundary types for the conservation equations + * \param globalPos The position for which the bc type should be evaluated + */ + BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const + { + BoundaryTypes bcTypes; + // set the left of the domain (with the global position in "0 = x" direction as a Dirichlet boundary + if (globalPos[0] < eps_) + bcTypes.setAllDirichlet(); + // set all other as Neumann boundaries + else + bcTypes.setAllNeumann(); + + return bcTypes; + } + + /*! + * \brief Evaluates the boundary conditions for a Dirichlet + * boundary segment + * + * \param globalPos The global position + */ + PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const + { + return initialAtPos(globalPos); + } + + /*! + * \brief Evaluate the boundary conditions for a neumann + * boundary segment. + * + * \param values Stores the Neumann values for the conservation equations in + * \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$ + * \param globalPos The position of the integration point of the boundary segment. + * + * For this method, the \a values parameter stores the mass flux + * in normal direction of each phase. Negative values mean influx. + */ + PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const + { + // initialize values to zero, i.e. no-flow Neumann boundary conditions + PrimaryVariables values(0.0); + + // if we are inside the injection zone set inflow Neumann boundary conditions + // using < boundary + eps_ or > boundary - eps_ is safer for floating point comparisons + // than using <= or >= as it is robust with regard to imprecision introduced by rounding errors. + if (time_ < injectionDuration_ + && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0]) + { + // inject nitrogen. negative values mean injection + // units kg/(s*m^2) + values[Indices::conti0EqIdx + FluidSystem::N2Idx]= -1e-4/FluidSystem::molarMass(FluidSystem::N2Idx); + values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0; + } + + return values; + } + + // \} + + + /*! + * \name Volume terms + */ + // \{ + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param globalPos The position for which the initial condition should be evaluated + * + * For this method, the \a values parameter stores primary + * variables. + */ + PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const + { + PrimaryVariables values(0.0); + + // get the water density at atmospheric conditions + const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5); + + // assume an intially hydrostatic liquid pressure profile + // note: we subtract rho_w*g*h because g is defined negative + const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]); + + values[Indices::pressureIdx] = pw; + values[Indices::saturationIdx] = 0.0; + + return values; + } + + // \} + + //! set the time for the time dependent boundary conditions (called from main) + void setTime(Scalar time) + { time_ = time; } + +private: + static constexpr Scalar eps_ = 1e-6; + std::string name_; //! Problem name + Scalar aquiferDepth_; //! Depth of the aquifer in m + Scalar injectionDuration_; //! Duration of the injection in seconds + Scalar time_; +}; + +} //end namespace Dumux + +#endif diff --git a/exercises/solution/exercise-grids/injection2pspatialparams.hh b/exercises/solution/exercise-grids/injection2pspatialparams.hh new file mode 100644 index 00000000..0e72f8d5 --- /dev/null +++ b/exercises/solution/exercise-grids/injection2pspatialparams.hh @@ -0,0 +1,172 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief Definition of the spatial parameters for the injection problem + * which uses the isothermal two-phase two-component + * fully implicit model. + */ + +#ifndef DUMUX_EXGRIDS_INJECTION_SPATIAL_PARAMS_HH +#define DUMUX_EXGRIDS_INJECTION_SPATIAL_PARAMS_HH + +#include <dumux/material/spatialparams/fv.hh> +#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> +#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> + +#include <dumux/io/gnuplotinterface.hh> +#include <dumux/io/plotmateriallaw.hh> + +namespace Dumux { + +/*! + * \ingroup TwoPTwoCModel + * \brief Definition of the spatial parameters for the injection problem + * which uses the isothermal two-phase two-component + * fully implicit model. + */ +template<class FVGridGeometry, class Scalar> +class InjectionSpatialParams +: public FVSpatialParams<FVGridGeometry, Scalar, InjectionSpatialParams<FVGridGeometry, Scalar>> +{ + using ThisType = InjectionSpatialParams<FVGridGeometry, Scalar>; + using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>; + using GridView = typename FVGridGeometry::GridView; + + // get the dimensions of the simulation domain from GridView + static const int dimWorld = GridView::dimensionworld; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + +public: + // export permeability type + using PermeabilityType = Scalar; + + using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>; + using MaterialLawParams = typename MaterialLaw::Params; + + /*! + * \brief The constructor + * + * \param fvGridGeometry The finite volume grid geometry + */ + InjectionSpatialParams(std::shared_ptr<const FVGridGeometry>& fvGridGeometry) + : ParentType(fvGridGeometry) + { + // Aquifer Height, measured from the bottom + aquiferHeightFromBottom_ = 30.0; + + // intrinsic permeabilities + aquitardK_ = getParam<Scalar>("SpatialParams.PermeabilityAquitard"); + aquiferK_ = getParam<Scalar>("SpatialParams.PermeabilityAquifer"); + + // porosities + aquitardPorosity_ = 0.2; + aquiferPorosity_ = 0.4; + + // residual saturations + aquitardMaterialParams_.setSwr(0.2); + aquitardMaterialParams_.setSnr(0.0); + aquiferMaterialParams_.setSwr(0.2); + aquiferMaterialParams_.setSnr(0.0); + + // parameters for the Brooks-Corey law + aquitardMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquitard")); + aquiferMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquifer")); + aquitardMaterialParams_.setLambda(2.0); + aquiferMaterialParams_.setLambda(2.0); + } + + /*! + * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$. + * + * \param globalPos The global position + */ + PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const + { + // here, either aquitard or aquifer permeability are returned, depending on the global position + if (isInAquitard_(globalPos)) + return aquitardK_; + return aquiferK_; + } + + /*! + * \brief Define the porosity \f$\mathrm{[-]}\f$. + * + * \param globalPos The global position + */ + Scalar porosityAtPos(const GlobalPosition& globalPos) const + { + // here, either aquitard or aquifer porosity are returned, depending on the global position + if (isInAquitard_(globalPos)) + return aquitardPorosity_; + return aquiferPorosity_; + } + + /*! + * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.). + * + * \param globalPos The global position + * + * \return the material parameters object + */ + const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const + { + if (isInAquitard_(globalPos)) + return aquitardMaterialParams_; + return aquiferMaterialParams_; + } + + /*! + * \brief Function for defining which phase is to be considered as the wetting phase. + * + * \return the wetting phase index + * \param globalPos The position of the center of the element + */ + template<class FluidSystem> + int wettingPhaseAtPos(const GlobalPosition& globalPos) const + { return FluidSystem::H2OIdx; } + +private: + + static constexpr Scalar eps_ = 1e-6; + + // provides a convenient way distinguishing whether a given location is inside the aquitard + bool isInAquitard_(const GlobalPosition &globalPos) const + { + // globalPos[dimWorld-1] is the y direction for 2D grids or the z direction for 3D grids + return globalPos[dimWorld-1] > aquiferHeightFromBottom_ + eps_; + } + + Scalar aquitardK_; + Scalar aquiferK_; + Scalar aquiferHeightFromBottom_; + + + Scalar aquitardPorosity_; + Scalar aquiferPorosity_; + + MaterialLawParams aquitardMaterialParams_; + MaterialLawParams aquiferMaterialParams_; +}; + +} // end namespace Dumux + +#endif -- GitLab