diff --git a/applications/solvers/molecularDynamics/gnemdFoam/Make/options b/applications/solvers/molecularDynamics/gnemdFoam/Make/options index 80f977345684ed70cfcff7d09a17b0dc1a7770d0..89431d062560428f33fd5f5986f6b937270edee1 100755 --- a/applications/solvers/molecularDynamics/gnemdFoam/Make/options +++ b/applications/solvers/molecularDynamics/gnemdFoam/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude @@ -8,4 +9,5 @@ EXE_LIBS = \ -lmeshTools \ -lfiniteVolume \ -llagrangian \ - -lmolecule + -lmolecule \ + -lpotential diff --git a/applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C b/applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C old mode 100755 new mode 100644 diff --git a/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options index 80f977345684ed70cfcff7d09a17b0dc1a7770d0..89431d062560428f33fd5f5986f6b937270edee1 100755 --- a/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options +++ b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ - -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude @@ -8,4 +9,5 @@ EXE_LIBS = \ -lmeshTools \ -lfiniteVolume \ -llagrangian \ - -lmolecule + -lmolecule \ + -lpotential diff --git a/applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C b/applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C old mode 100755 new mode 100644 diff --git a/applications/solvers/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H b/applications/solvers/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H old mode 100755 new mode 100644 diff --git a/applications/utilities/mesh/manipulation/setSet/.setSet b/applications/utilities/mesh/manipulation/setSet/.setSet deleted file mode 100644 index ff604669be5caa27f3a0073fdc8fb1e8f21bfd5f..0000000000000000000000000000000000000000 --- a/applications/utilities/mesh/manipulation/setSet/.setSet +++ /dev/null @@ -1 +0,0 @@ -quit diff --git a/applications/utilities/mesh/manipulation/setSet/setSet.C b/applications/utilities/mesh/manipulation/setSet/setSet.C index c4e6b21162333db17eb973a51f5a75934cfa8693..4790e0ffc2f559a1460581b14b9651f50dec323c 100644 --- a/applications/utilities/mesh/manipulation/setSet/setSet.C +++ b/applications/utilities/mesh/manipulation/setSet/setSet.C @@ -405,64 +405,71 @@ bool doCommand backup(mesh, setName, currentSet, setName + "_old"); } - if (action == topoSetSource::CLEAR) + switch (action) { - // Already handled above by not reading - } - else if (action == topoSetSource::INVERT) - { - currentSet.invert(currentSet.maxSize(mesh)); - } - else if (action == topoSetSource::LIST) - { - currentSet.writeDebug(Pout, mesh, 100); - Pout<< endl; - } - else if (action == topoSetSource::SUBSET) - { - if (is >> sourceType) + case topoSetSource::CLEAR: { - autoPtr<topoSetSource> setSource - ( - topoSetSource::New + // Already handled above by not reading + break; + } + case topoSetSource::INVERT: + { + currentSet.invert(currentSet.maxSize(mesh)); + break; + } + case topoSetSource::LIST: + { + currentSet.writeDebug(Pout, mesh, 100); + Pout<< endl; + break; + } + case topoSetSource::SUBSET: + { + if (is >> sourceType) + { + autoPtr<topoSetSource> setSource + ( + topoSetSource::New + ( + sourceType, + mesh, + is + ) + ); + + // Backup current set. + topoSet oldSet ( - sourceType, mesh, - is - ) - ); + currentSet.name() + "_old2", + currentSet + ); - // Backup current set. - topoSet oldSet - ( - mesh, - currentSet.name() + "_old2", - currentSet - ); + currentSet.clear(); + currentSet.resize(oldSet.size()); + setSource().applyToSet(topoSetSource::NEW, currentSet); - currentSet.clear(); - currentSet.resize(oldSet.size()); - setSource().applyToSet(topoSetSource::NEW, currentSet); - - // Combine new value of currentSet with old one. - currentSet.subset(oldSet); + // Combine new value of currentSet with old one. + currentSet.subset(oldSet); + } + break; } - } - else - { - if (is >> sourceType) + default: { - autoPtr<topoSetSource> setSource - ( - topoSetSource::New + if (is >> sourceType) + { + autoPtr<topoSetSource> setSource ( - sourceType, - mesh, - is - ) - ); - - setSource().applyToSet(action, currentSet); + topoSetSource::New + ( + sourceType, + mesh, + is + ) + ); + + setSource().applyToSet(action, currentSet); + } } } @@ -532,7 +539,7 @@ bool doCommand } } - return error; + return !error; } @@ -612,31 +619,36 @@ commandStatus parseType switch(stat) { case polyMesh::UNCHANGED: + { Pout<< " mesh not changed." << endl; - break; - + break; + } case polyMesh::POINTS_MOVED: + { Pout<< " points moved; topology unchanged." << endl; - break; - + break; + } case polyMesh::TOPO_CHANGE: + { Pout<< " topology changed; patches unchanged." << nl << " "; printMesh(runTime, mesh); - - break; - + break; + } case polyMesh::TOPO_PATCH_CHANGE: + { Pout<< " topology changed and patches changed." << nl << " "; printMesh(runTime, mesh); - break; - + break; + } default: + { FatalErrorIn("parseType") << "Illegal mesh update state " << stat << abort(FatalError); - break; + break; + } } return INVALID; diff --git a/applications/utilities/miscellaneous/patchSummary/Make/files b/applications/utilities/miscellaneous/patchSummary/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..62485dc33de9161e3fb50271da07a5a003cacf22 --- /dev/null +++ b/applications/utilities/miscellaneous/patchSummary/Make/files @@ -0,0 +1,3 @@ +patchSummary.C + +EXE = $(FOAM_USER_APPBIN)/patchSummary diff --git a/applications/utilities/miscellaneous/patchSummary/Make/options b/applications/utilities/miscellaneous/patchSummary/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..fa15f124528ebfcaf279a88a73a0d7954f2e9dc1 --- /dev/null +++ b/applications/utilities/miscellaneous/patchSummary/Make/options @@ -0,0 +1,5 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lfiniteVolume diff --git a/applications/utilities/miscellaneous/patchSummary/patchSummary.C b/applications/utilities/miscellaneous/patchSummary/patchSummary.C new file mode 100644 index 0000000000000000000000000000000000000000..a2f8c986bace4eea8a205868179f73d686d2911a --- /dev/null +++ b/applications/utilities/miscellaneous/patchSummary/patchSummary.C @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + patchSummary + +Description + Writes fields and boundary condition info for each patch at each requested + time instance. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "volFields.H" +#include "IOobjectList.H" +#include "patchSummaryTemplates.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + +# include "addTimeOptions.H" +# include "setRootCase.H" +# include "createTime.H" + + // Get times list + instantList Times = runTime.times(); + + // set startTime and endTime depending on -time and -latestTime options +# include "checkTimeOptions.H" + + runTime.setTime(Times[startTime], startTime); + +# include "createMesh.H" + + for (label i=startTime; i<endTime; i++) + { + runTime.setTime(Times[i], i); + + Info<< "Time = " << runTime.timeName() << nl << endl; + + const IOobjectList fieldObjs(mesh, runTime.timeName()); + + const wordList objNames = fieldObjs.names(); + + PtrList<volScalarField> vsf(objNames.size()); + PtrList<volVectorField> vvf(objNames.size()); + PtrList<volSphericalTensorField> vsptf(objNames.size()); + PtrList<volSymmTensorField> vsytf(objNames.size()); + PtrList<volTensorField> vtf(objNames.size()); + + Info<< "Valid fields:" << endl; + + forAll(objNames, objI) + { + IOobject obj + ( + objNames[objI], + runTime.timeName(), + mesh, + IOobject::MUST_READ + ); + + if (obj.headerOk()) + { + addToFieldList<scalar>(vsf, obj, objI, mesh); + addToFieldList<vector>(vvf, obj, objI, mesh); + addToFieldList<sphericalTensor>(vsptf, obj, objI, mesh); + addToFieldList<symmTensor>(vsytf, obj, objI, mesh); + addToFieldList<tensor>(vtf, obj, objI, mesh); + } + } + + Info<< endl; + + const polyBoundaryMesh& bm = mesh.boundaryMesh(); + forAll(bm, patchI) + { + Info<< "Patch: " << bm[patchI].name() << nl; + outputFieldList<scalar>(vsf, patchI); + outputFieldList<vector>(vvf, patchI); + outputFieldList<sphericalTensor>(vsptf, patchI); + outputFieldList<symmTensor>(vsytf, patchI); + outputFieldList<tensor>(vtf, patchI); + Info << endl; + } + } + + Info << "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialI.H b/applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.C old mode 100755 new mode 100644 similarity index 53% rename from src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialI.H rename to applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.C index 3a3efa223aa8a269bf58ffaa18e9e6c194fc9f46..57123fd117a856eb0ad5eab044ba9661c0b9cc91 --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialI.H +++ b/applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,80 +22,53 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -\*---------------------------------------------------------------------------*/ - -inline Foam::scalar Foam::pairPotential::m() const -{ - return m_; -} - - -inline Foam::scalar Foam::pairPotential::gamma() const -{ - return gamma_; -} - - -inline Foam::scalar Foam::pairPotential::rm() const -{ - return rm_; -} - - -inline Foam::scalar Foam::pairPotential::epsilon() const -{ - return epsilon_; -} +\*---------------------------------------------------------------------------*/ -inline Foam::scalar Foam::pairPotential::rCut() const -{ - return rCut_; -} - - -inline Foam::scalar Foam::pairPotential::rCutSqr() const -{ - return rCutSqr_; -} - - -inline Foam::scalar Foam::pairPotential::rMin() const -{ - return rMin_; -} - - -inline Foam::scalar Foam::pairPotential::dr() const -{ - return dr_; -} - +#include "patchSummaryTemplates.H" +#include "IOmanip.H" -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -inline bool Foam::operator== +template<class Type> +void Foam::addToFieldList ( - const pairPotential& a, - const pairPotential& b + PtrList<GeometricField<Type, fvPatchField, volMesh> >& fieldList, + const IOobject& obj, + const label fieldI, + const fvMesh& mesh ) { - return - (a.m() == b.m()) - && (a.gamma() == b.gamma()) - && (a.rm() == b.rm()) - && (a.epsilon() == b.epsilon()) - && (a.rCut() == b.rCut()); + typedef GeometricField<Type, fvPatchField, volMesh> fieldType; + + if (obj.headerClassName() == fieldType::typeName) + { + fieldList.set + ( + fieldI, + new fieldType(obj, mesh) + ); + Info<< " " << fieldType::typeName << tab << obj.name() << endl; + } } -inline bool Foam::operator!= +template<class Type> +void Foam::outputFieldList ( - const pairPotential& a, - const pairPotential& b + PtrList<GeometricField<Type, fvPatchField, volMesh> >& fieldList, + const label patchI ) { - return !(a == b); + forAll(fieldList, fieldI) + { + if (fieldList.set(fieldI)) + { + Info<< " " << pTraits<Type>::typeName << tab << tab + << fieldList[fieldI].name() << tab << tab + << fieldList[fieldI].boundaryField()[patchI].type() << nl; + } + } } diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialI.H b/applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.H old mode 100755 new mode 100644 similarity index 67% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialI.H rename to applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.H index d9ca0dae1a60582760f914e8ae621621a2b19d16..e29db21fc3fc9dc074b4472da2348ee44c187541 --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialI.H +++ b/applications/utilities/miscellaneous/patchSummary/patchSummaryTemplates.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,33 +24,42 @@ License \*---------------------------------------------------------------------------*/ -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +#ifndef patchSummaryTemplates_H +#define patchSummaryTemplates_H -inline const word& tetherPotential::tetherPotentialName() const -{ - return tetherPotentialName_; -} +#include "fvCFD.H" +#include "volFields.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -inline const word& tetherPotential::tetherPotentialType() const +namespace Foam { - return tetherPotentialType_; -} + template<class Type> + void addToFieldList + ( + PtrList<GeometricField<Type, fvPatchField, volMesh> >& fieldList, + const IOobject& obj, + const label fieldI, + const fvMesh& mesh + ); + + template<class Type> + void outputFieldList + ( + PtrList<GeometricField<Type, fvPatchField, volMesh> >& fieldList, + const label patchI + ); +} // End namespace Foam -inline scalar tetherPotential::springConstant() const -{ - return springConstant_; -} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository +# include "patchSummaryTemplates.C" +#endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace Foam +#endif // ************************************************************************* // diff --git a/applications/utilities/preProcessing/molConfig/Make/options b/applications/utilities/preProcessing/molConfig/Make/options index 196a4d66ddba259f0d7547f781a9c925db63b0eb..aab9a2ca4f7e9119ebfa389b5b14b74911317f1a 100755 --- a/applications/utilities/preProcessing/molConfig/Make/options +++ b/applications/utilities/preProcessing/molConfig/Make/options @@ -3,7 +3,8 @@ EXE_INC = \ -I$(velocityDistributions) \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude @@ -12,4 +13,5 @@ EXE_LIBS = \ -ldynamicMesh \ -lfiniteVolume \ -llagrangian \ - -lmolecule + -lmolecule \ + -lpotential diff --git a/bin/foamLog b/bin/foamLog index 28e97a46306a5692506731190fbaa8c167d4fd25..0848d50cc1b7c6f2eeb56cef3c4590da7f0456f0 100755 --- a/bin/foamLog +++ b/bin/foamLog @@ -47,7 +47,7 @@ printUsage() { cat <<LABUSAGE $PROGNAME - extracts xy files from Foam logs. -Usage: $PROGNAME [-n][-s] <root> <case> <log> +Usage: $PROGNAME [-n][-s] <log> extracts xy files from log $PROGNAME -l <log> lists but does not extract @@ -82,11 +82,11 @@ files with the extracted data only. The query database is a simple text format with three entries per line, separated with '/'. Column 1 is the name of the variable (cannot contain -spaces), column 2 is the regular expression to select the line and -column 3 is the string to select the column inside the line. The value -taken will be the first (non-space)word after this column. -The database will either be \$HOME/.${PROGNAME}.db or if not found -$PROGDIR/${PROGNAME}.db. +spaces), column 2 is the extended regular expression (egrep) to select +the line and column 3 is the string (fgrep) to select the column inside the +line. The value taken will be the first (non-space)word after this +column. The database will either be \$HOME/.${PROGNAME}.db or if not +found $PROGDIR/${PROGNAME}.db. Option -s suppresses the default information and only prints the extracted variables. @@ -105,7 +105,7 @@ myEcho() { # getSolvedVars logFile # Prints names of all 'solved for' variables in the log file. getSolvedVars() { - grep ' Solving for ' $1 | fgrep ',' | sed -e 's/.* Solving for \([^,]*\)[,:].*/\1/' | sort -u + fgrep ' Solving for ' $1 | fgrep ',' | sed -e 's/.* Solving for \([^,]*\)[,:].*/\1/' | sort -u } @@ -163,7 +163,7 @@ getAllQueries() { for var in $dbQueries do getQueries $1 "$var" - line=`grep "$LINEQ" $2` + line=`egrep "$LINEQ" $2` if [ "$line" ]; then column=`echo "$line" | fgrep "$NUMQ"` if [ "$column" ]; then @@ -228,14 +228,13 @@ if [ "$LISTONLY" ]; then exit 0 fi -if [ $# -ne 3 ]; then +if [ $# -ne 1 ]; then printUsage exit 1 fi -ROOT=$1 -CASE=$2 -LOG=$3 +CASEDIR=. +LOG=$1 if [ ! -r $LOG ]; then echo "$PROGNAME: Cannot read log $LOG" exit 1 @@ -244,13 +243,13 @@ fi QUERYNAMES=`getAllQueries $DBFILE $LOG` -if [ ! "$ROOT" -o ! "$CASE" ]; then +if [ ! "$CASEDIR" ]; then printUsage exit 1 fi -if [ ! -d "$ROOT/$CASE" ]; then - echo "$PROGNAME: Cannot read $ROOT/$CASE" +if [ ! -d "$CASEDIR" ]; then + echo "$PROGNAME: Cannot read $CASEDIR" exit 1 fi @@ -262,16 +261,14 @@ fi #-- Make logs dir in case directory and put awk file there. -mkdir -p $ROOT/$CASE/logs -AWKFILE=$ROOT/$CASE/logs/$PROGNAME.awk +mkdir -p $CASEDIR/logs +AWKFILE=$CASEDIR/logs/$PROGNAME.awk myEcho "Using:" -myEcho " root : $ROOT" -myEcho " case : $CASE" myEcho " log : $LOG" myEcho " database : $DBFILE" myEcho " awk file : $AWKFILE" -myEcho " files to : $ROOT/$CASE/logs" +myEcho " files to : $CASEDIR/logs" myEcho "" @@ -364,19 +361,19 @@ cat <<LABSOLVE >> $AWKFILE varName=varNameVal[1] file=varName "_" subIter[varName]++ - file="$ROOT/$CASE/logs/" file + file="$CASEDIR/logs/" file extract(\$0, "Initial residual = ", val) print $TIMENAME "\t" val[1] > file varName=varNameVal[1] "FinalRes" file=varName "_" subIter[varName]++ - file="$ROOT/$CASE/logs/" file + file="$CASEDIR/logs/" file extract(\$0, "Final residual = ", val) print $TIMENAME "\t" val[1] > file varName=varNameVal[1] "Iters" file=varName "_" subIter[varName]++ - file="$ROOT/$CASE/logs/" file + file="$CASEDIR/logs/" file extract(\$0, "No Iterations ", val) print $TIMENAME "\t" val[1] > file } @@ -393,7 +390,7 @@ do echo "#-- Extraction of $queryName" >> $AWKFILE echo "/$LINEQ/ {" >> $AWKFILE echo " extract(\$0, \"$NUMQ\", val)" >> $AWKFILE - echo " file=\"$ROOT/$CASE/logs/${queryName}_\" ${counter}" >> $AWKFILE + echo " file=\"$CASEDIR/logs/${queryName}_\" ${counter}" >> $AWKFILE echo " print $TIMENAME \"\\t\" val[1] > file" >> $AWKFILE echo " ${counter}++" >> $AWKFILE echo "}" >> $AWKFILE diff --git a/bin/foamLog.db b/bin/foamLog.db index 933dae1a8d80e563caeb656a423104c3bf0fa950..49d551f32c42fdac5f9e3b0944a983d2cee8e96c 100644 --- a/bin/foamLog.db +++ b/bin/foamLog.db @@ -48,6 +48,6 @@ epsMax/bounding epsilon,/max: epsAvg/bounding epsilon,/average: #- gamma bounding -gammaMin/Min\(gamma\) =/Min(gamma) = -gammaMax/Max\(gamma\) =/Max(gamma) = +gammaMin/Min\(gamma\) =/Min(gamma) = +gammaMax/Max\(gamma\) =/Max(gamma) = diff --git a/bin/upgradeTurbulenceProperties b/bin/upgradeTurbulenceProperties new file mode 100755 index 0000000000000000000000000000000000000000..35de08f0937380d713bc10626ed25b11c3e15791 --- /dev/null +++ b/bin/upgradeTurbulenceProperties @@ -0,0 +1,85 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM 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. +# +# OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# upgradeTurbulenceProperties +# +# Description +# Upgrade the turbulenceProperties dictionary to the new format employed +# in OpenFOAM version 1.5 +# - RAS turbulence models now defined by the RASProperties dictionary, +# and RASModel keyword, and +# - LES turbulence models now defined by the LESProperties dictionary, +# and LESModel keyword. +# +#------------------------------------------------------------------------------ + +printUsage() +{ + echo "Usage: `basename $0` <turbulenceProperties>" + echo " Where <turbulenceProperties> is the full path to the" + echo " turbulenceProperties dictionary" +} + +convertDict() +{ + echo " Identified $1 turbulence model" + + sed -e "s/turbulenceProperties/$1Properties/" \ + -e "s/$2/$1Model/" \ + -e "s/[a-zA-Z0-9]* [ ]*\[[0-9 ]*\]//" \ + $3 > "$outputPath/$1Properties" + + echo " written $1Properties to $outputPath/" +} + +outputPath=`dirname $1` + +if [ $# -ne 1 ]; then + printUsage + exit 1 +elif [ ! -e $1 ]; then + echo " Error: file $1 does not exist" + echo "" + printUsage + exit 1 +fi + +# Identify type of turbulence model +RAS=`grep turbulenceModel $1` +LES=`grep LESmodel $1` + +if [ -n "$RAS" ]; then + convertDict "RAS" "turbulenceModel" $1 +elif [ -n "$LES" ]; then + convertDict "LES" "LESmodel" $1 +else + echo "Unable to determine turbulence model type - nothing changed" + exit 1 +fi + +echo "done." + +exit 0 diff --git a/doc/Doxygen/tools/README b/doc/Doxygen/tools/README index 0a3a9ceecbdebda2b4685489d2c8a458f56af78a..86c4e8ae734d2080c5ac23d0fed4c7130236bbcd 100644 --- a/doc/Doxygen/tools/README +++ b/doc/Doxygen/tools/README @@ -11,4 +11,5 @@ Misc Tools 1. find-templateInComments 2. find-its 3. find-junkFiles +4. find-longlines diff --git a/doc/Doxygen/tools/find-longlines b/doc/Doxygen/tools/find-longlines new file mode 100755 index 0000000000000000000000000000000000000000..c5294715d8c3a6e878fa1098f99e9bd68e1c73f6 --- /dev/null +++ b/doc/Doxygen/tools/find-longlines @@ -0,0 +1,46 @@ +#!/usr/bin/perl -w +use strict; +use File::Find (); + +# ----------------------------------------------------------------------------- +# +# Script +# find-longlines +# +# Description +# Search for *.[CH] files that exceed the 80-column width +# +# - print filename lineNumber and offending line (with truncation point) +# +# ----------------------------------------------------------------------------- + +my $maxlen = 80; +my $re_filespec = qr{^.+\.[CH]$}; +my $count; + +sub wanted { + unless ( lstat($_) and -f _ and -r _ and not -l _ and /$re_filespec/ ) { + return; + } + + local @ARGV = $_; + while (<>) { + chomp; + s{\s+$}{}; # trim + + if ( $maxlen < length ) { + $count++; + substr( $_, $maxlen, 0 ) = "||->>"; # show truncation point + print "$ARGV $. $_\n"; + } + } + close ARGV; +} + +## Traverse desired filesystems +for my $dir (@ARGV) { + no warnings 'File::Find'; + warn "(**) checking '$dir' ...\n"; + File::Find::find( { wanted => \&wanted }, $dir ); +} + diff --git a/src/OpenFOAM/db/IOstreams/gzstream/gzstream.C.1.7 b/src/OpenFOAM/db/IOstreams/gzstream/gzstream.C.1.7 deleted file mode 100644 index 361609a24ab28cde75715982ae7202369b1b20bf..0000000000000000000000000000000000000000 --- a/src/OpenFOAM/db/IOstreams/gzstream/gzstream.C.1.7 +++ /dev/null @@ -1,165 +0,0 @@ -// ============================================================================ -// gzstream, C++ iostream classes wrapping the zlib compression library. -// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// ============================================================================ -// -// File : gzstream.C -// Revision : $Revision: 1.7 $ -// Revision_date : $Date: 2003/01/08 14:41:27 $ -// Author(s) : Deepak Bandyopadhyay, Lutz Kettner -// -// Standard streambuf implementation following Nicolai Josuttis, "The -// Standard C++ Library". -// ============================================================================ - -#include <gzstream.h> -#include <iostream> -#include <string.h> // for memcpy - -#ifdef GZSTREAM_NAMESPACE -namespace GZSTREAM_NAMESPACE { -#endif - -// ---------------------------------------------------------------------------- -// Internal classes to implement gzstream. See header file for user classes. -// ---------------------------------------------------------------------------- - -// -------------------------------------- -// class gzstreambuf: -// -------------------------------------- - -gzstreambuf* gzstreambuf::open( const char* name, int open_mode) { - if ( is_open()) - return reinterpret_cast<gzstreambuf*>(0); - mode = open_mode; - // no append nor read/write mode - if ((mode & std::ios::ate) || (mode & std::ios::app) - || ((mode & std::ios::in) && (mode & std::ios::out))) - return reinterpret_cast<gzstreambuf*>(0); - char fmode[10]; - char* fmodeptr = fmode; - if ( mode & std::ios::in) - *fmodeptr++ = 'r'; - else if ( mode & std::ios::out) - *fmodeptr++ = 'w'; - *fmodeptr++ = 'b'; - *fmodeptr = '\0'; - file = gzopen( name, fmode); - if (file == 0) - return reinterpret_cast<gzstreambuf*>(0); - opened = 1; - return this; -} - -gzstreambuf * gzstreambuf::close() { - if ( is_open()) { - sync(); - opened = 0; - if ( gzclose( file) == Z_OK) - return this; - } - return reinterpret_cast<gzstreambuf*>(0); -} - -int gzstreambuf::underflow() { // used for input buffer only - if ( gptr() && ( gptr() < egptr())) - return * reinterpret_cast<unsigned char *>( gptr()); - - if ( ! (mode & std::ios::in) || ! opened) - return EOF; - // Josuttis' implementation of inbuf - int n_putback = gptr() - eback(); - if ( n_putback > 4) - n_putback = 4; - memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback); - - int num = gzread( file, buffer+4, bufferSize-4); - if (num <= 0) // ERROR or EOF - return EOF; - - // reset buffer pointers - setg( buffer + (4 - n_putback), // beginning of putback area - buffer + 4, // read position - buffer + 4 + num); // end of buffer - - // return next character - return * reinterpret_cast<unsigned char *>( gptr()); -} - -int gzstreambuf::flush_buffer() { - // Separate the writing of the buffer from overflow() and - // sync() operation. - int w = pptr() - pbase(); - if ( gzwrite( file, pbase(), w) != w) - return EOF; - pbump( -w); - return w; -} - -int gzstreambuf::overflow( int c) { // used for output buffer only - if ( ! ( mode & std::ios::out) || ! opened) - return EOF; - if (c != EOF) { - *pptr() = c; - pbump(1); - } - if ( flush_buffer() == EOF) - return EOF; - return c; -} - -int gzstreambuf::sync() { - // Changed to use flush_buffer() instead of overflow( EOF) - // which caused improper behavior with std::endl and flush(), - // bug reported by Vincent Ricard. - if ( pptr() && pptr() > pbase()) { - if ( flush_buffer() == EOF) - return -1; - } - return 0; -} - -// -------------------------------------- -// class gzstreambase: -// -------------------------------------- - -gzstreambase::gzstreambase( const char* name, int mode) { - init( &buf); - open( name, mode); -} - -gzstreambase::~gzstreambase() { - buf.close(); -} - -void gzstreambase::open( const char* name, int open_mode) { - if ( ! buf.open( name, open_mode)) - clear( rdstate() | std::ios::badbit); -} - -void gzstreambase::close() { - if ( buf.is_open()) - if ( ! buf.close()) - clear( rdstate() | std::ios::badbit); -} - -#ifdef GZSTREAM_NAMESPACE -} // namespace GZSTREAM_NAMESPACE -#endif - -// ============================================================================ -// EOF // diff --git a/src/OpenFOAM/db/IOstreams/gzstream/gzstream.h.1.5 b/src/OpenFOAM/db/IOstreams/gzstream/gzstream.h.1.5 deleted file mode 100644 index 861653f4810f244e60ec1e049ec60bc903a573ce..0000000000000000000000000000000000000000 --- a/src/OpenFOAM/db/IOstreams/gzstream/gzstream.h.1.5 +++ /dev/null @@ -1,121 +0,0 @@ -// ============================================================================ -// gzstream, C++ iostream classes wrapping the zlib compression library. -// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// ============================================================================ -// -// File : gzstream.h -// Revision : $Revision: 1.5 $ -// Revision_date : $Date: 2002/04/26 23:30:15 $ -// Author(s) : Deepak Bandyopadhyay, Lutz Kettner -// -// Standard streambuf implementation following Nicolai Josuttis, "The -// Standard C++ Library". -// ============================================================================ - -#ifndef GZSTREAM_H -#define GZSTREAM_H 1 - -// standard C++ with new header file names and std:: namespace -#include <iostream> -#include <fstream> -#include <zlib.h> - -#ifdef GZSTREAM_NAMESPACE -namespace GZSTREAM_NAMESPACE { -#endif - -// ---------------------------------------------------------------------------- -// Internal classes to implement gzstream. See below for user classes. -// ---------------------------------------------------------------------------- - -class gzstreambuf : public std::streambuf { -private: - static const int bufferSize = 47+256; // size of data buff - // totals 512 bytes under g++ for igzstream at the end. - - gzFile file; // file handle for compressed file - char buffer[bufferSize]; // data buffer - char opened; // open/close state of stream - int mode; // I/O mode - - int flush_buffer(); -public: - gzstreambuf() : opened(0) { - setp( buffer, buffer + (bufferSize-1)); - setg( buffer + 4, // beginning of putback area - buffer + 4, // read position - buffer + 4); // end position - // ASSERT: both input & output capabilities will not be used together - } - int is_open() { return opened; } - gzstreambuf* open( const char* name, int open_mode); - gzstreambuf* close(); - ~gzstreambuf() { close(); } - - virtual int overflow( int c = EOF); - virtual int underflow(); - virtual int sync(); -}; - -class gzstreambase : virtual public std::ios { -protected: - gzstreambuf buf; -public: - gzstreambase() { init(&buf); } - gzstreambase( const char* name, int open_mode); - ~gzstreambase(); - void open( const char* name, int open_mode); - void close(); - gzstreambuf* rdbuf() { return &buf; } -}; - -// ---------------------------------------------------------------------------- -// User classes. Use igzstream and ogzstream analogously to ifstream and -// ofstream respectively. They read and write files based on the gz* -// function interface of the zlib. Files are compatible with gzip compression. -// ---------------------------------------------------------------------------- - -class igzstream : public gzstreambase, public std::istream { -public: - igzstream() : std::istream( &buf) {} - igzstream( const char* name, int open_mode = std::ios::in) - : gzstreambase( name, open_mode), std::istream( &buf) {} - gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } - void open( const char* name, int open_mode = std::ios::in) { - gzstreambase::open( name, open_mode); - } -}; - -class ogzstream : public gzstreambase, public std::ostream { -public: - ogzstream() : std::ostream( &buf) {} - ogzstream( const char* name, int mode = std::ios::out) - : gzstreambase( name, mode), std::ostream( &buf) {} - gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } - void open( const char* name, int open_mode = std::ios::out) { - gzstreambase::open( name, open_mode); - } -}; - -#ifdef GZSTREAM_NAMESPACE -} // namespace GZSTREAM_NAMESPACE -#endif - -#endif // GZSTREAM_H -// ============================================================================ -// EOF // - diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H index 6576e3699c4b6829866372e841cfabbc54623ce0..790ef687b9acdad60f8d5c2414b966f28a082298 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H @@ -803,7 +803,7 @@ public: ( const dictionary& shrinkDict, const dictionary& motionDict, - const scalar nAllowableErrors, + const label nAllowableErrors, motionSmoother& ); diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C index 1cfbee79d4f8c92d52862f13fc5974eeec17715c..1de6e845fb7ac8450e6ea297cf38c8dba199333a 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C @@ -2346,7 +2346,7 @@ void Foam::autoHexMeshDriver::addLayers ( const dictionary& shrinkDict, const dictionary& motionDict, - const scalar nAllowableErrors, + const label nAllowableErrors, motionSmoother& meshMover ) { diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index c899636dcebacea6a46daa4b7111e53d9fe35a89..d0e560c73b995f7119c7741ef86f4c906ff0c1a9 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -103,8 +103,6 @@ $(derivedFvPatchFields)/timeVaryingUniformTotalPressure/timeVaryingUniformTotalP $(derivedFvPatchFields)/totalTemperature/totalTemperatureFvPatchScalarField.C $(derivedFvPatchFields)/turbulentInlet/turbulentInletFvPatchFields.C $(derivedFvPatchFields)/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C -$(derivedFvPatchFields)/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C -$(derivedFvPatchFields)/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C $(derivedFvPatchFields)/uniformFixedValue/uniformFixedValueFvPatchFields.C $(derivedFvPatchFields)/waveTransmissive/waveTransmissiveFvPatchFields.C diff --git a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C index 1a1d9401937107f376ca1c4ff206178ba5246667..c2fca0bbd9c9de0672eeea0e64c27d49f9a2765f 100644 --- a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C +++ b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C @@ -32,15 +32,28 @@ License // * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * // // adjust negative resistance values to be multiplier of max value -void Foam::porousZone::adjustNegativeResistance(vector& resist) +void Foam::porousZone::adjustNegativeResistance(dimensionedVector& resist) { - scalar maxCmpt = max(0, cmptMax(resist)); + scalar maxCmpt = max(0, cmptMax(resist.value())); - for (label cmpt=0; cmpt < vector::nComponents; ++cmpt) + if (maxCmpt < 0) { - if (resist[cmpt] < 0) + FatalErrorIn + ( + "Foam::porousZone::porousZone::adjustNegativeResistance" + "(dimensionedVector&)" + ) << "negative resistances! " << resist + << exit(FatalError); + } + else + { + vector& val = resist.value(); + for (label cmpt=0; cmpt < vector::nComponents; ++cmpt) { - resist[cmpt] *= -maxCmpt; + if (val[cmpt] < 0) + { + val[cmpt] *= -maxCmpt; + } } } } @@ -71,24 +84,20 @@ Foam::porousZone::porousZone FatalErrorIn ( "Foam::porousZone::porousZone" - "(const fvMesh&, const Istream&)" + "(const fvMesh&, const word&, const dictionary&)" ) << "cannot find porous cellZone " << name_ << exit(FatalError); } - // local-to-global transformation tensor - const tensor& E = coordSys_.R(); - // porosity - if (dict_.found("porosity")) + if (dict_.readIfPresent("porosity", porosity_)) { - dict_.lookup("porosity") >> porosity_; - if (porosity_ <= 0.0 || porosity_ > 1.0) { FatalIOErrorIn ( - "Foam::porousZone::porousZone(const fvMesh&, const Istream&)", + "Foam::porousZone::porousZone" + "(const fvMesh&, const word&, const dictionary&)", dict_ ) << "out-of-range porosity value " << porosity_ @@ -97,73 +106,64 @@ Foam::porousZone::porousZone } // powerLaw coefficients - if (dict_.found("powerLaw")) + if (const dictionary* dictPtr = dict_.subDictPtr("powerLaw")) { - const dictionary& subDict = dict_.subDict("powerLaw"); - if (subDict.found("C0")) - { - subDict.lookup("C0") >> C0_; - } - if (subDict.found("C1")) - { - subDict.lookup("C1") >> C1_; - } + dictPtr->readIfPresent("C0", C0_); + dictPtr->readIfPresent("C1", C1_); } // Darcy-Forchheimer coefficients - if (dict_.found("Darcy")) + if (const dictionary* dictPtr = dict_.subDictPtr("Darcy")) { - const dictionary& subDict = dict_.subDict("Darcy"); - - dimensionedVector d("d", D_.dimensions(), vector::zero); - dimensionedVector f("f", F_.dimensions(), vector::zero); + // local-to-global transformation tensor + const tensor& E = coordSys_.R(); - if (subDict.found("d")) + dimensionedVector d(vector::zero); + if (dictPtr->readIfPresent("d", d)) { - // d = dimensionedVector("d", subDict.lookup("d")); - subDict.lookup("d") >> d; - adjustNegativeResistance(d.value()); - - } - if (subDict.found("f")) - { - // f = dimensionedVector("f", subDict.lookup("f")); - subDict.lookup("f") >> f; - adjustNegativeResistance(f.value()); + if (D_.dimensions() != d.dimensions()) + { + FatalIOErrorIn + ( + "Foam::porousZone::porousZone" + "(const fvMesh&, const word&, const dictionary&)", + dict_ + ) << "incorrect dimensions for d: " << d.dimensions() + << " should be " << D_.dimensions() + << exit(FatalIOError); + } + + adjustNegativeResistance(d); + + D_.value().xx() = d.value().x(); + D_.value().yy() = d.value().y(); + D_.value().zz() = d.value().z(); + D_.value() = (E & D_ & E.T()).value(); } - if (D_.dimensions() != d.dimensions()) + dimensionedVector f(vector::zero); + if (dictPtr->readIfPresent("f", f)) { - FatalIOErrorIn - ( - "Foam::porousZone::porousZone(const fvMesh&, const Istream&)", - dict_ - ) << "incorrect dimensions for d: " << d.dimensions() - << " should be " << D_.dimensions() - << exit(FatalIOError); + if (F_.dimensions() != f.dimensions()) + { + FatalIOErrorIn + ( + "Foam::porousZone::porousZone" + "(const fvMesh&, const word&, const dictionary&)", + dict_ + ) << "incorrect dimensions for f: " << f.dimensions() + << " should be " << F_.dimensions() + << exit(FatalIOError); + } + + adjustNegativeResistance(f); + + // leading 0.5 is from 1/2 * rho + F_.value().xx() = 0.5*f.value().x(); + F_.value().yy() = 0.5*f.value().y(); + F_.value().zz() = 0.5*f.value().z(); + F_.value() = (E & F_ & E.T()).value(); } - - if (F_.dimensions() != f.dimensions()) - { - FatalIOErrorIn - ( - "Foam::porousZone::porousZone(const fvMesh&, const Istream&)", - dict_ - ) << "incorrect dimensions for f: " << f.dimensions() - << " should be " << F_.dimensions() - << exit(FatalIOError); - } - - D_.value().xx() = d.value().x(); - D_.value().yy() = d.value().y(); - D_.value().zz() = d.value().z(); - D_.value() = (E & D_ & E.T()).value(); - - // leading 0.5 is from 1/2 * rho - F_.value().xx() = 0.5*f.value().x(); - F_.value().yy() = 0.5*f.value().y(); - F_.value().zz() = 0.5*f.value().z(); - F_.value() = (E & F_ & E.T()).value(); } // provide some feedback for the user @@ -179,7 +179,8 @@ Foam::porousZone::porousZone { FatalIOErrorIn ( - "Foam::porousZone::porousZone(const fvMesh&, const Istream&)", + "Foam::porousZone::porousZone" + "(const fvMesh&, const word&, const dictionary&)", dict_ ) << "neither powerLaw (C0/C1) " "nor Darcy-Forchheimer law (d/f) specified" diff --git a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H index eb58f7bb4717a7ab568dc7207d93372c9942de6c..671c39fa459482565d68056c6869d164cf4c7855 100644 --- a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H +++ b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.H @@ -128,7 +128,7 @@ class porousZone // Private Member Functions //- adjust negative resistance values to be multiplier of max value - static void adjustNegativeResistance(vector& resist); + static void adjustNegativeResistance(dimensionedVector& resist); //- Power-law resistance template<class RhoFieldType> diff --git a/src/lagrangian/Allwmake b/src/lagrangian/Allwmake index 567f7a10defa3445265239cb9018bddfeed28790..0a5e86bdefa2e0948fb0d6ad077e436ae7cc518f 100755 --- a/src/lagrangian/Allwmake +++ b/src/lagrangian/Allwmake @@ -5,4 +5,6 @@ wmake libso basic wmake libso solidParticle wmake libso intermediate wmake libso dieselSpray -wmake libso molecule +(cd molecularDynamics && wmake libso potential) +(cd molecularDynamics && wmake libso molecule) + diff --git a/src/lagrangian/molecule/Make/files b/src/lagrangian/molecularDynamics/molecule/Make/files similarity index 83% rename from src/lagrangian/molecule/Make/files rename to src/lagrangian/molecularDynamics/molecule/Make/files index d8063d097437f7ca2dfa6b8e20a74cafa47723c9..0bb1acc49b6896c3d6e2dab884b419e2c6efef4f 100755 --- a/src/lagrangian/molecule/Make/files +++ b/src/lagrangian/molecularDynamics/molecule/Make/files @@ -11,11 +11,6 @@ referredMolecule = referredMolecule referredCellList = referredCellList referredCell = referredCell referralLists = referralLists - -potentials = potentials -pairPotential = $(potentials)/pairPotential -tetherPotential = $(potentials)/tetherPotential - $(distribution)/distribution.C $(reducedUnits)/reducedUnits.C @@ -42,11 +37,6 @@ $(moleculeCloud)/moleculeCloudIntegrateEquationsOfMotion.C $(moleculeCloud)/moleculeCloudRemoveHighEnergyOverlaps.C $(moleculeCloud)/moleculeCloudApplyConstraintsAndThermostats.C -$(pairPotential)/basic/pairPotential.C -$(pairPotential)/basic/pairPotentialList.C -$(tetherPotential)/tetherPotential.C -$(tetherPotential)/tetherPotentialList.C - $(referralLists)/receivingReferralList.C $(referralLists)/sendingReferralList.C $(referredCellList)/referredCellList.C diff --git a/src/lagrangian/molecule/Make/options b/src/lagrangian/molecularDynamics/molecule/Make/options similarity index 57% rename from src/lagrangian/molecule/Make/options rename to src/lagrangian/molecularDynamics/molecule/Make/options index a0fb316eecd4a5e63b9f261787d2ecf29ff957b9..cc91fd4bbef065a768be4f1abd66bf51346d8ef4 100755 --- a/src/lagrangian/molecule/Make/options +++ b/src/lagrangian/molecularDynamics/molecule/Make/options @@ -1,8 +1,10 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude EXE_LIBS = \ -lfiniteVolume \ - -llagrangian + -llagrangian \ + -lpotential diff --git a/src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.C b/src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.C rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.C diff --git a/src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.H b/src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.H rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.H diff --git a/src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorI.H b/src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorI.H rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorI.H diff --git a/src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorIO.C b/src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorIO.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorIO.C rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorIO.C diff --git a/src/lagrangian/molecule/correlationFunction/correlationFunction.C b/src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunction.C similarity index 100% rename from src/lagrangian/molecule/correlationFunction/correlationFunction.C rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunction.C diff --git a/src/lagrangian/molecule/correlationFunction/correlationFunction.H b/src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunction.H similarity index 100% rename from src/lagrangian/molecule/correlationFunction/correlationFunction.H rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunction.H diff --git a/src/lagrangian/molecule/correlationFunction/correlationFunctionI.H b/src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunctionI.H similarity index 100% rename from src/lagrangian/molecule/correlationFunction/correlationFunctionI.H rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunctionI.H diff --git a/src/lagrangian/molecule/correlationFunction/correlationFunctionIO.C b/src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunctionIO.C similarity index 100% rename from src/lagrangian/molecule/correlationFunction/correlationFunctionIO.C rename to src/lagrangian/molecularDynamics/molecule/correlationFunction/correlationFunctionIO.C diff --git a/src/lagrangian/molecule/distribution/distribution.C b/src/lagrangian/molecularDynamics/molecule/distribution/distribution.C old mode 100755 new mode 100644 similarity index 97% rename from src/lagrangian/molecule/distribution/distribution.C rename to src/lagrangian/molecularDynamics/molecule/distribution/distribution.C index 717929e5e42e6ad99634e8d790f43fa3d7aa70cd..166391acb64bddded06fc6ecc1a9dfcd1a04d533 --- a/src/lagrangian/molecule/distribution/distribution.C +++ b/src/lagrangian/molecularDynamics/molecule/distribution/distribution.C @@ -135,7 +135,7 @@ scalar distribution::median() scalar runningSum = 0.0; - List< Pair<scalar> > normDist(normalised()); + List<Pair<scalar> > normDist(normalised()); if (normDist.size()) { @@ -259,7 +259,7 @@ List< Pair<scalar> > distribution::normalised() sort(keys); - List< Pair<scalar> > normDist(size()); + List<Pair<scalar> > normDist(size()); forAll(keys,k) { @@ -282,9 +282,9 @@ List< Pair<scalar> > distribution::normalisedMinusMean() List< Pair<scalar> > distribution::normalisedShifted(const scalar shiftValue) { - List< Pair<scalar> > oldDist(normalised()); + List<Pair<scalar> > oldDist(normalised()); - List< Pair<scalar> > newDist(oldDist.size()); + List<Pair<scalar> > newDist(oldDist.size()); forAll(oldDist,u) { @@ -383,7 +383,7 @@ List< Pair<scalar> > distribution::normalisedShifted(const scalar shiftValue) } -List< Pair<scalar> > distribution::raw() +List<Pair<scalar> > distribution::raw() { insertMissingKeys(); @@ -391,7 +391,7 @@ List< Pair<scalar> > distribution::raw() sort(keys); - List< Pair<scalar> > rawDist(size()); + List<Pair<scalar> > rawDist(size()); forAll(keys,k) { diff --git a/src/lagrangian/molecule/distribution/distribution.H b/src/lagrangian/molecularDynamics/molecule/distribution/distribution.H old mode 100755 new mode 100644 similarity index 99% rename from src/lagrangian/molecule/distribution/distribution.H rename to src/lagrangian/molecularDynamics/molecule/distribution/distribution.H index c2de1055c16f1607c17aad261772828126cf6381..3e222580ef7a9843f425feeef66e362d2ff0bbe1 --- a/src/lagrangian/molecule/distribution/distribution.H +++ b/src/lagrangian/molecularDynamics/molecule/distribution/distribution.H @@ -102,6 +102,7 @@ public: List<Pair<scalar> > raw(); + // Access inline scalar binWidth() const; diff --git a/src/lagrangian/molecule/distribution/distributionI.H b/src/lagrangian/molecularDynamics/molecule/distribution/distributionI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/distribution/distributionI.H rename to src/lagrangian/molecularDynamics/molecule/distribution/distributionI.H diff --git a/src/lagrangian/molecule/distribution/distributionIO.C b/src/lagrangian/molecularDynamics/molecule/distribution/distributionIO.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/distribution/distributionIO.C rename to src/lagrangian/molecularDynamics/molecule/distribution/distributionIO.C diff --git a/src/lagrangian/molecule/mdTools/averageMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/averageMDFields.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H diff --git a/src/lagrangian/molecule/mdTools/calculateAutoCorrelationFunctions.H b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H similarity index 84% rename from src/lagrangian/molecule/mdTools/calculateAutoCorrelationFunctions.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H index a7c4c326bb3c4dc17aa510f095bc44054bce25ab..8f7574a07727601831c71e016ff55f246b856d49 100644 --- a/src/lagrangian/molecule/mdTools/calculateAutoCorrelationFunctions.H +++ b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H @@ -79,5 +79,27 @@ if (mesh.time().timeIndex() % pacf.sampleSteps() == 0) if (mesh.time().timeIndex() % hfacf.sampleSteps() == 0) { -// hFacf.calculateCorrelationFunction(); + + IDLList<molecule>::iterator mol(molecules.begin()); + + vector s = vector::zero; + + for + ( + mol = molecules.begin(); + mol != molecules.end(); + ++mol + ) + { + s += + ( + 0.5 * mol().mass() * magSqr(mol().U()) + + + mol().potentialEnergy() + ) * mol().U() + + + 0.5 * ( mol().rf() & mol().U() ); + } + + hfacf.calculateCorrelationFunction(s); } diff --git a/src/lagrangian/molecule/mdTools/calculateMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateMDFields.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/calculateMDFields.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/calculateMDFields.H diff --git a/src/lagrangian/molecule/mdTools/calculateTransportProperties.H b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H similarity index 81% rename from src/lagrangian/molecule/mdTools/calculateTransportProperties.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H index 15e0dab7e34c468856704e799a537d1889169ee7..b0923c42db8453dee655139be69644e93c81932e 100644 --- a/src/lagrangian/molecule/mdTools/calculateTransportProperties.H +++ b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H @@ -59,7 +59,24 @@ Info<< "Viscosity = " if(writeHFacf) { - + OFstream hfacfFile + ( + runTime.path()/ + "hfacf" + ); + + if (!hfacf.writeAveraged(hfacfFile)) + { + FatalErrorIn(args.executable()) + << "Failed writing to " + << hfacfFile.name() + << abort(FatalError); + } } - +Info << "Thermal conductivity = " + << hfacf.integral() + /averageTemperature + /averageTemperature + /moleculeCloud::kb + / meshVolume + << endl; diff --git a/src/lagrangian/molecule/mdTools/createAutoCorrelationFunctions.H b/src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H similarity index 100% rename from src/lagrangian/molecule/mdTools/createAutoCorrelationFunctions.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H diff --git a/src/lagrangian/molecule/mdTools/createMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/createMDFields.H old mode 100755 new mode 100644 similarity index 80% rename from src/lagrangian/molecule/mdTools/createMDFields.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/createMDFields.H index f5742fd2c8fd89afdb9428abb5b90ff3e6523967..dccd1891a7fa966df363fa44687bf654571bed3a --- a/src/lagrangian/molecule/mdTools/createMDFields.H +++ b/src/lagrangian/molecularDynamics/molecule/mdTools/createMDFields.H @@ -2,25 +2,25 @@ List< scalarField > allSpeciesN_RU ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); List< scalarField > allSpeciesM_RU ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); List< vectorField > allSpeciesVelocitySum_RU ( - molecules.nIds(), + molecules.pairPotentials().nIds(), vectorField (mesh.nCells(), vector::zero) ); List< scalarField > allSpeciesVelocityMagSquaredSum_RU ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); @@ -34,13 +34,13 @@ Info << nl << "Creating fields." << endl; PtrList<volScalarField> allSpeciesRhoN ( - molecules.nIds() + molecules.pairPotentials().nIds() ); forAll (allSpeciesRhoN, rN) { Info << " Creating number density field for " - << molecules.idList()[rN] << endl; + << molecules.pairPotentials().idList()[rN] << endl; allSpeciesRhoN.set ( @@ -49,7 +49,7 @@ forAll (allSpeciesRhoN, rN) ( IOobject ( - "rhoN_" + molecules.idList()[rN], + "rhoN_" + molecules.pairPotentials().idList()[rN], runTime.timeName(), mesh, IOobject::NO_READ, @@ -89,13 +89,13 @@ totalRhoN.correctBoundaryConditions(); PtrList<volScalarField> allSpeciesRhoM ( - molecules.nIds() + molecules.pairPotentials().nIds() ); forAll (allSpeciesRhoM, rM) { Info << " Creating mass density field for " - << molecules.idList()[rM] << endl; + << molecules.pairPotentials().idList()[rM] << endl; allSpeciesRhoM.set ( @@ -104,7 +104,7 @@ forAll (allSpeciesRhoM, rM) ( IOobject ( - "rhoM_" + molecules.idList()[rM], + "rhoM_" + molecules.pairPotentials().idList()[rM], runTime.timeName(), mesh, IOobject::NO_READ, @@ -144,13 +144,13 @@ totalRhoM.correctBoundaryConditions(); PtrList<volVectorField> allSpeciesVelocity ( - molecules.nIds() + molecules.pairPotentials().nIds() ); forAll (allSpeciesVelocity, v) { Info << " Creating velocity field for " - << molecules.idList()[v] << endl; + << molecules.pairPotentials().idList()[v] << endl; allSpeciesVelocity.set ( @@ -159,7 +159,7 @@ forAll (allSpeciesVelocity, v) ( IOobject ( - "velocity_" + molecules.idList()[v], + "velocity_" + molecules.pairPotentials().idList()[v], runTime.timeName(), mesh, IOobject::NO_READ, @@ -177,22 +177,40 @@ forAll (allSpeciesVelocity, v) Info << " Creating total velocity field" << endl; +// volVectorField totalVelocity +// ( +// IOobject +// ( +// "velocity_total", +// runTime.timeName(), +// mesh, +// IOobject::NO_READ, +// IOobject::AUTO_WRITE +// ), +// mesh, +// dimVelocity, +// "zeroGradient" +// ); +// totalVelocity.internalField() = vectorField (mesh.nCells(), vector::zero); +// totalVelocity.correctBoundaryConditions(); + + volVectorField totalVelocity + ( IOobject ( - "velocity_total", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE + + "velocity_total", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), mesh, - dimVelocity, - "zeroGradient" + dimensionedVector("zero", dimVelocity, vector::zero) ); -totalVelocity.internalField() = vectorField (mesh.nCells(), vector::zero); -totalVelocity.correctBoundaryConditions(); /*---------------------------------------------------------------------------*\ Kinetic temperature @@ -200,13 +218,13 @@ totalVelocity.correctBoundaryConditions(); PtrList<volScalarField> allSpeciesTemperature ( - molecules.nIds() + molecules.pairPotentials().nIds() ); forAll (allSpeciesTemperature, t) { Info << " Creating temperature field for " - << molecules.idList()[t] << endl; + << molecules.pairPotentials().idList()[t] << endl; allSpeciesTemperature.set ( @@ -215,7 +233,7 @@ forAll (allSpeciesTemperature, t) ( IOobject ( - "temperature_" + molecules.idList()[t], + "temperature_" + molecules.pairPotentials().idList()[t], runTime.timeName(), mesh, IOobject::NO_READ, @@ -256,13 +274,13 @@ totalTemperature.correctBoundaryConditions(); PtrList<volScalarField> allSpeciesMeanKE ( - molecules.nIds() + molecules.pairPotentials().nIds() ); forAll (allSpeciesMeanKE, mKE) { Info << " Creating mean kinetic energy field for " - << molecules.idList()[mKE] << endl; + << molecules.pairPotentials().idList()[mKE] << endl; allSpeciesMeanKE.set ( @@ -271,7 +289,7 @@ forAll (allSpeciesMeanKE, mKE) ( IOobject ( - "meanKE_" + molecules.idList()[mKE], + "meanKE_" + molecules.pairPotentials().idList()[mKE], runTime.timeName(), mesh, IOobject::NO_READ, diff --git a/src/lagrangian/molecule/mdTools/createRefUnits.H b/src/lagrangian/molecularDynamics/molecule/mdTools/createRefUnits.H similarity index 100% rename from src/lagrangian/molecule/mdTools/createRefUnits.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/createRefUnits.H diff --git a/src/lagrangian/molecule/mdTools/md.H b/src/lagrangian/molecularDynamics/molecule/mdTools/md.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/md.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/md.H diff --git a/src/lagrangian/molecule/mdTools/meanMomentumEnergyAndNMols.H b/src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/meanMomentumEnergyAndNMols.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H diff --git a/src/lagrangian/molecule/mdTools/resetMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H old mode 100755 new mode 100644 similarity index 72% rename from src/lagrangian/molecule/mdTools/resetMDFields.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H index e5fdbbd8a46b4947abf691e179ca205c3ab6f03a..337647ec02207b6c8662142244664e4c9350d447 --- a/src/lagrangian/molecule/mdTools/resetMDFields.H +++ b/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H @@ -2,25 +2,25 @@ if (runTime.outputTime()) { allSpeciesN_RU = List< scalarField > ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); allSpeciesM_RU = List< scalarField > ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); allSpeciesVelocitySum_RU = List< vectorField > ( - molecules.nIds(), + molecules.pairPotentials().nIds(), vectorField (mesh.nCells(), vector::zero) ); allSpeciesVelocityMagSquaredSum_RU = List< scalarField > ( - molecules.nIds(), + molecules.pairPotentials().nIds(), scalarField (mesh.nCells(), 0.0) ); } diff --git a/src/lagrangian/molecule/mdTools/temperatureAndPressure.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H old mode 100755 new mode 100644 similarity index 97% rename from src/lagrangian/molecule/mdTools/temperatureAndPressure.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H index 0563700cb73d1008a4ce10857143e907abb3b29e..0ae8b5d1eac1f93a8f1b478a0cbd602f8df89739 --- a/src/lagrangian/molecule/mdTools/temperatureAndPressure.H +++ b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H @@ -86,6 +86,8 @@ if (runTime.outputTime()) << " m/s" << nl << "Average temperature = " << averageTemperature << " K" << nl + << "accumulatedTotalrDotfSum = " + << accumulatedTotalrDotfSum << nl << "Average pressure = " << averagePressure << " N/m^2" << nl << "----------------------------------------" << endl; diff --git a/src/lagrangian/molecule/mdTools/temperatureAndPressureVariables.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/temperatureAndPressureVariables.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H diff --git a/src/lagrangian/molecule/mdTools/temperatureEquilibration.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/mdTools/temperatureEquilibration.H rename to src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H diff --git a/src/lagrangian/molecule/molecule/molecule.C b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C old mode 100755 new mode 100644 similarity index 99% rename from src/lagrangian/molecule/molecule/molecule.C rename to src/lagrangian/molecularDynamics/molecule/molecule/molecule.C index 0a46a0ca2cd67192e57bde7c8398cb04cdbe204a..0bf2c95b679a88c3b815cb035b25b70ec5e2c302 --- a/src/lagrangian/molecule/molecule/molecule.C +++ b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C @@ -54,7 +54,7 @@ bool molecule::move(molecule::trackData& td) U_ += 0.5*deltaT*A_; } - while (td.keepParticle && !td.switchProcessor && tEnd > SMALL) + while (td.keepParticle && !td.switchProcessor && tEnd > (SMALL*SMALL)) { // set the lagrangian time-step scalar dt = min(dtMax, tEnd); @@ -178,6 +178,7 @@ void molecule::hitWallPatch { U_ -= 2*Un*nw; } + // } } diff --git a/src/lagrangian/molecule/molecule/molecule.H b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H old mode 100755 new mode 100644 similarity index 99% rename from src/lagrangian/molecule/molecule/molecule.H rename to src/lagrangian/molecularDynamics/molecule/molecule/molecule.H index a3e2099589e6c775fb3d889888b2930e049a367b..cbc0a7a134618552a44adeee06d9b00e77e1da4a --- a/src/lagrangian/molecule/molecule/molecule.H +++ b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H @@ -23,10 +23,9 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::molecule + molecule Description - Foam::molecule SourceFiles moleculeI.H @@ -192,6 +191,7 @@ public: //- Return tetherPosition inline const vector& tetherPosition() const; + inline vector& tetherPosition(); //- Tracking diff --git a/src/lagrangian/molecule/molecule/moleculeI.H b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H old mode 100755 new mode 100644 similarity index 74% rename from src/lagrangian/molecule/molecule/moleculeI.H rename to src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H index bfbda044b14f3d43b864ab3c9eea0ce71ab2c855..c9f1b9eb73925fd1d227fa8d071a76fe26346b02 --- a/src/lagrangian/molecule/molecule/moleculeI.H +++ b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H @@ -24,9 +24,12 @@ License \*---------------------------------------------------------------------------*/ +namespace Foam +{ + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline Foam::molecule::molecule +inline molecule::molecule ( const Cloud<molecule>& c, const vector& position, @@ -51,7 +54,7 @@ inline Foam::molecule::molecule {} -inline Foam::molecule::trackData::trackData +inline molecule::trackData::trackData ( moleculeCloud& molCloud, label part @@ -65,88 +68,98 @@ inline Foam::molecule::trackData::trackData // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::label Foam::molecule::id() const +inline label molecule::id() const { return id_; } -inline Foam::scalar Foam::molecule::mass() const +inline scalar molecule::mass() const { return mass_; } -inline const Foam::vector& Foam::molecule::U() const +inline const vector& molecule::U() const { return U_; } -inline Foam::vector& Foam::molecule::U() +inline vector& molecule::U() { return U_; } -inline const Foam::vector& Foam::molecule::A() const +inline const vector& molecule::A() const { return A_; } -inline Foam::vector& Foam::molecule::A() +inline vector& molecule::A() { return A_; } -inline Foam::scalar Foam::molecule::potentialEnergy() const +inline scalar molecule::potentialEnergy() const { return potentialEnergy_; } -inline Foam::scalar& Foam::molecule::potentialEnergy() +inline scalar& molecule::potentialEnergy() { return potentialEnergy_; } -inline const Foam::tensor& Foam::molecule::rf() const +inline const tensor& molecule::rf() const { return rf_; } -inline Foam::tensor& Foam::molecule::rf() +inline tensor& molecule::rf() { return rf_; } -inline Foam::label Foam::molecule::tethered() const +inline label molecule::tethered() const { return tethered_; } -inline const Foam::vector& Foam::molecule::tetherPosition() const +inline const vector& molecule::tetherPosition() const { return tetherPosition_; } -inline Foam::moleculeCloud& Foam::molecule::trackData::molCloud() +inline vector& molecule::tetherPosition() +{ + return tetherPosition_; +} + + +inline moleculeCloud& molecule::trackData::molCloud() { return molCloud_; } -inline Foam::label Foam::molecule::trackData::part() const +inline label molecule::trackData::part() const { return part_; } +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + // ************************************************************************* // diff --git a/src/lagrangian/molecule/molecule/moleculeIO.C b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/molecule/moleculeIO.C rename to src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloud.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloud.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloud.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H old mode 100755 new mode 100644 similarity index 94% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloud.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H index 37d8cf22bb1270c08da53ae2e2cd5fcaeea2577a..600c874346f0f3c288ebd8d06af414f70648901e --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloud.H +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H @@ -97,18 +97,6 @@ private: scalar potentialEnergyLimit_; - scalar guardRadius_; - - scalar rCutMax_; - - //- storing rCutMaxSqr in class as well as rCutMax to - //- avoid needing to calculate it often. - //- Possibilty of inconsistency if tinkered with. - - scalar rCutMaxSqr_; - - List<word> idList_; - labelList removalOrder_; labelListList directInteractionList_; @@ -189,20 +177,10 @@ public: inline scalar potentialEnergyLimit() const; - inline scalar guardRadius() const; - - inline scalar rCutMax() const; - - inline scalar rCutMaxSqr() const; - - inline const List<word>& idList() const; - inline const labelList& removalOrder() const; inline label nPairPotentials() const; - inline label nIds() const; - inline const labelListList& directInteractionList() const; inline const referredCellList& referredInteractionList() const; diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudApplyConstraintsAndThermostats.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudApplyConstraintsAndThermostats.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudApplyConstraintsAndThermostats.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudApplyConstraintsAndThermostats.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellInteractionLists.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellInteractionLists.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellInteractionLists.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellInteractionLists.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C old mode 100755 new mode 100644 similarity index 89% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C index f02be61f7efc30adfca2faee72eea507cd81c983..89ad6cd3e6db527294daf736c1e1f9b46b4f1ba9 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C @@ -22,13 +22,21 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Class + moleculeCloud + +Description + \*----------------------------------------------------------------------------*/ #include "moleculeCloud.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -void Foam::moleculeCloud::buildCellOccupancy() +namespace Foam +{ + +void moleculeCloud::buildCellOccupancy() { forAll(cellOccupancy_, cO) { @@ -37,7 +45,12 @@ void Foam::moleculeCloud::buildCellOccupancy() iterator mol(this->begin()); - for (mol = this->begin(); mol != this->end(); ++mol) + for + ( + mol = this->begin(); + mol != this->end(); + ++mol + ) { cellOccupancy_[mol().cell()].append(&mol()); } @@ -50,5 +63,6 @@ void Foam::moleculeCloud::buildCellOccupancy() referredInteractionList_.referMolecules(); } +} // End namespace Foam // ************************************************************************* // diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellReferralLists.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellReferralLists.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellReferralLists.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildCellReferralLists.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildDirectInteractionList.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildDirectInteractionList.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildDirectInteractionList.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildDirectInteractionList.H diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildReferredInteractionList.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildReferredInteractionList.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildReferredInteractionList.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudBuildReferredInteractionList.H diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateExternalForce.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateExternalForce.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateExternalForce.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateExternalForce.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateForce.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateForce.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateForce.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateForce.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForce.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForce.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForce.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForce.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCells.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCells.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCells.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCells.H diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H old mode 100755 new mode 100644 similarity index 92% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H index 49e1e2d781b2462e80d44c6133be77acd9c5cdf9..9f2080d02e555d3922a9a7bd3d03af188473ca28 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H @@ -6,7 +6,7 @@ rIJ = molI->position() - molJ->position(); rIJMagSq = magSqr(rIJ); -if (pairPotentials_.rCutSqr(idI, idJ, rIJMagSq)) +if(pairPotentials_.rCutSqr(idI, idJ, rIJMagSq)) { rIJMag = mag(rIJ); diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceReferredCells.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceReferredCells.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceReferredCells.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculatePairForceReferredCells.H diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateTetherForce.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateTetherForce.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateTetherForce.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCalculateTetherForce.C diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCodeSnippets.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCodeSnippets.H new file mode 100644 index 0000000000000000000000000000000000000000..a66b409b450acb56cc0df28b36e6b955d76d646c --- /dev/null +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudCodeSnippets.H @@ -0,0 +1,193 @@ +// Parallel coding to access boundary information to build up interaction cell info + +// See preservePatchTypes for how to read the boundary file. + +// Read faceProcAddressing, as per reconstructPar, to get hold of the original, +// undecomposed face label from a face on a processor mesh. See email from Mattijs: + +// > Is it a case of reading the faceProcAddressing file, in the same way as +// > something like reconstructPar? +// Correct. +// +// Note that faceProcAddressing is a bit weird since it also includes which side +// of an internal face we have. If I remember correctly: +// +// faceI == 0 illegal +// faceI > 0 we have the original owner of faceI-1 i.e. we have the face in the +// original order. +// faceI < 0 we have the original neighbour of -faceI-1 so the face is flipped. + +// Use the same functionality as +// label polyBoundaryMesh::whichPatch(const label faceIndex) const +// To determine which patch a face was on originally. + +if (Pstream::parRun()) +{ +// if (Pstream::myProcNo() == Pstream::masterNo()) +// // { +// dictionary patchDictionary; +// +// DynamicList<word> patchNames; +// +// { +// IOobject undecomposedBoundaryHeader +// ( +// "undecomposedBoundary", +// mesh_.time().constant(), +// polyMesh::meshSubDir, +// mesh_, +// IOobject::MUST_READ, +// IOobject::NO_WRITE, +// false +// ); +// +// if (undecomposedBoundaryHeader.headerOk()) +// { +// polyBoundaryMeshEntries undecomposedPatchEntries +// ( +// undecomposedBoundaryHeader +// ); +// +// forAll(undecomposedPatchEntries, patchi) +// { +// patchNames.append +// ( +// undecomposedPatchEntries[patchi].keyword() +// ); +// +// patchDictionary.add +// ( +// undecomposedPatchEntries[patchi] +// ); +// } +// } +// else +// { +// FatalErrorIn +// ( +// "moleculeCloudBuildCellInteractionLists.C\n" +// ) +// << "undecomposedBoundary file not found in " +// "constant/polyMesh" +// << abort(FatalError); +// } +// } +// +// labelIOList faceProcAddressing +// ( +// IOobject +// ( +// "faceProcAddressing", +// mesh_.time().constant(), +// polyMesh::meshSubDir, +// mesh_, +// IOobject::MUST_READ, +// IOobject::NO_WRITE, +// false +// ) +// ); + + labelList procPatches(mesh_.globalData().processorPatches()); + + forAll(procPatches,pP) + { + const processorPolyPatch& patch = + refCast<const processorPolyPatch> + ( + mesh_.boundaryMesh()[procPatches[pP]] + ); +// +// Pout << nl << "name: " << patch.name() << nl +// << "start: " << patch.start() << nl +// << "size: " << patch.size() << nl +// << "separated: " << Switch(patch.separated()) << nl +// << "parallel: " << Switch(patch.parallel()) << nl << endl; +// +// forAll (patch, pI) +// { +// label decomposedMeshFace = patch.start() + pI; +// +// label faceProcAdd = faceProcAddressing[decomposedMeshFace]; +// +// label globalFace = abs(faceProcAdd)-1; +// +// Pout << "Patch index: " << pI +// << " " << patch[pI] +// << " Mesh index: " << decomposedMeshFace +// << " faceProcAdd: " << faceProcAdd +// << " globalFace:" << globalFace; +// +// label minStart = -1; +// +// // Scanning the dictionary each time is a very ugly way of +// // finding out what patch a face originally belonged to, but +// // it proves the concept. Read the patch info a container +// // class and have a neat way of tell which patch a face is from +// // embedded in that. Split each processor face down into +// // separate lists for each different originiating patch. +// +// forAll(patchNames, patchi) +// { +// if (patchDictionary.found(patchNames[patchi])) +// { +// const dictionary& patchDict = +// patchDictionary.subDict(patchNames[patchi]); +// +// word faceName(patchNames[patchi]); +// label startFace(readLabel(patchDict.lookup("startFace"))); +// label nFaces(readLabel(patchDict.lookup("nFaces"))); +// +// if +// ( +// minStart < 0 +// || startFace < minStart +// ) +// { +// minStart = startFace; +// } +// +// if +// ( +// globalFace >= startFace +// && globalFace < startFace + nFaces +// ) +// { +// Pout << " original patch: " << faceName << endl; +// } +// } +// } +// +// if (globalFace < minStart) +// { +// Pout << " originally an internal face" << endl; +// } +// } +// + if (patch.separated()) + { + Pout << patch.separation(); + } + + if (!patch.parallel()) + { + Pout << patch.forwardT(); + } + } +// } +// else +// { +// +// } + + // Get coords of my shared points +// vector sharedPoints(vector::one*(Pstream::myProcNo()+1)); +// label testRedLab(Pstream::myProcNo()+1); + +// Pout << testRedLab << endl; + + // Append from all processors +// combineReduce(sharedPoints, plusEqOp<vector>()); +// reduce(testRedLab, plusOp<label>()); + +// Pout << testRedLab << endl; +} diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudI.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H old mode 100755 new mode 100644 similarity index 90% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudI.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H index 330fa031dec088ad7fa8f6d729da932455cdb592..215f59d30938ddc1c5e6c0208aeee1b6642c1293 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudI.H +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H @@ -50,42 +50,12 @@ inline scalar moleculeCloud::potentialEnergyLimit() const } -inline scalar moleculeCloud::guardRadius() const -{ - return guardRadius_; -} - - -inline scalar moleculeCloud::rCutMax() const -{ - return rCutMax_; -} - - -inline scalar moleculeCloud::rCutMaxSqr() const -{ - return rCutMaxSqr_; -} - - -inline const List<word>& moleculeCloud::idList() const -{ - return idList_; -} - - inline label moleculeCloud::nPairPotentials() const { return pairPotentials_.size(); } -inline label moleculeCloud::nIds() const -{ - return idList_.size(); -} - - inline const labelList& moleculeCloud::removalOrder() const { return removalOrder_; diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudIntegrateEquationsOfMotion.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudIntegrateEquationsOfMotion.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudIntegrateEquationsOfMotion.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudIntegrateEquationsOfMotion.C diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudReadMDParameters.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudReadMDParameters.H new file mode 100644 index 0000000000000000000000000000000000000000..b74f9c5abf44570bec494bc046599e29304c544c --- /dev/null +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudReadMDParameters.H @@ -0,0 +1,177 @@ +Info<< nl << "Reading MD solution parameters:" << endl; + +IOdictionary mdSolution +( + IOobject + ( + "mdSolution", + mesh_.time().system(), + mesh_, + IOobject::MUST_READ, + IOobject::NO_WRITE + ) +); + +integrationMethod_ = integrationMethodNames_.read +( + mdSolution.lookup("integrationMethod") +); + +potentialEnergyLimit_ = readScalar +( + mdSolution.lookup("potentialEnergyLimit") +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +IOdictionary potentialDict +( + IOobject + ( + "potentialDict", + mesh_.time().system(), + mesh_, + IOobject::MUST_READ, + IOobject::NO_WRITE + ) +); + +IOdictionary idListDict +( + IOobject + ( + "idList", + mesh_.time().constant(), + mesh_, + IOobject::MUST_READ, + IOobject::NO_WRITE + ) +); + +// **************************************************************************** +// Pair potentials + +if (!potentialDict.found("pair")) +{ + FatalErrorIn("moleculeCloudReadPotentials.H") << nl + << "pair potential specification subDict not found" + << abort(FatalError); +} + +const dictionary& pairDict = potentialDict.subDict("pair"); + +pairPotentials_.buildPotentials(idListDict, pairDict, mesh_); + +if (potentialDict.found("removalOrder")) +{ + List<word> remOrd = potentialDict.lookup("removalOrder"); + + removalOrder_.setSize(remOrd.size()); + + forAll(removalOrder_, rO) + { + removalOrder_[rO] = findIndex(pairPotentials_.idList(), remOrd[rO]); + } +} + +// **************************************************************************** +// Tether potentials + +iterator mol(this->begin()); + +DynamicList<label> tetherIds; + +for +( + mol = this->begin(); + mol != this->end(); + ++mol +) +{ + if (mol().tethered()) + { + if (findIndex(tetherIds, mol().id()) == -1) + { + tetherIds.append + ( + mol().id() + ); + } + } +} + +if (Pstream::parRun()) +{ + List< labelList > allTetherIds(Pstream::nProcs()); + + allTetherIds[Pstream::myProcNo()] = tetherIds; + + Pstream::gatherList(allTetherIds); + + if (Pstream::master()) + { + DynamicList<label> globalTetherIds; + + forAll(allTetherIds, procN) + { + const labelList& procNTetherIds = allTetherIds[procN]; + + forAll(procNTetherIds, id) + { + if (findIndex(globalTetherIds, procNTetherIds[id]) == -1) + { + globalTetherIds.append + ( + procNTetherIds[id] + ); + } + } + } + + globalTetherIds.shrink(); + + tetherIds = globalTetherIds; + } + + Pstream::scatter(tetherIds); +} + +tetherIds.shrink(); + +if (tetherIds.size()) +{ + if (!potentialDict.found("tether")) + { + FatalErrorIn("moleculeCloudReadPotentials.H") << nl + << "tether potential specification subDict not found" + << abort(FatalError); + } + + const dictionary& tetherDict = potentialDict.subDict("tether"); + + tetherPotentials_.buildPotentials(idListDict, tetherDict, tetherIds); +} + +// **************************************************************************** +// External Forces + +gravity_ = vector::zero; + +if (potentialDict.found("external")) +{ + + Info << nl << "Reading external forces:" << endl; + + const dictionary& externalDict = potentialDict.subDict("external"); + + // ************************************************************************ + // gravity + + if (externalDict.found("gravity")) + { + gravity_ = externalDict.lookup("gravity"); + } +} + +Info << nl << tab << "gravity = " << gravity_ << endl; + diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRealCellsInRangeOfSegment.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRealCellsInRangeOfSegment.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudRealCellsInRangeOfSegment.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRealCellsInRangeOfSegment.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReferredCellsInRangeOfSegment.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudReferredCellsInRangeOfSegment.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudReferredCellsInRangeOfSegment.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudReferredCellsInRangeOfSegment.C diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C old mode 100755 new mode 100644 similarity index 96% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C index ac4385574fa69fa65a1f2116fff5debe6bbd1a76..e12ea9dbcea3a364f140d24318abc4eddb5e8740 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C @@ -34,7 +34,7 @@ void Foam::moleculeCloud::removeHighEnergyOverlaps() forAll(removalOrder_, rO) { - Info << " " << idList_[removalOrder_[rO]]; + Info << " " << pairPotentials_.idList()[removalOrder_[rO]]; } Info << nl ; diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCells.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCells.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCells.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCells.H diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H old mode 100755 new mode 100644 similarity index 87% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H index bc36a600958e02e58c2b33d4b4e828d71063ffa5..04f9ffd8baec9d7f34a3537197b575af40147e95 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H @@ -12,6 +12,10 @@ if (pairPotentials_.rCutSqr(idI, idJ, rIJMagSq)) bool remove = false; + // Guard against pairPotentials_.energy being evaluated + // if rIJMag < SMALL. A floating point exception will + // happen otherwise. + if (rIJMag < SMALL) { WarningIn("moleculeCloud::removeHighEnergyOverlaps()") @@ -30,10 +34,14 @@ if (pairPotentials_.rCutSqr(idI, idJ, rIJMagSq)) remove = true; } - + // Guard against pairPotentials_.energy being evaluated - // if rIJMag < SMALL. A floating point exception will - // happen otherwise. + // if rIJMag < rMin. A tabulation lookup error will occur otherwise. + + if (rIJMag < pairPotentials_.rMin(idI, idJ)) + { + remove = true; + } if (!remove) { @@ -42,6 +50,7 @@ if (pairPotentials_.rCutSqr(idI, idJ, rIJMagSq)) pairPotentials_.energy(idI, idJ, rIJMag) > potentialEnergyLimit_ ) { + remove = true; } } diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H old mode 100755 new mode 100644 similarity index 93% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H index 5b6b76135f2066dd765012858fe1ef12c4a21236..c0914b1a11c7e2f3a4c5d7fb9badf237ec483c1f --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H @@ -47,6 +47,10 @@ bool remove = false; + // Guard against pairPotentials_.energy being evaluated + // if rKLMag < SMALL. A floating point exception will + // happen otherwise. + if (rKLMag < SMALL) { WarningIn @@ -72,8 +76,12 @@ } // Guard against pairPotentials_.energy being evaluated - // if rKLMag < SMALL. A floating point exception will - // happen otherwise. + // if rIJMag < rMin. A tubulation lookup error will occur otherwise. + + if (rKLMag < pairPotentials_.rMin(idK, idL)) + { + remove = true; + } if (!remove) { diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C old mode 100755 new mode 100644 similarity index 97% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C index 285447974cf216b8ee508747e96918e9deb6200d..1e8fd26630cb02589d2fa740049321040f9d2c56 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C @@ -75,7 +75,7 @@ bool Foam::moleculeCloud::testEdgeEdgeDistance && s <= 1 && t >= 0 && t <= 1 - && magSqr(eIs + a*s - eJs - b*t) <= rCutMaxSqr() + && magSqr(eIs + a*s - eJs - b*t) <= pairPotentials_.rCutMaxSqr() ); } diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C old mode 100755 new mode 100644 similarity index 93% rename from src/lagrangian/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C rename to src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C index e01be864769728a17f9727db4a3fd4c194439e21..03a30873a750e704f7a4c2f437392181e17309a7 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C +++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C @@ -128,14 +128,14 @@ bool Foam::moleculeCloud::testPointFaceDistance scalar perpDist((p - faceC) & faceN); - if (mag(perpDist) > rCutMax()) + if (mag(perpDist) > pairPotentials_.rCutMax()) { return false; } vector pointOnPlane = (p - faceN * perpDist); - if (magSqr(faceC - pointOnPlane) < rCutMaxSqr()*1e-8) + if (magSqr(faceC - pointOnPlane) < pairPotentials_.rCutMaxSqr()*1e-8) { // If pointOnPlane is very close to the face centre // then defining the local axes will be inaccurate @@ -143,7 +143,7 @@ bool Foam::moleculeCloud::testPointFaceDistance // inside the face, so return true if the points // are in range to be safe - return (magSqr(pointOnPlane - p) <= rCutMaxSqr()); + return (magSqr(pointOnPlane - p) <= pairPotentials_.rCutMaxSqr()); } vector xAxis = (faceC - pointOnPlane)/mag(faceC - pointOnPlane); @@ -158,7 +158,7 @@ bool Foam::moleculeCloud::testPointFaceDistance { const vector& V(points[faceToTest[fTT]]); - if (magSqr(V-p) <= rCutMaxSqr()) + if (magSqr(V-p) <= pairPotentials_.rCutMaxSqr()) { return true; } @@ -206,7 +206,7 @@ bool Foam::moleculeCloud::testPointFaceDistance if (la_valid < 0) { // perpendicular point inside face, nearest point is pointOnPlane; - return (magSqr(pointOnPlane-p) <= rCutMaxSqr()); + return (magSqr(pointOnPlane-p) <= pairPotentials_.rCutMaxSqr()); } else { @@ -215,7 +215,7 @@ bool Foam::moleculeCloud::testPointFaceDistance return ( magSqr(pointOnPlane + la_valid*(faceC - pointOnPlane) - p) - <= rCutMaxSqr() + <= pairPotentials_.rCutMaxSqr() ); } diff --git a/src/lagrangian/molecule/reducedUnits/reducedUnits.C b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C similarity index 100% rename from src/lagrangian/molecule/reducedUnits/reducedUnits.C rename to src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C diff --git a/src/lagrangian/molecule/reducedUnits/reducedUnits.H b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H similarity index 98% rename from src/lagrangian/molecule/reducedUnits/reducedUnits.H rename to src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H index 7adc1051fd414ac75a66e64c79bacada4a5ba045..6a1379ecac206c022e7fd53f6eeae863bb12e25a 100644 --- a/src/lagrangian/molecule/reducedUnits/reducedUnits.H +++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H @@ -105,7 +105,7 @@ public: //- Construct with no argument, uses default values: // length = 1nm - // mass = 1.660538782e−27kg (unified atomic mass unit) + // mass = 1.660538782e−27kg (unified atomic mass unit) // temperature = 1K (therefore, energy = 1*kb) reducedUnits(); diff --git a/src/lagrangian/molecule/reducedUnits/reducedUnitsI.H b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H similarity index 100% rename from src/lagrangian/molecule/reducedUnits/reducedUnitsI.H rename to src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H diff --git a/src/lagrangian/molecule/reducedUnits/reducedUnitsIO.C b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C similarity index 100% rename from src/lagrangian/molecule/reducedUnits/reducedUnitsIO.C rename to src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C diff --git a/src/lagrangian/molecule/referralLists/receivingReferralList.C b/src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralList.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/receivingReferralList.C rename to src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralList.C diff --git a/src/lagrangian/molecule/referralLists/receivingReferralList.H b/src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralList.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/receivingReferralList.H rename to src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralList.H diff --git a/src/lagrangian/molecule/referralLists/receivingReferralListI.H b/src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralListI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/receivingReferralListI.H rename to src/lagrangian/molecularDynamics/molecule/referralLists/receivingReferralListI.H diff --git a/src/lagrangian/molecule/referralLists/sendingReferralList.C b/src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralList.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/sendingReferralList.C rename to src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralList.C diff --git a/src/lagrangian/molecule/referralLists/sendingReferralList.H b/src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralList.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/sendingReferralList.H rename to src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralList.H diff --git a/src/lagrangian/molecule/referralLists/sendingReferralListI.H b/src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralListI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referralLists/sendingReferralListI.H rename to src/lagrangian/molecularDynamics/molecule/referralLists/sendingReferralListI.H diff --git a/src/lagrangian/molecule/referredCell/referredCell.C b/src/lagrangian/molecularDynamics/molecule/referredCell/referredCell.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredCell/referredCell.C rename to src/lagrangian/molecularDynamics/molecule/referredCell/referredCell.C diff --git a/src/lagrangian/molecule/referredCell/referredCell.H b/src/lagrangian/molecularDynamics/molecule/referredCell/referredCell.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredCell/referredCell.H rename to src/lagrangian/molecularDynamics/molecule/referredCell/referredCell.H diff --git a/src/lagrangian/molecule/referredCell/referredCellI.H b/src/lagrangian/molecularDynamics/molecule/referredCell/referredCellI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredCell/referredCellI.H rename to src/lagrangian/molecularDynamics/molecule/referredCell/referredCellI.H diff --git a/src/lagrangian/molecule/referredCellList/referredCellList.C b/src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellList.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredCellList/referredCellList.C rename to src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellList.C diff --git a/src/lagrangian/molecule/referredCellList/referredCellList.H b/src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellList.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredCellList/referredCellList.H rename to src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellList.H diff --git a/src/lagrangian/molecule/referredCellList/referredCellListI.H b/src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellListI.H old mode 100755 new mode 100644 similarity index 92% rename from src/lagrangian/molecule/referredCellList/referredCellListI.H rename to src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellListI.H index 34767d88b6f24406a876f8af37a5b7abfa20ddce..ee09c481844657e5a728ef20092270a3f06a6ba4 --- a/src/lagrangian/molecule/referredCellList/referredCellListI.H +++ b/src/lagrangian/molecularDynamics/molecule/referredCellList/referredCellListI.H @@ -24,9 +24,6 @@ License \*---------------------------------------------------------------------------*/ -namespace Foam -{ - // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // inline const Foam::moleculeCloud& Foam::referredCellList::molCloud() @@ -35,8 +32,4 @@ inline const Foam::moleculeCloud& Foam::referredCellList::molCloud() } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/lagrangian/molecule/referredMolecule/referredMolecule.C b/src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMolecule.C old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredMolecule/referredMolecule.C rename to src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMolecule.C diff --git a/src/lagrangian/molecule/referredMolecule/referredMolecule.H b/src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMolecule.H old mode 100755 new mode 100644 similarity index 99% rename from src/lagrangian/molecule/referredMolecule/referredMolecule.H rename to src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMolecule.H index fcac7925a9100e773f97cf773868c832ec393994..57bc07d7c97af8a833d2ed1118a6a164bcb5cd37 --- a/src/lagrangian/molecule/referredMolecule/referredMolecule.H +++ b/src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMolecule.H @@ -98,6 +98,7 @@ public: const referredMolecule& b ); + // IOstream Operators friend Istream& operator>> diff --git a/src/lagrangian/molecule/referredMolecule/referredMoleculeI.H b/src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMoleculeI.H old mode 100755 new mode 100644 similarity index 100% rename from src/lagrangian/molecule/referredMolecule/referredMoleculeI.H rename to src/lagrangian/molecularDynamics/molecule/referredMolecule/referredMoleculeI.H diff --git a/src/lagrangian/molecularDynamics/potential/Make/files b/src/lagrangian/molecularDynamics/potential/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..43cf0bb73728b1799b5b1c92f911b36045bf614b --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/Make/files @@ -0,0 +1,35 @@ +pairPotential = pairPotential + +$(pairPotential)/pairPotentialList/pairPotentialList.C + +$(pairPotential)/basic/pairPotential.C +$(pairPotential)/basic/pairPotentialIO.C +$(pairPotential)/basic/newPairPotential.C + +$(pairPotential)/derived/lennardJones/lennardJones.C +$(pairPotential)/derived/maitlandSmith/maitlandSmith.C +$(pairPotential)/derived/azizChen/azizChen.C + +energyScalingFunction = energyScalingFunction + +$(energyScalingFunction)/basic/energyScalingFunction.C +$(energyScalingFunction)/basic/newEnergyScalingFunction.C + +$(energyScalingFunction)/derived/shifted/shifted.C +$(energyScalingFunction)/derived/shiftedForce/shiftedForce.C +$(energyScalingFunction)/derived/noScaling/noScaling.C +$(energyScalingFunction)/derived/sigmoid/sigmoid.C +$(energyScalingFunction)/derived/doubleSigmoid/doubleSigmoid.C + +tetherPotential = tetherPotential + +$(tetherPotential)/tetherPotentialList/tetherPotentialList.C + +$(tetherPotential)/basic/tetherPotential.C +$(tetherPotential)/basic/newTetherPotential.C + +$(tetherPotential)/derived/harmonicSpring/harmonicSpring.C +$(tetherPotential)/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C + +LIB = $(FOAM_LIBBIN)/libpotential + diff --git a/src/lagrangian/molecularDynamics/potential/Make/options b/src/lagrangian/molecularDynamics/potential/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..a412632ebb87b7a78b4466b6d94fedc04f71922d --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/Make/options @@ -0,0 +1,6 @@ +EXE_INC = \ + -I.. \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +LIB_LIBS = \ + -lfiniteVolume diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C new file mode 100644 index 0000000000000000000000000000000000000000..1ebd4b4005ddd9cf408978a5092e15281ecff87e --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + energyScalingFunction + +\*---------------------------------------------------------------------------*/ + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(energyScalingFunction, 0); +defineRunTimeSelectionTable(energyScalingFunction, dictionary); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::energyScalingFunction::energyScalingFunction +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + name_(name), + energyScalingFunctionProperties_(energyScalingFunctionProperties), + pairPot_(pairPot) +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + + +bool Foam::energyScalingFunction::read +( + const dictionary& energyScalingFunctionProperties +) +{ + energyScalingFunctionProperties_ = energyScalingFunctionProperties; + + return true; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H new file mode 100644 index 0000000000000000000000000000000000000000..111cbbedefe32bac9d462ee5e41260757c21213c --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H @@ -0,0 +1,151 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunction + +Description + +SourceFiles + energyScalingFunction.C + newEnergyScalingFunction.C + +\*---------------------------------------------------------------------------*/ + +#ifndef energyScalingFunction_H +#define energyScalingFunction_H + +#include "IOdictionary.H" +#include "typeInfo.H" +#include "runTimeSelectionTables.H" +#include "autoPtr.H" +#include "pairPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class energyScalingFunction Declaration +\*---------------------------------------------------------------------------*/ + +class energyScalingFunction +{ + +protected: + + // Protected data + + word name_; + + dictionary energyScalingFunctionProperties_; + + const pairPotential& pairPot_; + + + // Private Member Functions + + //- Disallow copy construct + energyScalingFunction(const energyScalingFunction&); + + //- Disallow default bitwise assignment + void operator=(const energyScalingFunction&); + + +public: + + //- Runtime type information + TypeName("energyScalingFunction"); + + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + energyScalingFunction, + dictionary, + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ), + (name, energyScalingFunctionProperties, pairPot) + ); + + + // Selectors + + //- Return a reference to the selected viscosity model + static autoPtr<energyScalingFunction> New + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Constructors + + //- Construct from components + energyScalingFunction + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + virtual ~energyScalingFunction() + {} + + + // Member Functions + + virtual void scaleEnergy(scalar& e, const scalar r) const = 0; + + const dictionary& energyScalingFunctionProperties() const + { + return energyScalingFunctionProperties_; + } + + //- Read energyScalingFunction dictionary + virtual bool read(const dictionary& energyScalingFunctionProperties) = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C new file mode 100644 index 0000000000000000000000000000000000000000..bb8153a38346700ddb411c519eaddb3c8ac0ac3c --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + energyScalingFunction + +\*---------------------------------------------------------------------------*/ + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +autoPtr<energyScalingFunction> energyScalingFunction::New +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +{ + word energyScalingFunctionTypeName + ( + energyScalingFunctionProperties.lookup("energyScalingFunction") + ); + + Info<< "Selecting energy scaling function " + << energyScalingFunctionTypeName << " for " + << name << " potential energy." << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(energyScalingFunctionTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "energyScalingFunction::New()" + ) << "Unknown energyScalingFunction type " + << energyScalingFunctionTypeName << endl << endl + << "Valid energyScalingFunctions are : " << endl + << dictionaryConstructorTablePtr_->toc() + << exit(FatalError); + } + + return autoPtr<energyScalingFunction> + (cstrIter()(name, energyScalingFunctionProperties, pairPot)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C new file mode 100644 index 0000000000000000000000000000000000000000..63fabd6ad9d0e561a97576cda5aa860289e242cb --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "doubleSigmoid.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(doubleSigmoid, 0); + +addToRunTimeSelectionTable +( + energyScalingFunction, + doubleSigmoid, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +scalar doubleSigmoid::sigmoidScale + ( + const scalar r, + const scalar shift, + const scalar scale + ) const +{ + return 1.0 / (1.0 + exp( scale * (r - shift))); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +doubleSigmoid::doubleSigmoid +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + energyScalingFunction(name, energyScalingFunctionProperties, pairPot), + doubleSigmoidCoeffs_(energyScalingFunctionProperties.subDict(typeName + "Coeffs")), + shift1_(readScalar(doubleSigmoidCoeffs_.lookup("shift1"))), + scale1_(readScalar(doubleSigmoidCoeffs_.lookup("scale1"))), + shift2_(readScalar(doubleSigmoidCoeffs_.lookup("shift2"))), + scale2_(readScalar(doubleSigmoidCoeffs_.lookup("scale2"))) +{} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void doubleSigmoid::scaleEnergy(scalar& e, const scalar r) const +{ + e *= sigmoidScale(r, shift1_, scale1_) * sigmoidScale(r, shift2_, scale2_); +} + +bool doubleSigmoid::read(const dictionary& energyScalingFunctionProperties) +{ + energyScalingFunction::read(energyScalingFunctionProperties); + + doubleSigmoidCoeffs_ = energyScalingFunctionProperties.subDict(typeName + "Coeffs"); + + doubleSigmoidCoeffs_.lookup("shift1") >> shift1_; + doubleSigmoidCoeffs_.lookup("scale1") >> scale1_; + doubleSigmoidCoeffs_.lookup("shift2") >> shift2_; + doubleSigmoidCoeffs_.lookup("scale2") >> scale2_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H new file mode 100644 index 0000000000000000000000000000000000000000..b23db335fc557c886d0508078b1bd815156f88f7 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunctions::doubleSigmoid + +Description + + +SourceFiles + doubleSigmoid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef doubleSigmoid_H +#define doubleSigmoid_H + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +/*---------------------------------------------------------------------------*\ + Class doubleSigmoid Declaration +\*---------------------------------------------------------------------------*/ + +class doubleSigmoid +: + public energyScalingFunction +{ + // Private data + + dictionary doubleSigmoidCoeffs_; + + scalar shift1_; + scalar scale1_; + scalar shift2_; + scalar scale2_; + + // Private Member Functions + + scalar sigmoidScale + ( + const scalar r, + const scalar shift, + const scalar scale + ) const; + + +public: + + //- Runtime type information + TypeName("doubleSigmoid"); + + + // Constructors + + //- Construct from components + doubleSigmoid + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + ~doubleSigmoid() + {} + + // Member Functions + + void scaleEnergy(scalar& e, const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& energyScalingFunctionProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C new file mode 100644 index 0000000000000000000000000000000000000000..08daf130cbcc23d0b4770260808e73cbf6cb8f16 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "noScaling.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(noScaling, 0); + +addToRunTimeSelectionTable +( + energyScalingFunction, + noScaling, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +noScaling::noScaling +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + energyScalingFunction(name, energyScalingFunctionProperties, pairPot) +{} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void noScaling::scaleEnergy(scalar& e, const scalar r) const +{} + +bool noScaling::read(const dictionary& energyScalingFunctionProperties) +{ + energyScalingFunction::read(energyScalingFunctionProperties); + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H new file mode 100644 index 0000000000000000000000000000000000000000..1e5f2452e2a763a1561331b7cce65491470a9c77 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunctions::noScaling + +Description + + +SourceFiles + noScaling.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noScaling_H +#define noScaling_H + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +/*---------------------------------------------------------------------------*\ + Class noScaling Declaration +\*---------------------------------------------------------------------------*/ + +class noScaling +: + public energyScalingFunction +{ + +public: + + //- Runtime type information + TypeName("noScaling"); + + + // Constructors + + //- Construct from components + noScaling + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + ~noScaling() + {} + + // Member Functions + + void scaleEnergy(scalar& e, const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& energyScalingFunctionProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C old mode 100755 new mode 100644 similarity index 53% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.C rename to src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C index 46c097b36d5abf8473bd8676ea24abb7787dd970..28882fb1188b349bb679b41e1121a297a598aeac --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.C +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,73 +22,63 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -\*----------------------------------------------------------------------------*/ +\*---------------------------------------------------------------------------*/ -#include "tetherPotential.H" +#include "shifted.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +namespace energyScalingFunctions +{ -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -tetherPotential::tetherPotential() -{} +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +defineTypeNameAndDebug(shifted, 0); -tetherPotential::tetherPotential +addToRunTimeSelectionTable ( - const word& tetherPotentialName, - const word& tetherPotentialType, - const scalar springConstant -) -: - tetherPotentialName_(tetherPotentialName), - tetherPotentialType_(tetherPotentialType), - springConstant_(springConstant) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -tetherPotential::~tetherPotential() -{} + energyScalingFunction, + shifted, + dictionary +); +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void tetherPotential::write(Ostream& os) const -{ - os << tetherPotentialName_ - << nl << tetherPotentialType_ - << nl << springConstant_ - << endl; -} +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -scalar tetherPotential::force(const scalar rITMag) const -{ - return -springConstant_ * rITMag; -} +shifted::shifted +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + energyScalingFunction(name, energyScalingFunctionProperties, pairPot), + e_at_rCut_(pairPot.unscaledEnergy(pairPot.rCut())) +{} +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -scalar tetherPotential::energy(const scalar rITMag) const +void shifted::scaleEnergy(scalar& e, const scalar r) const { - return 0.5*springConstant_*rITMag*rITMag; + e -= e_at_rCut_; } - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - -Ostream& operator<<(Ostream& os, const tetherPotential& pot) +bool shifted::read(const dictionary& energyScalingFunctionProperties) { - pot.write(os); - os.check("Ostream& operator<<(Ostream& f, const tetherPotential& pot"); - return os; + energyScalingFunction::read(energyScalingFunctionProperties); + + return true; } -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace energyScalingFunctions } // End namespace Foam // ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H new file mode 100644 index 0000000000000000000000000000000000000000..3754fb0b0e0c2867b4128d4d5f7bb41c5c8b32b0 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunctions::shifted + +Description + + +SourceFiles + shifted.C + +\*---------------------------------------------------------------------------*/ + +#ifndef shifted_H +#define shifted_H + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +/*---------------------------------------------------------------------------*\ + Class shifted Declaration +\*---------------------------------------------------------------------------*/ + +class shifted +: + public energyScalingFunction +{ + // Private data + + scalar e_at_rCut_; + + +public: + + //- Runtime type information + TypeName("shifted"); + + + // Constructors + + //- Construct from components + shifted + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + ~shifted() + {} + + // Member Functions + + void scaleEnergy(scalar& e, const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& energyScalingFunctionProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C new file mode 100644 index 0000000000000000000000000000000000000000..c619c3fc0676d18dc9abbf3fd238cb5cb2af2038 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "shiftedForce.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(shiftedForce, 0); + +addToRunTimeSelectionTable +( + energyScalingFunction, + shiftedForce, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +shiftedForce::shiftedForce +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + energyScalingFunction(name, energyScalingFunctionProperties, pairPot), + rCut_(pairPot.rCut()), + e_at_rCut_(pairPot.unscaledEnergy(rCut_)), + de_dr_at_rCut_(pairPot.energyDerivative(rCut_, false)) +{} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void shiftedForce::scaleEnergy(scalar& e, const scalar r) const +{ + e -= ( e_at_rCut_ + de_dr_at_rCut_ * (r - rCut_) ); +} + +bool shiftedForce::read(const dictionary& energyScalingFunctionProperties) +{ + energyScalingFunction::read(energyScalingFunctionProperties); + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H new file mode 100644 index 0000000000000000000000000000000000000000..62588019829d122eeba93395095598c5b713169f --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunctions::shiftedForce + +Description + + +SourceFiles + shiftedForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef shiftedForce_H +#define shiftedForce_H + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +/*---------------------------------------------------------------------------*\ + Class shiftedForce Declaration +\*---------------------------------------------------------------------------*/ + +class shiftedForce +: + public energyScalingFunction +{ + // Private data + + scalar rCut_; + + scalar e_at_rCut_; + + scalar de_dr_at_rCut_; + + +public: + + //- Runtime type information + TypeName("shiftedForce"); + + + // Constructors + + //- Construct from components + shiftedForce + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + ~shiftedForce() + {} + + + // Member Functions + + void scaleEnergy(scalar& e, const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& energyScalingFunctionProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C new file mode 100644 index 0000000000000000000000000000000000000000..5523cff338cd0a2c0fe42f5f9f6785d11d98fa33 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "sigmoid.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(sigmoid, 0); + +addToRunTimeSelectionTable +( + energyScalingFunction, + sigmoid, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +scalar sigmoid::sigmoidScale + ( + const scalar r, + const scalar shift, + const scalar scale + ) const +{ + return 1.0 / (1.0 + exp( scale * (r - shift))); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +sigmoid::sigmoid +( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot +) +: + energyScalingFunction(name, energyScalingFunctionProperties, pairPot), + sigmoidCoeffs_(energyScalingFunctionProperties.subDict(typeName + "Coeffs")), + shift_(readScalar(sigmoidCoeffs_.lookup("shift"))), + scale_(readScalar(sigmoidCoeffs_.lookup("scale"))) +{} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void sigmoid::scaleEnergy(scalar& e, const scalar r) const +{ + e *= sigmoidScale(r, shift_, scale_); +} + +bool sigmoid::read(const dictionary& energyScalingFunctionProperties) +{ + energyScalingFunction::read(energyScalingFunctionProperties); + + sigmoidCoeffs_ = energyScalingFunctionProperties.subDict(typeName + "Coeffs"); + + sigmoidCoeffs_.lookup("shift") >> shift_; + sigmoidCoeffs_.lookup("scale") >> shift_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H new file mode 100644 index 0000000000000000000000000000000000000000..ae193fe31324c419ece1311fba33aca2eddd8069 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::energyScalingFunctions::sigmoid + +Description + + +SourceFiles + sigmoid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sigmoid_H +#define sigmoid_H + +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace energyScalingFunctions +{ + +/*---------------------------------------------------------------------------*\ + Class sigmoid Declaration +\*---------------------------------------------------------------------------*/ + +class sigmoid +: + public energyScalingFunction +{ + // Private data + + dictionary sigmoidCoeffs_; + + scalar shift_; + scalar scale_; + + + // Private Member Functions + + scalar sigmoidScale + ( + const scalar r, + const scalar shift, + const scalar scale + ) const; + + +public: + + //- Runtime type information + TypeName("sigmoid"); + + + // Constructors + + //- Construct from components + sigmoid + ( + const word& name, + const dictionary& energyScalingFunctionProperties, + const pairPotential& pairPot + ); + + + // Destructor + + ~sigmoid() + {} + + + // Member Functions + + void scaleEnergy(scalar& e, const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& energyScalingFunctionProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace energyScalingFunctions +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C new file mode 100644 index 0000000000000000000000000000000000000000..f10b0aa84d46f1bd4f565a6ca79de0e7c6d0cec8 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + pairPotential + +\*---------------------------------------------------------------------------*/ + +#include "pairPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +autoPtr<pairPotential> pairPotential::New +( + const word& name, + const dictionary& pairPotentialProperties +) +{ + word pairPotentialTypeName(pairPotentialProperties.lookup("pairPotential")); + + Info<< nl << "Selecting intermolecular pair potential " + << pairPotentialTypeName << " for " + << name << " interaction." << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(pairPotentialTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "pairPotential::New()" + ) << "Unknown pairPotential type " + << pairPotentialTypeName << endl << endl + << "Valid pairPotentials are : " << endl + << dictionaryConstructorTablePtr_->toc() + << exit(FatalError); + } + + return autoPtr<pairPotential> + (cstrIter()(name, pairPotentialProperties)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C new file mode 100644 index 0000000000000000000000000000000000000000..209b4c747390edd06926b267d540feea00dd6154 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C @@ -0,0 +1,240 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + pairPotential + +\*---------------------------------------------------------------------------*/ + +#include "pairPotential.H" +#include "energyScalingFunction.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(pairPotential, 0); +defineRunTimeSelectionTable(pairPotential, dictionary); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +void Foam::pairPotential::scaleEnergy(scalar& e, const scalar r) const +{ + if (!esfPtr_) + { + esfPtr_ = energyScalingFunction::New + ( + name_, pairPotentialProperties_, *this + ).ptr(); + } + + esfPtr_->scaleEnergy(e, r); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::pairPotential::pairPotential +( + const word& name, + const dictionary& pairPotentialProperties +) +: + name_(name), + pairPotentialProperties_(pairPotentialProperties), + rCut_(readScalar(pairPotentialProperties_.lookup("rCut"))), + rCutSqr_(rCut_*rCut_), + rMin_(readScalar(pairPotentialProperties_.lookup("rMin"))), + dr_(readScalar(pairPotentialProperties_.lookup("dr"))), + forceLookup_(0), + energyLookup_(0), + esfPtr_(NULL), + writeTables_(Switch(pairPotentialProperties_.lookup("writeTables"))) +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void Foam::pairPotential::setLookupTables() +{ + label N = label((rCut_ - rMin_)/dr_) + 1; + + forceLookup_.setSize(N); + + energyLookup_.setSize(N); + + forAll(forceLookup_, k) + { + energyLookup_[k] = scaledEnergy(k*dr_ + rMin_); + + forceLookup_[k] = -energyDerivative((k*dr_ + rMin_), true); + } +} + + +Foam::scalar Foam::pairPotential::forceLookup(const scalar r) const +{ + scalar k_rIJ = (r - rMin_)/dr_; + + label k(k_rIJ); + + if (k < 0) + { + FatalErrorIn("pairPotential.C") << nl + << "r less than rMin" << nl + << abort(FatalError); + } + + scalar f = + (k_rIJ - k)*forceLookup_[k+1] + + (k + 1 - k_rIJ)*forceLookup_[k]; + + return f; +} + + +Foam::List< Foam::Pair< Foam::scalar > > +Foam::pairPotential::forceTable() const +{ + List<Pair<scalar> > forceTab(forceLookup_.size()); + + forAll(forceLookup_,k) + { + forceTab[k].first() = rMin_ + k*dr_; + + forceTab[k].second() = forceLookup_[k]; + } + + return forceTab; +} + + +Foam::scalar Foam::pairPotential::energyLookup(const scalar r) const +{ + scalar k_rIJ = (r - rMin_)/dr_; + + label k(k_rIJ); + + if (k < 0) + { + FatalErrorIn("pairPotential.C") << nl + << "r less than rMin" << nl + << abort(FatalError); + } + + scalar e = + (k_rIJ - k)*energyLookup_[k+1] + + (k + 1 - k_rIJ)*energyLookup_[k]; + + return e; +} + + +Foam::List< Foam::Pair< Foam::scalar > > + Foam::pairPotential::energyTable() const +{ + List<Pair<scalar> > energyTab(energyLookup_.size()); + + forAll(energyLookup_,k) + { + energyTab[k].first() = rMin_ + k*dr_; + + energyTab[k].second() = energyLookup_[k]; + } + + return energyTab; +} + + +Foam::scalar Foam::pairPotential::scaledEnergy(const scalar r) const +{ + scalar e = unscaledEnergy(r); + + scaleEnergy(e, r); + + return e; +} + + +Foam::scalar Foam::pairPotential::energyDerivative +( + const scalar r, + const bool scaledEnergyDerivative +) const +{ + // Local quadratic fit to energy: E = a0 + a1*r + a2*r^2 + // Differentiate to give f = -dE/dr = -a1 - 2*a2*r + + scalar ra = r - dr_; + scalar rf = r; + scalar rb = r + dr_; + + scalar Ea, Ef, Eb; + + if (scaledEnergyDerivative) + { + Ea = scaledEnergy(ra); + Ef = scaledEnergy(rf); + Eb = scaledEnergy(rb); + } + else + { + Ea = unscaledEnergy(ra); + Ef = unscaledEnergy(rf); + Eb = unscaledEnergy(rb); + } + + scalar denominator = (ra - rf)*(ra - rb)*(rf - rb); + + scalar a1 = + ( + rb*rb*(Ea - Ef) + ra*ra*(Ef - Eb) + rf*rf*(Eb - Ea) + ) / denominator; + + scalar a2 = + ( + rb*(Ef - Ea) + rf*(Ea - Eb) + ra*(Eb - Ef) + ) / denominator; + + return a1 + 2.0*a2*r; +} + + +bool Foam::pairPotential::read(const dictionary& pairPotentialProperties) +{ + pairPotentialProperties_ = pairPotentialProperties; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.H b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H old mode 100755 new mode 100644 similarity index 50% rename from src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.H rename to src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H index 42b507586acfec5ebaa500d2374e6a3b8387ba34..c787072f34b4d42e859fb98452bea7f31a21d463 --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.H +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,157 +27,157 @@ Class Description - At the moment this is hard coded to be a shifted force - "maitlandSmith" potential. - In future use templated classes virtual functions, - function pointers and all kinds of good stuff to make - this a generic pair force, - SourceFiles - pairPotentialI.H pairPotential.C + newPairPotential.C \*---------------------------------------------------------------------------*/ #ifndef pairPotential_H #define pairPotential_H -#include "vector.H" -#include "dictionary.H" +#include "IOdictionary.H" +#include "typeInfo.H" +#include "runTimeSelectionTables.H" +#include "autoPtr.H" #include "List.H" #include "Pair.H" +#include "Switch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +// Forward declaration of classes +class energyScalingFunction; + /*---------------------------------------------------------------------------*\ - Class pairPotential Declaration + Class pairPotential Declaration \*---------------------------------------------------------------------------*/ class pairPotential { - // Private data - - List<scalar> forceLookup_; - - List<scalar> energyLookup_; - - scalar m_; - scalar gamma_; +protected: - scalar rm_; + // Protected data - scalar epsilon_; + word name_; + dictionary pairPotentialProperties_; scalar rCut_; - scalar rCutSqr_; - scalar u_at_rCut_; - - scalar du_by_dr_at_rCut_; - scalar rMin_; - scalar dr_; + List<scalar> forceLookup_; + List<scalar> energyLookup_; + + mutable energyScalingFunction* esfPtr_; + + bool writeTables_; // Private Member Functions - void setLookupTables(); + void scaleEnergy(scalar& e, const scalar r) const; + + //- Disallow copy construct + pairPotential(const pairPotential&); - void setConstants(); + //- Disallow default bitwise assignment + void operator=(const pairPotential&); public: - // Constructors + //- Runtime type information + TypeName("pairPotential"); - //- Construct null - pairPotential(); - //- Construct from dictionary - pairPotential(const dictionary& pPDict); + // Declare run-time constructor selection table - //- Construct from components - pairPotential + declareRunTimeSelectionTable ( - const scalar m, - const scalar gamma, - const scalar rm, - const scalar epsilon, - const scalar rCut, - const scalar rMin, - const scalar dr + autoPtr, + pairPotential, + dictionary, + ( + const word& name, + const dictionary& pairPotentialProperties + ), + (name, pairPotentialProperties) ); - // Destructor - - virtual ~pairPotential(); - - - // Member Functions + // Selectors - // Access - - inline scalar m() const; + //- Return a reference to the selected viscosity model + static autoPtr<pairPotential> New + ( + const word& name, + const dictionary& pairPotentialProperties + ); - inline scalar gamma() const ; - inline scalar rm() const; + // Constructors - inline scalar epsilon() const; + //- Construct from components + pairPotential + ( + const word& name, + const dictionary& pairPotentialProperties + ); - inline scalar rCut() const; - inline scalar rCutSqr() const; + // Destructor - inline scalar rMin() const; + virtual ~pairPotential() + {} - inline scalar dr() const; + // Member Functions - // Write + void setLookupTables(); - virtual void write(Ostream&) const; + inline scalar rMin() const; - scalar n(const scalar rIJMag) const; + inline scalar dr() const; - scalar force(const scalar rIJMag) const; + inline scalar rCut() const; - scalar forceLookup(const scalar rIJMag) const; + inline scalar rCutSqr() const; - List<Pair<scalar> > forceTable() const; + scalar energyLookup (const scalar r) const; - scalar energy(const scalar rIJMag) const; + scalar forceLookup (const scalar r) const; - scalar energyLookup(const scalar rIJMag) const; + List<Pair<scalar> > energyTable() const; - List<Pair<scalar> > energyTable() const; + List<Pair<scalar> > forceTable() const; + inline bool writeTables() const; - // Friend Operators + virtual scalar unscaledEnergy (const scalar r) const = 0; - inline friend bool operator== - ( - const pairPotential& a, - const pairPotential& b - ); + scalar scaledEnergy(const scalar r) const; - inline friend bool operator!= + scalar energyDerivative ( - const pairPotential& a, - const pairPotential& b - ); + const scalar r, + const bool scaledEnergyDerivative = true + ) const; + const dictionary& pairPotentialProperties() const + { + return pairPotentialProperties_; + } - // IOstream Operators + bool writeEnergyAndForceTables(Ostream& os) const; - friend Ostream& operator<<(Ostream&, const pairPotential&); + //- Read pairPotential dictionary + virtual bool read(const dictionary& pairPotentialProperties) = 0; }; diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialListI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H old mode 100755 new mode 100644 similarity index 78% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialListI.H rename to src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H index 4f897839183ae2779d93e98a5a4f1e493145952a..67dbbfd253e70a7aab8b718714c1e9f3a565027e --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialListI.H +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H @@ -24,27 +24,35 @@ License \*---------------------------------------------------------------------------*/ -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -namespace Foam +inline Foam::scalar Foam::pairPotential::rMin() const { + return rMin_; +} -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline const List<label>& tetherPotentialList::tetherIds() const +inline Foam::scalar Foam::pairPotential::dr() const { - return tetherIds_; + return dr_; } -inline label tetherPotentialList::nTetherPotentials() const +inline Foam::scalar Foam::pairPotential::rCut() const { - return tetherIds_.size(); + return rCut_; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +inline Foam::scalar Foam::pairPotential::rCutSqr() const +{ + return rCutSqr_; +} + -} // End namespace Foam +inline bool Foam::pairPotential::writeTables() const +{ + return writeTables_; +} // ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJonesI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C old mode 100755 new mode 100644 similarity index 65% rename from src/lagrangian/molecule/potentials/pairPotential/derived/lennardJonesI.H rename to src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C index 4e3a1a2f27c63584a5e6e0cdd8e512a4660b94d0..79ab55e737b4ff454e7dc9ab08b669c635910646 --- a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJonesI.H +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,46 +24,30 @@ License \*---------------------------------------------------------------------------*/ -namespace Foam -{ - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline const word& pairPotential::pairPotentialName() const -{ - return pairPotentialName_; -} - - -inline const word& pairPotential::pairPotentialType() const -{ - return pairPotentialType_; -} +#include "pairPotential.H" +#include "IOstreams.H" - -inline scalar pairPotential::sigma() const +bool Foam::pairPotential::writeEnergyAndForceTables(Ostream& os) const { - return sigma_; -} + Info<< "Writing energy and force tables to file for potential " + << name_ << endl; + List< Pair <scalar> > eTab(energyTable()); -inline scalar pairPotential::epsilon() const -{ - return epsilon_; -} + List< Pair <scalar> > fTab(forceTable()); + forAll(eTab, e) + { + os<< eTab[e].first() + << token::SPACE + << eTab[e].second() + << token::SPACE + << fTab[e].second() + << nl; + } -inline scalar pairPotential::rCut() const -{ - return rCut_; -} - - -inline scalar pairPotential::rCutSqr() const -{ - return rCutSqr_; + return os.good(); } -} // End namespace Foam // ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C new file mode 100644 index 0000000000000000000000000000000000000000..b9cbbb1e5488c3a7cc083d6b6dfaf81b3b21f786 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "azizChen.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace pairPotentials +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(azizChen, 0); + +addToRunTimeSelectionTable +( + pairPotential, + azizChen, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +azizChen::azizChen +( + const word& name, + const dictionary& azizChen +) +: + pairPotential(name, azizChen), + azizChenCoeffs_(azizChen.subDict(typeName + "Coeffs")), + epsilon_(readScalar(azizChenCoeffs_.lookup("epsilon"))), + rm_(readScalar(azizChenCoeffs_.lookup("rm"))), + A_(readScalar(azizChenCoeffs_.lookup("A"))), + alpha_(readScalar(azizChenCoeffs_.lookup("alpha"))), + C6_(readScalar(azizChenCoeffs_.lookup("C6"))), + C8_(readScalar(azizChenCoeffs_.lookup("C8"))), + C10_(readScalar(azizChenCoeffs_.lookup("C10"))), + D_(readScalar(azizChenCoeffs_.lookup("D"))), + gamma_(readScalar(azizChenCoeffs_.lookup("gamma"))) +{ + setLookupTables(); +} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +scalar azizChen::unscaledEnergy(const scalar r) const +{ + scalar x = r/rm_; + + scalar F = 1.0; + + if (x < D_) + { + F = exp(-pow(((D_ / x) - 1.0),2)); + } + + return epsilon_ * + ( + A_ * Foam::pow(x, gamma_) * exp(-alpha_ * x) + - ( + (C6_/ Foam::pow(x, 6)) + + (C8_/ Foam::pow(x, 8)) + + (C10_/ Foam::pow(x, 10)) + ) + * F + ); +} + + +bool azizChen::read(const dictionary& azizChen) +{ + pairPotential::read(azizChen); + + azizChenCoeffs_ = azizChen.subDict(typeName + "Coeffs"); + + azizChenCoeffs_.lookup("epsilon") >> epsilon_; + azizChenCoeffs_.lookup("rm") >> rm_; + azizChenCoeffs_.lookup("A") >> A_; + azizChenCoeffs_.lookup("alpha") >> alpha_; + azizChenCoeffs_.lookup("C6") >> C6_; + azizChenCoeffs_.lookup("C8") >> C8_; + azizChenCoeffs_.lookup("C10") >> C10_; + azizChenCoeffs_.lookup("D") >> D_; + azizChenCoeffs_.lookup("gamma") >> gamma_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H new file mode 100644 index 0000000000000000000000000000000000000000..e21dd76645f79016e8e036e91c408c6dcaea6797 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H @@ -0,0 +1,126 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::pairPotentials::azizChen + +Description + + From: + + @article{MA_Aziz_Chen, + author = {R. A. Aziz and H. H. Chen}, + collaboration = {}, + title = {An accurate intermolecular potential for argon}, + publisher = {AIP}, + year = {1977}, + journal = {The Journal of Chemical Physics}, + volume = {67}, + number = {12}, + pages = {5719-5726}, + url = {http://link.aip.org/link/?JCP/67/5719/1}, + doi = {10.1063/1.434827} + } + +SourceFiles + azizChen.C + +\*---------------------------------------------------------------------------*/ + +#ifndef azizChen_H +#define azizChen_H + +#include "pairPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace pairPotentials +{ + +/*---------------------------------------------------------------------------*\ + Class azizChen Declaration +\*---------------------------------------------------------------------------*/ + +class azizChen +: + public pairPotential +{ + // Private data + + dictionary azizChenCoeffs_; + + scalar epsilon_; + scalar rm_; + scalar A_; + scalar alpha_; + scalar C6_; + scalar C8_; + scalar C10_; + scalar D_; + scalar gamma_; + +public: + + //- Runtime type information + TypeName("azizChen"); + + + // Constructors + + //- Construct from components + azizChen + ( + const word& name, + const dictionary& pairPotentialProperties + ); + + + // Destructor + + ~azizChen() + {} + + + // Member Functions + + scalar unscaledEnergy(const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& pairPotentialProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C new file mode 100644 index 0000000000000000000000000000000000000000..8b81ff0c1e4ddda37f32972442433ca43ab61e25 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "lennardJones.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace pairPotentials +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(lennardJones, 0); + +addToRunTimeSelectionTable +( + pairPotential, + lennardJones, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +lennardJones::lennardJones +( + const word& name, + const dictionary& pairPotentialProperties +) +: + pairPotential(name, pairPotentialProperties), + lennardJonesCoeffs_(pairPotentialProperties.subDict(typeName + "Coeffs")), + sigma_(readScalar(lennardJonesCoeffs_.lookup("sigma"))), + epsilon_(readScalar(lennardJonesCoeffs_.lookup("epsilon"))) +{ + setLookupTables(); +} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +scalar lennardJones::unscaledEnergy(const scalar r) const +{ + // (rIJ/sigma)^-2 + scalar ir2 = (sigma_/r)*(sigma_/r); + + // (rIJ/sigma)^-6 + scalar ir6 = ir2*ir2*ir2; + + return 4.0 * epsilon_*(ir6*(ir6 - 1.0)); +} + + +bool lennardJones::read(const dictionary& pairPotentialProperties) +{ + pairPotential::read(pairPotentialProperties); + + lennardJonesCoeffs_ = pairPotentialProperties.subDict(typeName + "Coeffs"); + + lennardJonesCoeffs_.lookup("sigma") >> sigma_; + lennardJonesCoeffs_.lookup("epsilon") >> epsilon_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H new file mode 100644 index 0000000000000000000000000000000000000000..42cc62adbaccb1a7e1709a89c0524c8cc920acdc --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::pairPotentials::lennardJones + +Description + + +SourceFiles + lennardJones.C + +\*---------------------------------------------------------------------------*/ + +#ifndef lennardJones_H +#define lennardJones_H + +#include "pairPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace pairPotentials +{ + +/*---------------------------------------------------------------------------*\ + Class lennardJones Declaration +\*---------------------------------------------------------------------------*/ + +class lennardJones +: + public pairPotential +{ + // Private data + + dictionary lennardJonesCoeffs_; + + scalar sigma_; + scalar epsilon_; + +public: + + //- Runtime type information + TypeName("lennardJones"); + + + // Constructors + + //- Construct from components + lennardJones + ( + const word& name, + const dictionary& pairPotentialProperties + ); + + + // Destructor + + ~lennardJones() + {} + + + // Member Functions + + scalar unscaledEnergy(const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& pairPotentialProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C new file mode 100644 index 0000000000000000000000000000000000000000..4915f2a1fd03dc36a4294a5e665e0baf4d05f1ad --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "maitlandSmith.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace pairPotentials +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(maitlandSmith, 0); + +addToRunTimeSelectionTable +( + pairPotential, + maitlandSmith, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +maitlandSmith::maitlandSmith +( + const word& name, + const dictionary& maitlandSmith +) +: + pairPotential(name, maitlandSmith), + maitlandSmithCoeffs_(maitlandSmith.subDict(typeName + "Coeffs")), + m_(readScalar(maitlandSmithCoeffs_.lookup("m"))), + gamma_(readScalar(maitlandSmithCoeffs_.lookup("gamma"))), + rm_(readScalar(maitlandSmithCoeffs_.lookup("rm"))), + epsilon_(readScalar(maitlandSmithCoeffs_.lookup("epsilon"))) +{ + setLookupTables(); +} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +scalar maitlandSmith::unscaledEnergy(const scalar r) const +{ + scalar nr = (m_ + gamma_*(r/rm_ - 1.0)); + + return epsilon_ + *( + (6.0 / (nr - 6.0))*Foam::pow(r/rm_, -nr) + - (nr / (nr - 6.0))*Foam::pow(r/rm_, -6) + ); +} + + +bool maitlandSmith::read(const dictionary& maitlandSmith) +{ + pairPotential::read(maitlandSmith); + + maitlandSmithCoeffs_ = maitlandSmith.subDict(typeName + "Coeffs"); + + maitlandSmithCoeffs_.lookup("m") >> m_; + maitlandSmithCoeffs_.lookup("gamma") >> gamma_; + maitlandSmithCoeffs_.lookup("rm") >> rm_; + maitlandSmithCoeffs_.lookup("epsilon") >> epsilon_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H new file mode 100644 index 0000000000000000000000000000000000000000..e36db4f7fad8c6b469453d91e76a7993d2750fb3 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H @@ -0,0 +1,127 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::pairPotentials::maitlandSmith + +Description + + From: + + @ARTICLE{MA_Maitland_Smith, + author = {{Maitland}, G.~C. and {Smith}, E.~B.}, + title = {A simplified representation of intermolecular potential energy}, + journal = {Chemical Physics Letters}, + year = 1973, + month = oct, + volume = 22, + pages = {443-446}, + adsurl = {http://adsabs.harvard.edu/abs/1973CPL....22..443M}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} + } + + Parameters for other monoatomics from: + @BOOK{MD_Maitland_Rigby_Smith_Wakeham, + AUTHOR = {Geoffrey C. Maitland and Maurice Rigby and E. Brian Smith and William A. Wakeham}, + TITLE = {Intermolecular Forces: Their Origin and Determination}, + PUBLISHER = {Oxford University Press}, + YEAR = {1981} + } + +SourceFiles + maitlandSmith.C + +\*---------------------------------------------------------------------------*/ + +#ifndef maitlandSmith_H +#define maitlandSmith_H + +#include "pairPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace pairPotentials +{ + +/*---------------------------------------------------------------------------*\ + Class maitlandSmith Declaration +\*---------------------------------------------------------------------------*/ + +class maitlandSmith +: + public pairPotential +{ + // Private data + + dictionary maitlandSmithCoeffs_; + + scalar m_; + scalar gamma_; + scalar rm_; + scalar epsilon_; + +public: + + //- Runtime type information + TypeName("maitlandSmith"); + + + // Constructors + + //- Construct from components + maitlandSmith + ( + const word& name, + const dictionary& pairPotentialProperties + ); + + + // Destructor + + ~maitlandSmith() + {} + + + // Member Functions + + scalar unscaledEnergy(const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& pairPotentialProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace pairPotentials +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C new file mode 100644 index 0000000000000000000000000000000000000000..d6dc4d0fe942b65c757be76ee4eee8d7ba74b9dc --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C @@ -0,0 +1,281 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*----------------------------------------------------------------------------*/ + +#include "pairPotentialList.H" +#include "OFstream.H" +#include "Time.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Foam::pairPotentialList::readPairPotentialDict +( + const dictionary& pairPotentialDict, + const polyMesh& mesh +) +{ + Info<< nl << "Building pair potentials." << endl; + + rCutMax_ = 0.0; + + for (label a = 0; a < nIds(); ++a) + { + word idA = idList_[a]; + + for (label b = a; b < nIds(); ++b) + { + word idB = idList_[b]; + + word pairPotentialName; + + if (a == b) + { + if (pairPotentialDict.found(idA + "-" + idB)) + { + pairPotentialName = idA + "-" + idB; + } + else + { + FatalErrorIn("pairPotentialList::buildPotentials") << nl + << "Pair pairPotential specification subDict " + << idA << "-" << idB << " not found" + << nl << abort(FatalError); + } + } + else + { + if (pairPotentialDict.found(idA + "-" + idB)) + { + pairPotentialName = idA + "-" + idB; + } + + else if (pairPotentialDict.found(idB + "-" + idA)) + { + pairPotentialName = idB + "-" + idA; + } + + else + { + FatalErrorIn("pairPotentialList::buildPotentials") << nl + << "Pair pairPotential specification subDict " + << idA << "-" << idB << " or " + << idB << "-" << idA << " not found" + << nl << abort(FatalError); + } + + if + ( + pairPotentialDict.found(idA+"-"+idB) + && pairPotentialDict.found(idB+"-"+idA) + ) + { + FatalErrorIn("pairPotentialList::buildPotentials") << nl + << "Pair pairPotential specification subDict " + << idA << "-" << idB << " and " + << idB << "-" << idA << " found multiple definition" + << nl << abort(FatalError); + } + } + + (*this).set + ( + pairPotentialIndex(a, b), + pairPotential::New + ( + pairPotentialName, + pairPotentialDict.subDict(pairPotentialName) + ) + ); + + if ((*this)[pairPotentialIndex(a, b)].rCut() > rCutMax_) + { + rCutMax_ = (*this)[pairPotentialIndex(a, b)].rCut(); + } + + if ((*this)[pairPotentialIndex(a, b)].writeTables()) + { + OFstream ppTabFile(mesh.time().path()/pairPotentialName); + + if + ( + !(*this)[pairPotentialIndex(a, b)].writeEnergyAndForceTables + ( + ppTabFile + ) + ) + { + FatalErrorIn("pairPotentialList::readPairPotentialDict") + << "Failed writing to " + << ppTabFile.name() << nl + << abort(FatalError); + } + } + } + } + + rCutMaxSqr_ = rCutMax_*rCutMax_; +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::pairPotentialList::pairPotentialList() +: + PtrList<pairPotential>(), + idList_() +{} + +Foam::pairPotentialList::pairPotentialList +( + const dictionary& idListDict, + const dictionary& pairPotentialDict, + const polyMesh& mesh +) +: + PtrList<pairPotential>(), + idList_() +{ + buildPotentials(idListDict, pairPotentialDict, mesh); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::pairPotentialList::~pairPotentialList() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::pairPotentialList::buildPotentials +( + const dictionary& idListDict, + const dictionary& pairPotentialDict, + const polyMesh& mesh +) +{ + idList_ = List<word>(idListDict.lookup("idList")); + + setSize(((idList_.size()*(idList_.size() + 1))/2)); + + readPairPotentialDict(pairPotentialDict, mesh); +} + + +const Foam::pairPotential& Foam::pairPotentialList::pairPotentialFunction +( + const label a, + const label b +) const +{ + return (*this)[pairPotentialIndex (a, b)]; +} + + +bool Foam::pairPotentialList::rCutSqr +( + const label a, + const label b, + const scalar rIJMagSqr +) const +{ + if (rIJMagSqr <= rCutSqr (a, b)) + { + return true; + } + else + { + return false; + } +} + + +Foam::scalar Foam::pairPotentialList::rMin +( + const label a, + const label b +) const +{ + return (*this)[pairPotentialIndex (a, b)].rMin(); +} + + +Foam::scalar Foam::pairPotentialList::dr +( + const label a, + const label b +) const +{ + return (*this)[pairPotentialIndex (a, b)].dr(); +} + + +Foam::scalar Foam::pairPotentialList::rCutSqr +( + const label a, + const label b +) const +{ + return (*this)[pairPotentialIndex (a, b)].rCutSqr(); +} + + +Foam::scalar Foam::pairPotentialList::rCut +( + const label a, + const label b +) const +{ + return (*this)[pairPotentialIndex (a, b)].rCut(); +} + + +Foam::scalar Foam::pairPotentialList::force +( + const label a, + const label b, + const scalar rIJMag +) const +{ + scalar f = (*this)[pairPotentialIndex (a, b)].forceLookup(rIJMag); + + return f; +} + + +Foam::scalar Foam::pairPotentialList::energy +( + const label a, + const label b, + const scalar rIJMag +) const +{ + scalar e = (*this)[pairPotentialIndex (a, b)].energyLookup(rIJMag); + + return e; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.H b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H old mode 100755 new mode 100644 similarity index 76% rename from src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.H rename to src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H index 910ab5ab38667a2c2a152d677aaaf30f5ca847c7..92526cf4792c40cd8a71062a59300b722bd1b74a --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.H +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H @@ -36,7 +36,10 @@ SourceFiles #ifndef pairPotentialList_H #define pairPotentialList_H +#include "PtrList.H" +#include "word.H" #include "pairPotential.H" +#include "polyMesh.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,12 +52,15 @@ namespace Foam class pairPotentialList : - public List<pairPotential> + public PtrList<pairPotential> { // Private data - label nIds_; + List<word> idList_; + + scalar rCutMax_; + scalar rCutMaxSqr_; // Private Member Functions @@ -64,53 +70,54 @@ class pairPotentialList const label b ) const; + void readPairPotentialDict + ( + const dictionary& pairPotentialDict, + const polyMesh& mesh + ); + //- Disallow default bitwise assignment void operator=(const pairPotentialList&); //- Disallow default bitwise copy construct pairPotentialList(const pairPotentialList&); - public: // Constructors - //- Construct null pairPotentialList(); - //- Construct from number of Ids + //- Construct from idList and potental dictionaries pairPotentialList ( - const label nIds + const dictionary& idListDict, + const dictionary& pairPotentialDict, + const polyMesh& mesh ); - //- Construct from components - pairPotentialList - ( - const List<pairPotential>& pairPotentials, - const label nIds - ); - - // Destructor ~pairPotentialList(); - // Member Functions + + void buildPotentials + ( + const dictionary& idListDict, + const dictionary& pairPotentialDict, + const polyMesh& mesh + ); // Access + inline const List<word>& idList() const; + inline label nIds() const; - void setSizeAndNIds (const label); + inline scalar rCutMax() const; - void addPotential - ( - const label a, - const label b, - const pairPotential& pot - ); + inline scalar rCutMaxSqr() const; const pairPotential& pairPotentialFunction ( @@ -126,17 +133,13 @@ public: const scalar rIJMagSqr ) const; - scalar rCutSqr - ( - const label a, - const label b - ) const; + scalar rMin (const label a, const label b) const; - scalar rCut - ( - const label a, - const label b - ) const; + scalar dr (const label a, const label b) const; + + scalar rCutSqr (const label a, const label b) const; + + scalar rCut (const label a, const label b) const; scalar force ( diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H new file mode 100644 index 0000000000000000000000000000000000000000..1a9ff953b2de7d0a896b539c01dfae45e78d0f76 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +inline Foam::label Foam::pairPotentialList::pairPotentialIndex +( + const label a, + const label b +) const +{ + label index; + + if (a < b) + { + index = a*(2*nIds() - a - 1)/2 + b; + } + + else + { + index = b*(2*nIds() - b - 1)/2 + a; + } + + if (index > size() - 1) + { + FatalErrorIn("Foam::pairPotentialList::pairPotentialIndex ") + << "Attempting to access a pairPotential with too high an index." + << nl << "a = " << a << ", b = " << b << ", index = " << index + << nl << "max index = " << size() - 1 + << nl << abort(FatalError); + } + + return index; +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::label Foam::pairPotentialList::nIds() const +{ + return idList_.size(); +} + + +inline const Foam::List<Foam::word>& Foam::pairPotentialList::idList() const +{ + return idList_; +} + + +inline Foam::scalar Foam::pairPotentialList::rCutMax() const +{ + return rCutMax_; +} + + +inline Foam::scalar Foam::pairPotentialList::rCutMaxSqr() const +{ + return rCutMaxSqr_; +} + + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C new file mode 100644 index 0000000000000000000000000000000000000000..d9aaf566fca94cbf8ef45afce4d318c28d382cca --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + tetherPotential + +\*---------------------------------------------------------------------------*/ + +#include "tetherPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +autoPtr<tetherPotential> tetherPotential::New +( + const word& name, + const dictionary& tetherPotentialProperties +) +{ + word tetherPotentialTypeName(tetherPotentialProperties.lookup("tetherPotential")); + + Info<< nl << "Selecting tether potential " + << tetherPotentialTypeName << " for " + << name << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(tetherPotentialTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "tetherPotential::New()" + ) << "Unknown tetherPotential type " + << tetherPotentialTypeName << endl << endl + << "Valid tetherPotentials are : " << endl + << dictionaryConstructorTablePtr_->toc() + << exit(FatalError); + } + + return autoPtr<tetherPotential> + (cstrIter()(name, tetherPotentialProperties)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C new file mode 100644 index 0000000000000000000000000000000000000000..3e829493a84803ccf633e5a1f151bcb8d8b04c63 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "tetherPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(tetherPotential, 0); +defineRunTimeSelectionTable(tetherPotential, dictionary); + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::tetherPotential::tetherPotential +( + const word& name, + const dictionary& tetherPotentialProperties +) +: + name_(name), + tetherPotentialProperties_(tetherPotentialProperties) +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + + +bool Foam::tetherPotential::read(const dictionary& tetherPotentialProperties) +{ + tetherPotentialProperties_ = tetherPotentialProperties; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H new file mode 100644 index 0000000000000000000000000000000000000000..48d6d2201a85f86f5b21a3fd751f8c5605aa5fb6 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::tetherPotential + +Description + +SourceFiles + tetherPotential.C + newTetherPotential.C + +\*---------------------------------------------------------------------------*/ + +#ifndef tetherPotential_H +#define tetherPotential_H + +#include "IOdictionary.H" +#include "typeInfo.H" +#include "runTimeSelectionTables.H" +#include "autoPtr.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class tetherPotential Declaration +\*---------------------------------------------------------------------------*/ + +class tetherPotential +{ + +protected: + + // Protected data + + word name_; + dictionary tetherPotentialProperties_; + + + // Private Member Functions + + //- Disallow copy construct + tetherPotential(const tetherPotential&); + + //- Disallow default bitwise assignment + void operator=(const tetherPotential&); + + +public: + + //- Runtime type information + TypeName("tetherPotential"); + + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + tetherPotential, + dictionary, + ( + const word& name, + const dictionary& tetherPotentialProperties + ), + (name, tetherPotentialProperties) + ); + + + // Selectors + + //- Return a reference to the selected viscosity model + static autoPtr<tetherPotential> New + ( + const word& name, + const dictionary& tetherPotentialProperties + ); + + + // Constructors + + //- Construct from components + tetherPotential + ( + const word& name, + const dictionary& tetherPotentialProperties + ); + + + // Destructor + + virtual ~tetherPotential() + {} + + + // Member Functions + + virtual scalar energy (const scalar r) const = 0; + + virtual scalar force (const scalar r) const = 0; + + const dictionary& tetherPotentialProperties() const + { + return tetherPotentialProperties_; + } + + //- Read tetherPotential dictionary + virtual bool read(const dictionary& tetherPotentialProperties) = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C new file mode 100644 index 0000000000000000000000000000000000000000..8c07d251d3cb1487a7ee010f19e373acc70e8231 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "harmonicSpring.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace tetherPotentials +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(harmonicSpring, 0); + +addToRunTimeSelectionTable +( + tetherPotential, + harmonicSpring, + dictionary +); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +harmonicSpring::harmonicSpring +( + const word& name, + const dictionary& tetherPotentialProperties +) +: + tetherPotential(name, tetherPotentialProperties), + harmonicSpringCoeffs_ + ( + tetherPotentialProperties.subDict(typeName + "Coeffs") + ), + springConstant_(readScalar(harmonicSpringCoeffs_.lookup("springConstant"))) +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +scalar harmonicSpring::energy(const scalar r) const +{ + return 0.5*springConstant_*r*r; +} + + +scalar harmonicSpring::force(const scalar r) const +{ + return -springConstant_*r; +} + + +bool harmonicSpring::read(const dictionary& tetherPotentialProperties) +{ + tetherPotential::read(tetherPotentialProperties); + + harmonicSpringCoeffs_ = + tetherPotentialProperties.subDict(typeName + "Coeffs"); + + harmonicSpringCoeffs_.lookup("springConstant") >> springConstant_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace tetherPotentials +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H new file mode 100644 index 0000000000000000000000000000000000000000..d616e69fcbde45ab28b1bccfe0fefe12caffb0b3 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::tetherPotentials::harmonicSpring + +Description + + +SourceFiles + harmonicSpring.C + +\*---------------------------------------------------------------------------*/ + +#ifndef harmonicSpring_H +#define harmonicSpring_H + +#include "tetherPotential.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace tetherPotentials +{ + +/*---------------------------------------------------------------------------*\ + Class harmonicSpring Declaration +\*---------------------------------------------------------------------------*/ + +class harmonicSpring +: + public tetherPotential +{ + // Private data + + dictionary harmonicSpringCoeffs_; + + scalar springConstant_; + + +public: + + //- Runtime type information + TypeName("harmonicSpring"); + + + // Constructors + + //- Construct from components + harmonicSpring + ( + const word& name, + const dictionary& tetherPotentialProperties + ); + + + // Destructor + + ~harmonicSpring() + {} + + + // Member Functions + + scalar energy(const scalar r) const; + + scalar force(const scalar r) const; + + //- Read transportProperties dictionary + bool read(const dictionary& tetherPotentialProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace tetherPotentials +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C new file mode 100644 index 0000000000000000000000000000000000000000..7baa584b30da4941d574fd282876fdb22d8340e3 --- /dev/null +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "restrainedHarmonicSpring.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace tetherPotentials +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(restrainedHarmonicSpring, 0); + +addToRunTimeSelectionTable +( + tetherPotential, + restrainedHarmonicSpring, + dictionary +); + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +restrainedHarmonicSpring::restrainedHarmonicSpring +( + const word& name, + const dictionary& tetherPotentialProperties +) +: + tetherPotential(name, tetherPotentialProperties), + restrainedHarmonicSpringCoeffs_ + ( + tetherPotentialProperties.subDict(typeName + "Coeffs") + ), + springConstant_ + ( + readScalar(restrainedHarmonicSpringCoeffs_.lookup("springConstant")) + ), + rR_ + ( + readScalar(restrainedHarmonicSpringCoeffs_.lookup("rR")) + ) +{} + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +scalar restrainedHarmonicSpring::energy(const scalar r) const +{ + if (r < rR_) + { + return 0.5 * springConstant_ * r * r; + } + else + { + return 0.5 * springConstant_ * rR_ * rR_ + + springConstant_ * rR_ * (r - rR_); + } +} + +scalar restrainedHarmonicSpring::force(const scalar r) const +{ + if (r < rR_) + { + return -springConstant_ * r; + } + else + { + return -springConstant_ * rR_; + } + +} + +bool restrainedHarmonicSpring::read(const dictionary& tetherPotentialProperties) +{ + tetherPotential::read(tetherPotentialProperties); + + restrainedHarmonicSpringCoeffs_ = + tetherPotentialProperties.subDict(typeName + "Coeffs"); + + restrainedHarmonicSpringCoeffs_.lookup("springConstant") >> springConstant_; + restrainedHarmonicSpringCoeffs_.lookup("rR") >> rR_; + + return true; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace tetherPotentials +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H old mode 100755 new mode 100644 similarity index 57% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.H rename to src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H index afa9a35e69d1ba4974a1688bdfc9c17036248765..46441d131c81e5d1dc6fb9a370a8aded082288d6 --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.H +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,103 +23,85 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::tetherPotential + Foam::tetherPotentials::restrainedHarmonicSpring Description + SourceFiles - tetherPotentialI.H - tetherPotential.C + restrainedHarmonicSpring.C \*---------------------------------------------------------------------------*/ -#ifndef tetherPotential_H -#define tetherPotential_H +#ifndef restrainedHarmonicSpring_H +#define restrainedHarmonicSpring_H -#include "vector.H" +#include "tetherPotential.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +namespace tetherPotentials +{ /*---------------------------------------------------------------------------*\ - Class tetherPotential Declaration + Class restrainedHarmonicSpring Declaration \*---------------------------------------------------------------------------*/ -class tetherPotential +class restrainedHarmonicSpring +: + public tetherPotential { // Private data - // At the moment this is hard coded to be a "harmonicSpring" - // potential. In future use templated classes virtual functions, - // function pointers and all kinds of good stuff to make this a - // generic tether force, - - word tetherPotentialName_; - - word tetherPotentialType_; + dictionary restrainedHarmonicSpringCoeffs_; scalar springConstant_; + scalar rR_; + public: - // Constructors + //- Runtime type information + TypeName("restrainedHarmonicSpring"); + - //- Construct null - tetherPotential(); + // Constructors //- Construct from components - tetherPotential + restrainedHarmonicSpring ( - const word& tetherPotentialName, - const word& tetherPotentialType, - const scalar springConstant_ + const word& name, + const dictionary& tetherPotentialProperties ); // Destructor - virtual ~tetherPotential(); + ~restrainedHarmonicSpring() + {} // Member Functions - // Access - - inline const word& tetherPotentialName() const; - - inline const word& tetherPotentialType() const; + scalar energy(const scalar r) const; - inline scalar springConstant() const; + scalar force(const scalar r) const; - scalar force(const scalar rITMag) const; - - scalar energy(const scalar rITMag) const; - - - // Write - - virtual void write(Ostream&) const; - - - // IOstream Operators - - friend Ostream& operator<<(Ostream&, const tetherPotential&); + //- Read transportProperties dictionary + bool read(const dictionary& tetherPotentialProperties); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace tetherPotentials } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "tetherPotentialI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - #endif // ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C old mode 100755 new mode 100644 similarity index 50% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.C rename to src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C index ac32daf60fa662f827d64e189f56469e721a8c49..2bec6475646756a1bdb0aa2d6dea44bce5e8e9d0 --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.C +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C @@ -26,29 +26,57 @@ License #include "tetherPotentialList.H" -namespace Foam -{ - // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -label tetherPotentialList::tetherPotentialIndex(const label a) +void Foam::tetherPotentialList::readTetherPotentialDict +( + const dictionary& tetherPotentialDict, + const List<word>& idList, + const List<label>& tetherIds +) { - label index(findIndex(tetherIds_,a)); - - if (index == -1) + if (!tetherIds.size()) { - FatalErrorIn - ( - "Foam::tetherPotentialList::tetherPotentialIndex(const label a)" - ) - << "Attempting to access a tetherPotential with an unknown id" - << abort(FatalError); - - return 0; + Info<< nl << "No tethered molecules found." << endl; + + idMap_.setSize(0); } else { - return index; + Info<< nl << "Building tether potentials." << endl; + + idMap_ = List<label>(idList.size(), -1); + + label tetherMapIndex = 0; + + forAll(tetherIds, t) + { + const label tetherId = tetherIds[t]; + + word tetherPotentialName = idList[tetherId]; + + if (!tetherPotentialDict.found(tetherPotentialName)) + { + FatalErrorIn("tetherPotentialList::readTetherPotentialDict") + << nl << "tether potential specification subDict " + << tetherPotentialName << " not found" + << abort(FatalError); + } + + this->set + ( + tetherMapIndex, + tetherPotential::New + ( + tetherPotentialName, + tetherPotentialDict.subDict(tetherPotentialName) + ) + ); + + idMap_[tetherId] = tetherMapIndex; + + tetherMapIndex++; + } } } @@ -57,52 +85,62 @@ label tetherPotentialList::tetherPotentialIndex(const label a) Foam::tetherPotentialList::tetherPotentialList() : - List<tetherPotential> () + PtrList<tetherPotential>(), + idMap_() {} Foam::tetherPotentialList::tetherPotentialList ( - const List<label> tetherIds + const dictionary& idListDict, + const dictionary& tetherPotentialDict, + const List<label>& tetherIds ) : - List<tetherPotential> (tetherIds.size()), - tetherIds_(tetherIds_) -{} + PtrList<tetherPotential>(), + idMap_() +{ + buildPotentials(idListDict, tetherPotentialDict, tetherIds); +} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -tetherPotentialList::~tetherPotentialList() +Foam::tetherPotentialList::~tetherPotentialList() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void tetherPotentialList::setSizeAndTetherIds (const List<label>& tetherIds) +void Foam::tetherPotentialList::buildPotentials +( + const dictionary& idListDict, + const dictionary& tetherPotentialDict, + const List<label>& tetherIds +) { - tetherIds_ = tetherIds; setSize(tetherIds.size()); -} + const List<word>& idList = List<word>(idListDict.lookup("idList")); -void tetherPotentialList::addPotential -( - const label a, - const tetherPotential& pot -) -{ - (*this)[tetherPotentialIndex (a)] = pot; + readTetherPotentialDict(tetherPotentialDict, idList, tetherIds); } -tetherPotential& tetherPotentialList::tetherPotentialFunction (const label a) +const Foam::tetherPotential& Foam::tetherPotentialList::tetherPotentialFunction +( + const label a +) const { return (*this)[tetherPotentialIndex (a)]; } -scalar tetherPotentialList::force (const label a, const scalar rITMag) +Foam::scalar Foam::tetherPotentialList::force +( + const label a, + const scalar rITMag +) const { scalar f = (*this)[tetherPotentialIndex (a)].force(rITMag); @@ -110,37 +148,17 @@ scalar tetherPotentialList::force (const label a, const scalar rITMag) } -scalar tetherPotentialList::energy (const label a, const scalar rITMag) +Foam::scalar Foam::tetherPotentialList::energy +( + const label a, + const scalar rITMag +) const { scalar e = (*this)[tetherPotentialIndex (a)].energy(rITMag); return e; } - -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - -void tetherPotentialList::operator=(const tetherPotentialList& rhs) -{ - // Check for assignment to self - if (this == &rhs) - { - FatalErrorIn - ( - "Foam::tetherPotentialList::operator=" - "(const Foam::tetherPotentialList&)" - ) << "Attempted assignment to self" - << abort(FatalError); - } - - List<tetherPotential>::operator=(rhs); - - tetherIds_ = rhs.tetherIds(); -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace Foam - // ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H old mode 100755 new mode 100644 similarity index 65% rename from src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.H rename to src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H index ebd24e57f00f6a916cfc8d8b33dd3caa31989e41..f8e031d9aabda7e411e9350ac0f17da8d60c042a --- a/src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.H +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H @@ -28,7 +28,6 @@ Class Description SourceFiles - tetherPotentialListI.H tetherPotentialList.C \*---------------------------------------------------------------------------*/ @@ -36,7 +35,8 @@ SourceFiles #ifndef tetherPotentialList_H #define tetherPotentialList_H -#include "ListOps.H" +#include "PtrList.H" +#include "word.H" #include "tetherPotential.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -45,21 +45,33 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class tetherPotentialList Declaration + Class tetherPotentialList Declaration \*---------------------------------------------------------------------------*/ class tetherPotentialList : - public List<tetherPotential> + public PtrList<tetherPotential> { // Private data - List<label> tetherIds_; - + List<label> idMap_; // Private Member Functions - label tetherPotentialIndex(const label a); + inline label tetherPotentialIndex + ( + const label a + ) const; + + void readTetherPotentialDict + ( + const dictionary& tetherPotentialDict, + const List<word>& idList, + const List<label>& tetherIds + ); + + //- Disallow default bitwise assignment + void operator=(const tetherPotentialList&); //- Disallow default bitwise copy construct tetherPotentialList(const tetherPotentialList&); @@ -69,44 +81,49 @@ public: // Constructors - //- Construct null tetherPotentialList(); - //- Construct from list of tetherIDs - tetherPotentialList(const List<label> tetherIds); - + //- Construct from idList and potental dictionaries + tetherPotentialList + ( + const dictionary& idListDict, + const dictionary& tetherPotentialDict, + const List<label>& tetherIds + ); // Destructor ~tetherPotentialList(); - // Member Functions - // Access + void buildPotentials + ( + const dictionary& idListDict, + const dictionary& tetherPotentialDict, + const List<label>& tetherIds + ); - inline const List<label>& tetherIds() const; + // Access - inline label nTetherPotentials() const; + inline const List<word>& idMap() const; - void setSizeAndTetherIds (const List<label>&); + const tetherPotential& tetherPotentialFunction + ( + const label a + ) const; - void addPotential + scalar force ( const label a, - const tetherPotential& pot - ); + const scalar rIJMag + ) const; - tetherPotential& tetherPotentialFunction (const label a); - - scalar force (const label a, const scalar rITMag); - - scalar energy (const label a, const scalar rITMag); - - - // Member Operators - - void operator=(const tetherPotentialList&); + scalar energy + ( + const label a, + const scalar rIJMag + ) const; }; diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialListI.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H old mode 100755 new mode 100644 similarity index 77% rename from src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialListI.H rename to src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H index d58fa545df485ccc2984f7aa03fa586155a02372..7b461b652e824c9765e9f6d5bf5442315a190c73 --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialListI.H +++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H @@ -26,33 +26,28 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline Foam::label Foam::pairPotentialList::pairPotentialIndex +inline Foam::label Foam::tetherPotentialList::tetherPotentialIndex ( - const label a, - const label b + const label a ) const { - label index; + label index = idMap_[a]; - if (a < b) + if (index == -1 || a >= idMap_.size()) { - index = a*(2*nIds_ - a - 1)/2 + b; + FatalErrorIn + ( + "Foam::tetherPotentialList::tetherPotentialIndex(const label a)" + ) + << "Attempting to access an undefined tetherPotential." + << abort(FatalError); + + return -1; } - else { - index = b*(2*nIds_ - b - 1)/2 + a; + return index; } - - return index; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -inline Foam::label Foam::pairPotentialList::nIds() const -{ - return nIds_; } diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellsFoundInRange.H b/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellsFoundInRange.H deleted file mode 100755 index 16c58efea3af289a1d8b518ece6b14225cdf8683..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellsFoundInRange.H +++ /dev/null @@ -1,52 +0,0 @@ -forAll (pointsOnThisSegment, pS) -{ - const point& ptP = mesh_.points()[pointsOnThisSegment[pS]]; - - // Assessing real cells in range is only required on the 1st iteration - // because they do not change from iteration to iteration. - - if (iterationNo == 0) - { - forAll (mesh_.points(), pointIIndex) - { - - // Compare separation of ptP to all other points in the mesh, - // add unique reference to cell with any point within rCutMax_ - // to realCellsFoundInRange. - - const point& ptI(mesh_.points()[pointIIndex]); - - if (magSqr(ptP - ptI) <= rCutMaxSqr) - { - const labelList& ptICells(mesh_.pointCells()[pointIIndex]); - - forAll(ptICells, pIC) - { - const label cellI(ptICells[pIC]); - - if(findIndex(realCellsFoundInRange, cellI) == -1) - { - realCellsFoundInRange.append(cellI); - } - } - } - } - } - - forAll(referredInteractionList, rIL) - { - const vectorList& refCellPoints = - referredInteractionList[rIL].vertexPositions(); - - forAll(refCellPoints, rCP) - { - if (magSqr(ptP - refCellPoints[rCP]) <= rCutMaxSqr) - { - if(findIndex(referredCellsFoundInRange, rIL) == -1) - { - referredCellsFoundInRange.append(rIL); - } - } - } - } -} diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadIdList.H b/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadIdList.H deleted file mode 100755 index 8ddc55ed45dcbfe4e545976f849d44bf0d81dcd0..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadIdList.H +++ /dev/null @@ -1,14 +0,0 @@ -IOdictionary idListDict -( - IOobject - ( - "idList", - mesh_.time().constant(), - mesh_, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) -); - -idList_ = List<word>(idListDict.lookup("idList")); - diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDParameters.H b/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDParameters.H deleted file mode 100755 index f6d090bfb8c382da5d1b2d75da03e3bda06e1c53..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDParameters.H +++ /dev/null @@ -1,6 +0,0 @@ - -# include "moleculeCloudReadMDSolution.H" - -# include "moleculeCloudReadIdList.H" - -# include "moleculeCloudReadPotentials.H" diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDSolution.H b/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDSolution.H deleted file mode 100755 index 07c6b30ff04bf4cac42342ad3e882a5c66499c15..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDSolution.H +++ /dev/null @@ -1,27 +0,0 @@ -Info<< nl << "Reading MD solution parameters:" << endl; - -IOdictionary mdSolution -( - IOobject - ( - "mdSolution", - mesh_.time().system(), - mesh_, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) -); - -integrationMethod_ = integrationMethodNames_.read -( - mdSolution.lookup("integrationMethod") -); -Info<< "integrationMethod =\t\t\t" - << integrationMethodNames_[integrationMethod_] << endl; - -potentialEnergyLimit_ = readScalar(mdSolution.lookup("potentialEnergyLimit")); -Info<< "potentialEnergyLimit =\t\t\t" << potentialEnergyLimit_ << endl; - -guardRadius_ = readScalar(mdSolution.lookup("guardRadius")); -Info<< "guardRadius =\t\t\t\t" << guardRadius_ << endl; - diff --git a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadPotentials.H b/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadPotentials.H deleted file mode 100755 index b1bdb2045cce399db459b4b3eab29ede64bebacb..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadPotentials.H +++ /dev/null @@ -1,327 +0,0 @@ -IOdictionary potentialDict -( - IOobject - ( - "potentialDict", - mesh_.time().system(), - mesh_, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) -); - -// **************************************************************************** -// Pair potentials - -Info << nl << "Creating pair potentials:" << nl << endl; - -if (!potentialDict.found("pair")) -{ - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "pair potential specification subDict not found" - << abort(FatalError); -} - -const dictionary& pairDict = potentialDict.subDict("pair"); - -pairPotentials_.setSizeAndNIds(nIds()); - -label a; - -label b; - -rCutMax_ = 0.0; - -for -( - a = 0; - a < idList_.size(); - ++a -) -{ - word idA = idList_[a]; - - for - ( - b = a; - b < idList_.size(); - ++b - ) - { - word idB = idList_[b]; - - word pairPotentialName; - - if (a==b) - { - - - if(pairDict.found(idA+"-"+idB)) - { - pairPotentialName = idA+"-"+idB; - } - - else - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "Pair pairPotential specification subDict " - << idA+"-"+idB << " not found" - << abort(FatalError); - } - } - - else - { - if(pairDict.found(idA+"-"+idB)) - { - pairPotentialName = idA+"-"+idB; - } - - else if(pairDict.found(idB+"-"+idA)) - { - pairPotentialName = idB+"-"+idA; - } - - else - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "Pair pairPotential specification subDict " - << idA+"-"+idB << " or " << idB+"-"+idA << " not found" - << abort(FatalError); - } - - if - ( - pairDict.found(idA+"-"+idB) - && pairDict.found(idB+"-"+idA) - ) - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "Pair pairPotential specification subDict " - << idA+"-"+idB << " and " - << idB+"-"+idA << " found - multiple definition" - << abort(FatalError); - } - } - - word pairPotentialType - ( - pairDict.subDict(pairPotentialName).lookup("potentialType") - ); - - if - ( - pairPotentialType == "maitlandSmithTabulated" - ) - { - scalar rCut = readScalar - ( - pairDict.subDict(pairPotentialName).lookup("rCut") - ); - - if(rCut > rCutMax_) - { - rCutMax_ = rCut; - } - - pairPotentials_.addPotential - ( - a, - b, - pairPotential - ( - pairDict.subDict(pairPotentialName) - ) - ); - } - else - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "pairPotentialType "<< pairPotentialType << " unknown" - << abort(FatalError); - } - - Info << pairPotentialName << ": " - << pairPotentials_.pairPotentialFunction(a,b) << endl; - } -} - -rCutMax_ += guardRadius_; - -rCutMaxSqr_ = rCutMax_ * rCutMax_; - -Info << nl << "rCutMax + guardRadius = " << rCutMax_ << endl; - -if (potentialDict.found("removalOrder")) -{ - List<word> remOrd = potentialDict.lookup("removalOrder"); - - removalOrder_.setSize(remOrd.size()); - - forAll(removalOrder_, rO) - { - removalOrder_[rO] = findIndex(idList_, remOrd[rO]); - } -} - -// **************************************************************************** -// Tether potentials - -iterator mol(this->begin()); - -DynamicList<label> tetherIds; - -for -( - mol = this->begin(); - mol != this->end(); - ++mol -) -{ - if (mol().tethered()) - { - if (findIndex(tetherIds, mol().id()) == -1) - { - tetherIds.append - ( - mol().id() - ); - } - } -} - -if (Pstream::parRun()) -{ - List< labelList > allTetherIds(Pstream::nProcs()); - - allTetherIds[Pstream::myProcNo()] = tetherIds; - - Pstream::gatherList(allTetherIds); - - if (Pstream::master()) - { - DynamicList<label> globalTetherIds; - - forAll(allTetherIds, procN) - { - const labelList& procNTetherIds = allTetherIds[procN]; - - forAll(procNTetherIds, id) - { - if (findIndex(globalTetherIds, procNTetherIds[id]) == -1) - { - globalTetherIds.append - ( - procNTetherIds[id] - ); - } - } - } - - globalTetherIds.shrink(); - - tetherIds = globalTetherIds; - } - - Pstream::scatter(tetherIds); -} - -tetherIds.shrink(); - -if (tetherIds.size()) -{ - Info << nl << "Creating tether potentials:" << endl; - - if (!potentialDict.found("tether")) - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "tether potential specification subDict not found" - << abort(FatalError); - } - - const dictionary& tetherDict = potentialDict.subDict("tether"); - - tetherPotentials_.setSizeAndTetherIds(tetherIds); - - forAll (tetherIds, tid) - { - word tetherPotentialName = idList_[tetherIds[tid]]; - - if (!tetherDict.found(tetherPotentialName)) - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "tether potential specification subDict " - << tetherPotentialName << " not found" - << abort(FatalError); - } - - Info << nl << tetherPotentialName << endl; - - word tetherPotentialType = - tetherDict.subDict(tetherPotentialName).lookup("potentialType"); - - if - ( - tetherPotentialType == "harmonicSpring" - ) - { - - Info << "\tpotentialType = " << tetherPotentialType << endl; - - scalar springConstant - ( - readScalar - ( - tetherDict.subDict(tetherPotentialName).lookup - ( - "springConstant" - ) - ) - ); - - Info << "\tspringConstant = " << springConstant << endl; - - tetherPotentials_.addPotential - ( - tetherIds[tid], - tetherPotential - ( - tetherPotentialName, - tetherPotentialType, - springConstant - ) - ); - } - - else - { - FatalErrorIn("moleculeCloudReadPotentials.H") << nl - << "tetherPotentialType " - << tetherPotentialType << " unknown" - << abort(FatalError); - } - } -} - -// **************************************************************************** -// External Forces - -gravity_ = vector::zero; - -if (potentialDict.found("external")) -{ - - Info << nl << "Reading external forces:" << endl; - - const dictionary& externalDict = potentialDict.subDict("external"); - - // ************************************************************************ - // gravity - - if (externalDict.found("gravity")) - { - gravity_ = externalDict.lookup("gravity"); - } -} - -Info << nl << tab << "gravity = " << gravity_ << endl; diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.C b/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.C deleted file mode 100755 index f7c96414e4282553fe26bfe9dfd39318035ddcde..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.C +++ /dev/null @@ -1,308 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -\*----------------------------------------------------------------------------*/ - -#include "pairPotential.H" - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -void Foam::pairPotential::setLookupTables() -{ - label N = label((rCut_ - rMin_)/dr_) + 1; - - forceLookup_.setSize(N); - - energyLookup_.setSize(N); - - forAll(forceLookup_, k) - { - forceLookup_[k] = force(k*dr_ + rMin_); - - energyLookup_[k] = energy(k*dr_ + rMin_); - } - - forceLookup_[N-1] = 0.0; - energyLookup_[N-1] = 0.0; -} - - -void Foam::pairPotential::setConstants() -{ - scalar nr = n(rCut_); - - u_at_rCut_ = - epsilon_ - *( - (6.0/(nr - 6.0))*Foam::pow( (rCut_/rm_), -nr) - - (nr/(nr - 6.0))*Foam::pow( (rCut_/rm_), -6) - ); - - du_by_dr_at_rCut_ = - -6.0 * epsilon_ * gamma_ - *( - Foam::pow( (rCut_/rm_),-nr) - *( - (rCut_/rm_) - *(1.0 / (nr - 6.0) + log(rCut_ / rm_) + 1.0) - + (m_/gamma_) - - 1.0 - ) - - Foam::pow((rCut_/rm_),-6.0) - *(rCut_ / ( (nr - 6.0) * rm_) + (nr/gamma_)) - ) - /(rCut_*(nr - 6.0)); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::pairPotential::pairPotential() -{} - - -Foam::pairPotential::pairPotential(const dictionary& pPDict) -: - forceLookup_(), - energyLookup_(), - m_(), - gamma_(), - rm_(), - epsilon_(), - rCut_(), - rCutSqr_(), - u_at_rCut_(), - du_by_dr_at_rCut_(), - rMin_(), - dr_() -{ - - m_ = readScalar(pPDict.lookup("m")); - - gamma_ = readScalar(pPDict.lookup("gamma")); - - rm_ = readScalar(pPDict.lookup("rm")); - - epsilon_ = readScalar(pPDict.lookup("epsilon")); - - rCut_ = readScalar(pPDict.lookup("rCut")); - - rCutSqr_ = rCut_ * rCut_; - - rMin_ = readScalar(pPDict.lookup("rMin")); - - dr_ = readScalar(pPDict.lookup("dr")); - - setConstants(); - - setLookupTables(); -} - - -Foam::pairPotential::pairPotential -( - const scalar m, - const scalar gamma, - const scalar rm, - const scalar epsilon, - const scalar rCut, - const scalar rMin, - const scalar dr -) -: - forceLookup_(), - energyLookup_(), - m_(m), - gamma_(gamma), - rm_(rm), - epsilon_(epsilon), - rCut_(rCut), - rCutSqr_(rCut*rCut), - u_at_rCut_(), - du_by_dr_at_rCut_(), - rMin_(rMin), - dr_(dr) -{ - setConstants(); - - setLookupTables(); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::pairPotential::~pairPotential() -{} - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::pairPotential::write(Ostream& os) const -{ - os<< "Shifted force Maitland Smith pair potential." - << nl << tab << "m = " << m_ - << nl << tab << "gamma = " << gamma_ - << nl << tab << "rm = " << rm_ - << nl << tab << "epsilon = " << epsilon_ - << nl << tab << "rCut = " << rCut_ - << nl << tab << "rMin = " << rMin_ - << nl << tab << "dr = " << dr_ - << endl; -} - - -Foam::scalar Foam::pairPotential::n(const scalar rIJMag) const -{ - return (m_ + gamma_*(rIJMag/rm_ - 1.0)); -} - - -Foam::scalar Foam::pairPotential::force(const scalar rIJMag) const -{ - scalar nr(n(rIJMag)); - - scalar r = rIJMag/rm_; - - scalar rN = Foam::pow(r,-nr); - - scalar f = - - epsilon_ - *( - - 6.0/(nr - 6.0)/(nr - 6.0)*(gamma_/rm_)*rN - + 6.0/(nr - 6.0)*rN - *((gamma_ - m_)/rIJMag - (gamma_/rm_)*(log(r) + 1.0)) - + 6.0/(nr - 6.0) - *(1.0/(nr - 6.0)*(gamma_/rm_) + nr/rIJMag)*Foam::pow(r, -6) - ) - + du_by_dr_at_rCut_; - - return f; -} - - -Foam::scalar Foam::pairPotential::forceLookup(const scalar rIJMag) const -{ - scalar k_rIJ = (rIJMag - rMin_)/dr_; - - label k(k_rIJ); - - if (k < 0) - { - FatalErrorIn("pairPotential.C") << nl - << "rIJMag less than rMin" << nl - << abort(FatalError); - } - - scalar f = - (k_rIJ - k)*forceLookup_[k+1] - + (k + 1 - k_rIJ)*forceLookup_[k]; - - return f; -} - - -Foam::List< Foam::Pair< Foam::scalar > > -Foam::pairPotential::forceTable() const -{ - List< Pair<scalar> > forceTab(forceLookup_.size()); - - forAll(forceLookup_,k) - { - forceTab[k].first() = rMin_ + k*dr_; - - forceTab[k].second() = forceLookup_[k]; - } - - return forceTab; -} - - -Foam::scalar Foam::pairPotential::energy(const scalar rIJMag) const -{ - scalar nr = n(rIJMag); - - scalar e = - epsilon_ - *( - (6.0 / (nr - 6.0))*Foam::pow( rIJMag/rm_, -nr) - - (nr / (nr - 6.0))*Foam::pow( rIJMag/rm_, -6) - ) - - u_at_rCut_ - - (rIJMag - rCut_) - *du_by_dr_at_rCut_; - - return e; -} - - -Foam::scalar Foam::pairPotential::energyLookup(const scalar rIJMag) const -{ - scalar k_rIJ = (rIJMag - rMin_)/dr_; - - label k(k_rIJ); - - if (k < 0) - { - FatalErrorIn("pairPotential.C") << nl - << "rIJMag less than rMin" << nl - << abort(FatalError); - } - - scalar e = - (k_rIJ - k)*energyLookup_[k+1] - + (k + 1 - k_rIJ)*energyLookup_[k]; - - return e; -} - - -Foam::List< Foam::Pair< Foam::scalar > > - Foam::pairPotential::energyTable() const -{ - List< Pair<scalar> > energyTab(energyLookup_.size()); - - forAll(energyLookup_,k) - { - energyTab[k].first() = rMin_ + k*dr_; - - energyTab[k].second() = energyLookup_[k]; - } - - return energyTab; -} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - -Foam::Ostream& Foam::operator<<(Ostream& os, const pairPotential& pot) -{ - pot.write(os); - os.check - ( - "Foam::Ostream& Foam::pperator<<(Ostream& f, const pairPotential& pot" - ); - return os; -} - - -// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.C b/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.C deleted file mode 100755 index b38687dfc00d963e2e9ed1392a196e20934bb03e..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.C +++ /dev/null @@ -1,180 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -\*----------------------------------------------------------------------------*/ - -#include "pairPotentialList.H" - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::pairPotentialList::pairPotentialList() -: - List<pairPotential> () -{} - - -Foam::pairPotentialList::pairPotentialList -( - const label nIds -) -: - List<pairPotential> ((nIds * (nIds + 1))/2), - nIds_(nIds) -{} - - -Foam::pairPotentialList::pairPotentialList -( - const List<pairPotential>& pairPotentials, - const label nIds -) -: - List<pairPotential> (pairPotentials), - nIds_(nIds) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -pairPotentialList::~pairPotentialList() -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void pairPotentialList::setSizeAndNIds (const label nIds) -{ - nIds_ = nIds; - setSize((nIds * (nIds + 1))/2); -} - - -void pairPotentialList::addPotential -( - const label a, - const label b, - const pairPotential& pot -) -{ - if (pairPotentialIndex (a,b) > size()-1) - { - FatalErrorIn - ( - "Foam::pairPotentialList::addPotential " - "(const label a, const label b, const pairPotential& pot)" - )<< "Attempting to add a pairPotential with too high an index" - << nl - << "Check if the pairPotentialList has been constructed " - << "with the number of ids to expect" - << nl << abort(FatalError); - } - else - { - (*this)[pairPotentialIndex (a,b)] = pot; - } -} - - -const pairPotential& pairPotentialList::pairPotentialFunction -( - const label a, - const label b -) const -{ - return (*this)[pairPotentialIndex (a,b)]; -} - - -bool pairPotentialList::rCutSqr -( - const label a, - const label b, - const scalar rIJMagSqr -) const -{ - if(rIJMagSqr <= rCutSqr (a,b)) - { - return true; - } - else - { - return false; - } -} - - -scalar pairPotentialList::rCutSqr -( - const label a, - const label b -) const -{ - return (*this)[pairPotentialIndex (a,b)].rCutSqr(); -} - - -scalar pairPotentialList::rCut -( - const label a, - const label b -) const -{ - return (*this)[pairPotentialIndex (a,b)].rCut(); -} - - -scalar pairPotentialList::force -( - const label a, - const label b, - const scalar rIJMag -) const -{ - scalar f = (*this)[pairPotentialIndex (a,b)].forceLookup(rIJMag); - - return f; -} - - -scalar pairPotentialList::energy -( - const label a, - const label b, - const scalar rIJMag -) const -{ - scalar e = (*this)[pairPotentialIndex (a,b)].energyLookup(rIJMag); - - return e; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.C b/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.C deleted file mode 100755 index 1eab1aa40a1fb753f089f7257de7f4f3387bcac5..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.C +++ /dev/null @@ -1,132 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -\*----------------------------------------------------------------------------*/ - -#include "pairPotential.H" - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -pairPotential::pairPotential() -{} - - -// Construct from components -pairPotential::pairPotential -( - const word& pairPotentialName, - const word& pairPotentialType, - const scalar sigma, - const scalar epsilon, - const scalar rCut -) -: - pairPotentialName_(pairPotentialName), - pairPotentialType_(pairPotentialType), - sigma_(sigma), - epsilon_(epsilon), - rCut_(rCut), - rCutSqr_(rCut*rCut) -{ - // rCutShiftedForcePotentialConstTerm - rCutSFPotConst_ = (pow((rCut_/sigma_),-12) - pow((rCut_/sigma_),-6)); - - // rCutShiftedForceConstTerm - rCutSFConst_ = - (pow((rCut_/sigma_),-14) - 0.5*pow((rCut_/sigma_),-8))*rCut_; -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -pairPotential::~pairPotential() -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void pairPotential::write(Ostream& os) const -{ - os << pairPotentialName_ - << nl << pairPotentialType_ - << nl << sigma_ - << nl << epsilon_ - << nl << rCut_ - << endl; -} - - -scalar pairPotential::force(const scalar rIJMag) const -{ - // (rIJ/sigma)^-2 - scalar rIJoSMagSqInv = (sigma_/rIJMag)*(sigma_/rIJMag); - - // (rIJ/sigma)^-6 - scalar rIJoSMagSqInvCu = rIJoSMagSqInv*rIJoSMagSqInv*rIJoSMagSqInv; - - scalar f = 48.0*epsilon_/(sigma_*sigma_) - *(rIJoSMagSqInvCu*(rIJoSMagSqInvCu - 0.5)*rIJoSMagSqInv - - rCutSFConst_/rIJMag); - - return f; -} - - -scalar pairPotential::energy(const scalar rIJMag) const -{ - // (rIJ/sigma)^-2 - scalar rIJoSMagSqInv = (sigma_/rIJMag)*(sigma_/rIJMag); - - // (rIJ/sigma)^-6 - scalar rIJoSMagSqInvCu = rIJoSMagSqInv*rIJoSMagSqInv*rIJoSMagSqInv; - - scalar e = 4*epsilon_ - *( - rIJoSMagSqInvCu*(rIJoSMagSqInvCu - 1.0) - - rCutSFPotConst_ - + 12*(rIJMag - rCut_)/(sigma_*sigma_)*rCutSFConst_ - ); - - return e; -} - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - -Ostream& operator<<(Ostream& os, const pairPotential& pot) -{ - pot.write(os); - os.check("Ostream& operator<<(Ostream& f, const pairPotential& pot"); - return os; -} - - -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.H b/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.H deleted file mode 100755 index 57dea3ab725b00c805cf34f9518dad9b57d83516..0000000000000000000000000000000000000000 --- a/src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.H +++ /dev/null @@ -1,148 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::pairPotential - -Description - -SourceFiles - pairPotentialI.H - pairPotential.C - -\*---------------------------------------------------------------------------*/ - -#ifndef pairPotential_H -#define pairPotential_H - -#include "vector.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - - -/*---------------------------------------------------------------------------*\ - Class pairPotential Declaration -\*---------------------------------------------------------------------------*/ - -class pairPotential -{ - // Private data - - // At the moment this is hard coded to be a "shiftedLennardJones" - // potential. In future use templated classes virtual functions, - // function pointers and all kinds of good stuff to make this a - // generic pair force, - - // Not strictly necessary, but useful to keep track of what's what. - word pairPotentialName_; - - // To be used when runTime selection of potential function is working. - word pairPotentialType_; - - scalar sigma_; - - scalar epsilon_; - - scalar rCut_; - - scalar rCutSqr_; - - // rCutShiftedForcePotentialConstTerm - scalar rCutSFPotConst_; - - // rCutShiftedForceConstTerm - scalar rCutSFConst_; - - -public: - - // Constructors - - //- Construct null - pairPotential(); - - //- Construct from components - pairPotential - ( - const word& pairPotentialName, - const word& pairPotentialType, - const scalar sigma, - const scalar epsilon, - const scalar rCut - ); - - - // Destructor - - virtual ~pairPotential(); - - - // Member Functions - - // Access - - inline const word& pairPotentialName() const; - - inline const word& pairPotentialType() const; - - inline scalar sigma() const; - - inline scalar epsilon() const; - - inline scalar rCut() const; - - inline scalar rCutSqr() const; - - - // Write - - virtual void write(Ostream&) const; - - scalar force(const scalar rIJMag) const; - - scalar energy(const scalar rIJMag) const; - - - // IOstream Operators - - friend Ostream& operator<<(Ostream&, const pairPotential&); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "pairPotentialI.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/postProcessing/foamCalcFunctions/field/components/components.C b/src/postProcessing/foamCalcFunctions/field/components/components.C index 644771023b65a1e76a8b25b9416f75bbd91f33f1..95f2421dffc4b61cf8e217f629c0978b85bcbdb7 100644 --- a/src/postProcessing/foamCalcFunctions/field/components/components.C +++ b/src/postProcessing/foamCalcFunctions/field/components/components.C @@ -111,6 +111,8 @@ void Foam::calcTypes::components::calc mesh, processed ); + writeComponentFields<symmTensor>(fieldHeader, mesh, processed); + writeComponentFields<tensor>(fieldHeader, mesh, processed); if (!processed) { diff --git a/src/triSurface/Make/options b/src/triSurface/Make/options index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cd3f5ed69c3b97c7bd5a38c86e0a230089feb8f4 100644 --- a/src/triSurface/Make/options +++ b/src/triSurface/Make/options @@ -0,0 +1,3 @@ +EXE_INC = \ + -I$(WM_THIRD_PARTY_DIR)/zlib-1.2.3 + diff --git a/src/turbulenceModels/RAS/compressible/LRR/LRR.H b/src/turbulenceModels/RAS/compressible/LRR/LRR.H index 186abc311c7680e5454f32ab4d9e409efbfaedc6..ad2d9df8f4d395e08349a8f092168e3557c084e8 100644 --- a/src/turbulenceModels/RAS/compressible/LRR/LRR.H +++ b/src/turbulenceModels/RAS/compressible/LRR/LRR.H @@ -29,6 +29,24 @@ Description Launder, Reece and Rodi Reynolds-stress turbulence model for compressible flows. + The default model coefficients correspond to the following: + @verbatim + LRRCoeffs + { + Cmu 0.09; + Clrr1 1.8; + Clrr2 0.6; + C1 1.44; + C2 1.92; + Cs 0.25; + Ceps 0.15; + alphah 1.0; // only for compressible + alphaEps 0.76923; + alphaR 1.22; // only for compressible + couplingFactor 0.0; // only for incompressible + } + @endverbatim + SourceFiles LRR.C LRRcorrect.C diff --git a/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H index 9c403c5d4254e01bf0e58ad672dd8ab33e641ae3..8457e178d0a54f59e37f5fed00faae100008f07b 100644 --- a/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H +++ b/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H @@ -28,6 +28,26 @@ Class Description Launder-Gibson Reynolds stress turbulence model for compressible flows. + The default model coefficients correspond to the following: + @verbatim + LaunderGibsonRSTMCoeffs + { + Cmu 0.09; + Clg1 1.8; + Clg2 0.6; + C1 1.44; + C2 1.92; + C1Ref 0.5; + C2Ref 0.3; + Cs 0.25; + Ceps 0.15; + alphah 1.0; // only for compressible + alphaEps 0.76923; + alphaR 1.22; + couplingFactor 0.0; + } + @endverbatim + SourceFiles LaunderGibsonRSTM.C LaunderGibsonRSTMcorrect.C diff --git a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H index 65151f87072f7d3a8970a03be145c183bff5448d..ec1a66e09f2a198c39273c45fa1880256bf8e2db 100644 --- a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H +++ b/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H @@ -29,6 +29,20 @@ Description Launder and Sharma low-Reynolds k-epsilon turbulence model for compressible and combusting flows. + The default model coefficients correspond to the following: + @verbatim + LaunderSharmaKECoeffs + { + Cmu 0.09; + C1 1.44; + C2 1.92; + C3 -0.33; + alphah 1.0; // only for compressible + alphahk 1.0; // only for compressible + alphaEps 0.76923; + } + @endverbatim + SourceFiles LaunderSharmaKE.C LaunderSharmaKECorrect.C diff --git a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/sourceFiles b/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/sourceFiles deleted file mode 100644 index 4af781d2c82f290a1765bedaf3d2a059f04f9572..0000000000000000000000000000000000000000 --- a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/sourceFiles +++ /dev/null @@ -1,2 +0,0 @@ -SOURCE = \ -$(EXE_SRC)/RNGkEpsilon.C diff --git a/src/turbulenceModels/RAS/compressible/Make/files b/src/turbulenceModels/RAS/compressible/Make/files index a04a7a9c0bc29d365fc55fd0488c2927f55e777c..aab9098c3db7310d01990abe8ef0a78ef3d7c0e1 100644 --- a/src/turbulenceModels/RAS/compressible/Make/files +++ b/src/turbulenceModels/RAS/compressible/Make/files @@ -1,3 +1,4 @@ +/* RAS turbulence models */ RASModel/RASModel.C RASModel/newRASModel.C laminar/laminar.C @@ -10,6 +11,11 @@ realizableKE/realizableKE.C SpalartAllmaras/SpalartAllmaras.C kOmegaSST/kOmegaSST.C +/* Wall functions */ wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.C +/* Patch fields */ +derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C +derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C + LIB = $(FOAM_LIBBIN)/libcompressibleRASModels diff --git a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.C b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.C index 6a4a6c055b62170f983195e5810eb3cc96efbb04..430d87f7ae933d66cca6b431d9c1f12dfb35662a 100644 --- a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.C +++ b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.C @@ -89,14 +89,24 @@ RASModel::RASModel kappa_ ( - subDict("wallFunctionCoeffs").lookupOrAddDefault<scalar> + dimensioned<scalar>::lookupOrAddToDict ( "kappa", + subDict("wallFunctionCoeffs"), 0.4187 ) ), - E_(subDict("wallFunctionCoeffs").lookupOrAddDefault<scalar>("E", 9.0)), - yPlusLam_(yPlusLam(kappa_, E_)), + E_ + ( + dimensioned<scalar>::lookupOrAddToDict + ( + "E", + subDict("wallFunctionCoeffs"), + 9.0 + ) + ), + + yPlusLam_(yPlusLam(kappa_.value(), E_.value())), k0_("k0", dimVelocity*dimVelocity, SMALL), epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL), @@ -171,14 +181,14 @@ bool RASModel::read() lookup("turbulence") >> turbulence_; coeffDict_ = subDict(type() + "Coeffs"); - subDict("wallFunctionCoeffs").readIfPresent<scalar>("kappa", kappa_); - subDict("wallFunctionCoeffs").readIfPresent<scalar>("E", E_); + kappa_.readIfPresent(subDict("wallFunctionCoeffs")); + E_.readIfPresent(subDict("wallFunctionCoeffs")); - yPlusLam_ = yPlusLam(kappa_, E_); + yPlusLam_ = yPlusLam(kappa_.value(), E_.value()); - readIfPresent("k0", k0_); - readIfPresent("epsilon0", epsilon0_); - readIfPresent("epsilonSmall", epsilonSmall_); + k0_.readIfPresent(*this); + epsilon0_.readIfPresent(*this); + epsilonSmall_.readIfPresent(*this); return true; } diff --git a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H index f18bfe5cd4bd153b0710206ae1c7a1a57814bb43..39960659a4a5bb2900450387328022c97d3ee2af 100644 --- a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H +++ b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H @@ -91,8 +91,8 @@ protected: Switch printCoeffs_; dictionary coeffDict_; - scalar kappa_; - scalar E_; + dimensionedScalar kappa_; + dimensionedScalar E_; scalar yPlusLam(const scalar kappa, const scalar E); scalar yPlusLam_; @@ -226,13 +226,13 @@ public: //- Return kappa for use in wall-functions - scalar kappa() const + dimensionedScalar kappa() const { return kappa_; } //- Return E for use in wall-functions - scalar E() const + dimensionedScalar E() const { return E_; } @@ -245,7 +245,7 @@ public: } //- Const access to the coefficients dictionary - const dictionary& coeffDict() + const dictionary& coeffDict() const { return coeffDict_; } diff --git a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H index 66295b73ae5f0779e68a1c0530a490e1c779d430..38d66ad0c715c3ad2be729da05329f7ef8b5f717 100644 --- a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H +++ b/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H @@ -28,6 +28,22 @@ Class Description Renormalisation group k-epsilon turbulence model for compressible flows. + The default model coefficients correspond to the following: + @verbatim + RNGkEpsilonCoeffs + { + Cmu 0.0845; + C1 1.42; + C2 1.68; + C3 -0.33; // only for compressible + alphah 1.0; // only for compressible + alphak 1.39; + alphaEps 1.39; + eta0 4.38; + beta 0.012; + } + @endverbatim + SourceFiles RNGkEpsilon.C RNGkEpsilonCorrect.C diff --git a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/sourceFiles b/src/turbulenceModels/RAS/compressible/RNGkEpsilon/sourceFiles deleted file mode 100644 index 4af781d2c82f290a1765bedaf3d2a059f04f9572..0000000000000000000000000000000000000000 --- a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/sourceFiles +++ /dev/null @@ -1,2 +0,0 @@ -SOURCE = \ -$(EXE_SRC)/RNGkEpsilon.C diff --git a/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H index a163335fd6352817f981f729d121e0a0421f30a0..2a96baa02f5dbee7aff48d239ea887eb39ee25c1 100644 --- a/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H @@ -44,6 +44,21 @@ Description Ph.D. thesis, University of Michigan, 1996. @endverbatim + The default model coefficients correspond to the following: + @verbatim + SpalartAllmarasCoeffs + { + Cb1 0.1355; + Cb2 0.622; + Cw2 0.3; + Cw3 2.0; + Cv1 7.1; + Cv2 5.0; + alphaNut 1.5; + alphah 1.0; // only for compressible + } + @endverbatim + SourceFiles SpalartAllmaras.C SpalartAllmarasCorrect.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C similarity index 93% rename from src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C rename to src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C index b24240aeda8cd9cf9cb8b14116e79b7776264bf6..100ce04fcbd041b617b953b075f142d20c07dfb2 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -29,6 +29,7 @@ License #include "fvPatchFieldMapper.H" #include "surfaceFields.H" #include "volFields.H" +#include "RASModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -105,17 +106,10 @@ void turbulentMixingLengthDissipationRateInletFvPatchScalarField::updateCoeffs() } // Lookup Cmu corresponding to the turbulence model selected - const dictionary& RASProperties = db().lookupObject<IOdictionary> - ( - "RASProperties" - ); + const compressible::RASModel& RAS = + db().lookupObject<compressible::RASModel>("RASProperties"); + scalar Cmu = readScalar(RAS.coeffDict().lookup("Cmu")); - const dictionary& RASCoeffs = RASProperties.subDict - ( - word(RASProperties.lookup("RASModel")) + "Coeffs" - ); - - scalar Cmu = readScalar(RASCoeffs.lookup("Cmu")); scalar Cmu75 = pow(Cmu, 0.75); const fvPatchField<scalar>& k = diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H similarity index 100% rename from src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H rename to src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C similarity index 93% rename from src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C rename to src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C index b0949830f73df68ece35dac19fb7ebcc5f5110e7..eb3d271709a0bd73e54775435ecfa03858d3b7d1 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C @@ -29,6 +29,7 @@ License #include "fvPatchFieldMapper.H" #include "surfaceFields.H" #include "volFields.H" +#include "RASModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -110,17 +111,10 @@ void turbulentMixingLengthFrequencyInletFvPatchScalarField::updateCoeffs() } // Lookup Cmu corresponding to the turbulence model selected - const dictionary& RASProperties = db().lookupObject<IOdictionary> - ( - "RASProperties" - ); + const compressible::RASModel& RAS = + db().lookupObject<compressible::RASModel>("RASProperties"); + scalar Cmu = readScalar(RAS.coeffDict().lookup("Cmu")); - const dictionary& RASCoeffs = RASProperties.subDict - ( - word(RASProperties.lookup("RASModel")) + "Coeffs" - ); - - scalar Cmu = readScalar(RASCoeffs.lookup("Cmu")); scalar Cmu25 = pow(Cmu, 0.25); const fvPatchField<scalar>& kp = diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H b/src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H similarity index 100% rename from src/finiteVolume/fields/fvPatchFields/derived/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H rename to src/turbulenceModels/RAS/compressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H diff --git a/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H b/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H index 91f6d90af9486f77376c476bbb8f8690bc6e9755..521c722937aeb45e8449221c144ffcabdaf1eb48 100644 --- a/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H +++ b/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H @@ -28,6 +28,20 @@ Class Description Standard k-epsilon turbulence model for compressible flows + The default model coefficients correspond to the following: + @verbatim + kEpsilonCoeffs + { + Cmu 0.09; + C1 1.44; + C2 1.92; + C3 -0.33; // only for compressible + alphak 1.0; // only for compressible + alphaEps 0.76923; + alphah 1.0; // only for compressible + } + @endverbatim + SourceFiles kEpsilon.C kEpsilonCorrect.C diff --git a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H index 3ddcde214eda5777915f9356b3661f9eb07bb7b2..7e321cc59462953b45b7851039d0393c6dad0d6d 100644 --- a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H +++ b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H @@ -39,7 +39,7 @@ Description Note that this implementation is written in terms of alpha diffusion coefficients rather than the more traditional sigma (alpha = 1/sigma) so that the blending can be applied to all coefficuients in a consistent - manner. The paper suggests that sigma is blended but this woulf not be + manner. The paper suggests that sigma is blended but this would not be consistent with the blending of the k-epsilon and k-omega models. Also note that the error in the last term of equation (2) relating to @@ -52,6 +52,26 @@ Description uncertainty in their origin, range of applicability and that is y+ becomes sufficiently small blending u_tau in this manner clearly becomes nonsense. + The default model coefficients correspond to the following: + @verbatim + kOmegaSST + { + Cmu 0.09; + alphaK1 0.85034; + alphaK2 1.0; + alphaOmega1 0.5; + alphaOmega2 0.85616; + alphah 1.0; // only for compressible + beta1 0.075; + beta2 0.0828; + betaStar 0.09; + gamma1 0.5532; + gamma2 0.4403; + a1 0.31; + c1 10.0; + } + @endverbatim + SourceFiles kOmegaSST.C kOmegaWallFunctionsI.H diff --git a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallFunctionsI.H b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallFunctionsI.H index 1f34c5be9f6bfaa25e2e05257fce4db7615d923d..e7b9db40cd1b18a21e17e37de7123e2601258e5d 100644 --- a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallFunctionsI.H +++ b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallFunctionsI.H @@ -89,7 +89,7 @@ Description omega_[faceCelli] += sqrt(k_[faceCelli]) - /(Cmu25*kappa_*y_[faceCelli]); + /(Cmu25*kappa_.value()*y_[faceCelli]); if (yPlus > yPlusLam_) { @@ -97,7 +97,7 @@ Description (mutw[facei] + muw[facei]) *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) - /(kappa_*y_[faceCelli]); + /(kappa_.value()*y_[faceCelli]); } } } diff --git a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallViscosityI.H b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallViscosityI.H index 4aae893e977d889351880a16be4c28e26ede42a4..68ce16201cf3489b464b8e52bcaf681a7c5aa8f4 100644 --- a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallViscosityI.H +++ b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaWallViscosityI.H @@ -58,7 +58,7 @@ Description { mutw[facei] = muw[facei] - *(yPlus*kappa_/log(E_*yPlus) - 1); + *(yPlus*kappa_.value()/log(E_.value()*yPlus) - 1); } else { diff --git a/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H b/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H index 1e70ab521d94913b22d4fe41e6fd05a672ef5d88..510134ee6d5cb08847a81be3e2fa7d5afb67a20d 100644 --- a/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H +++ b/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H @@ -37,7 +37,20 @@ Description Jiang Zhu Computers and Fluids Vol. 24, No. 3, pp. 227-238, 1995 + @endverbatim + + The default model coefficients correspond to the following: @verbatim + realizableKE + { + Cmu 0.09; + A0 4.0; + C2 1.9; + alphak 1.0; + alphaEps 0.833333; + alphah 1.0; // only for compressible + } + @endverbatim SourceFiles realizableKE.C diff --git a/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.C b/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.C index 5238bcda209369193ea7d04a48c006026dee49d6..b019bfdd516b613df46f722ad7951e2cb985e9bd 100644 --- a/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.C @@ -123,14 +123,14 @@ void mutStandardRoughWallFunctionFvPatchScalarField::evaluate const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); - const scalar kappa = rasModel.kappa(); - const scalar E = rasModel.E(); + const scalar kappa = rasModel.kappa().value(); + const scalar E = rasModel.E().value(); const scalar yPlusLam = 11.225; // The reciprical of the distance to the adjacent cell centre. const scalarField& ry = patch().deltaCoeffs(); - const fvPatchVectorField& U = + const fvPatchVectorField& U = patch().lookupPatchField<volVectorField, vector>("U"); const fvPatchScalarField& rho = @@ -139,7 +139,7 @@ void mutStandardRoughWallFunctionFvPatchScalarField::evaluate // The flow velocity at the adjacent cell centre. scalarField magUp = mag(U.patchInternalField() - U); - const scalarField& muw = + const scalarField& muw = patch().lookupPatchField<volScalarField, scalar>("mu"); scalarField& mutw = *this; @@ -155,7 +155,7 @@ void mutStandardRoughWallFunctionFvPatchScalarField::evaluate //if (KsPlusBasedOnYPlus_) { - // If KsPlus is based on YPlus the extra term added to the law + // If KsPlus is based on YPlus the extra term added to the law // of the wall will depend on yPlus. forAll(mutw, facei) { @@ -206,7 +206,7 @@ void mutStandardRoughWallFunctionFvPatchScalarField::evaluate const scalar sint_2 = sin(t_2); const scalar logt_1 = log(t_1); G = logt_1*sint_2; - yPlusGPrime = + yPlusGPrime = (c_1*sint_2*KsPlus/t_1) + (c_3*logt_1*cos(t_2)); } @@ -268,7 +268,7 @@ void mutStandardRoughWallFunctionFvPatchScalarField::evaluate mag(ryPlusLam*(yPlus - yPlusLast)) > 0.0001 && ++iter < 10 ); - + if (yPlus > yPlusLam) { mutw[facei] = muw[facei]*(yPlus*yPlus/Re - 1); @@ -291,7 +291,7 @@ void mutStandardRoughWallFunctionFvPatchScalarField::write(Ostream& os) const << roughnessConstant_ << token::END_STATEMENT << nl; os.writeKeyword("roughnessFudgeFactor") << roughnessFudgeFactor_ << token::END_STATEMENT << nl; -} +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/turbulenceModels/RAS/compressible/wallFunctions/wallFunctionsI.H b/src/turbulenceModels/RAS/compressible/wallFunctions/wallFunctionsI.H index 19ae89d4ca43042671e0cf80eaf707849294c89f..35b1a401cfb4353f6272cf60d0a54937d6838961 100644 --- a/src/turbulenceModels/RAS/compressible/wallFunctions/wallFunctionsI.H +++ b/src/turbulenceModels/RAS/compressible/wallFunctions/wallFunctionsI.H @@ -90,7 +90,7 @@ Description epsilon_[faceCelli] += Cmu75*pow(k_[faceCelli], 1.5) - /(kappa_*RASModel::y_[patchi][facei]); + /(kappa_.value()*RASModel::y_[patchi][facei]); if (yPlus > yPlusLam_) { @@ -98,7 +98,7 @@ Description (mutw[facei] + muw[facei]) *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) - /(kappa_*RASModel::y_[patchi][facei]); + /(kappa_.value()*RASModel::y_[patchi][facei]); } } } diff --git a/src/turbulenceModels/RAS/compressible/wallFunctions/wallViscosityI.H b/src/turbulenceModels/RAS/compressible/wallFunctions/wallViscosityI.H index 938555e860675d50fc4c45758cdf1b49475737c9..659e3286c2c3f1f99a8349d56bf96a945e3aa69f 100644 --- a/src/turbulenceModels/RAS/compressible/wallFunctions/wallViscosityI.H +++ b/src/turbulenceModels/RAS/compressible/wallFunctions/wallViscosityI.H @@ -58,7 +58,7 @@ Description { mutw[facei] = muw[facei] - *(yPlus*kappa_/log(E_*yPlus) - 1); + *(yPlus*kappa_.value()/log(E_.value()*yPlus) - 1); } else { diff --git a/src/turbulenceModels/RAS/incompressible/LRR/LRR.H b/src/turbulenceModels/RAS/incompressible/LRR/LRR.H index 84f2692e4ac7572fac2b77eda632b78bd6055fec..e61319364d2450943b07a1c6f127951afbe90423 100644 --- a/src/turbulenceModels/RAS/incompressible/LRR/LRR.H +++ b/src/turbulenceModels/RAS/incompressible/LRR/LRR.H @@ -29,6 +29,24 @@ Description Launder, Reece and Rodi Reynolds-stress turbulence model for incompressible flows. + The default model coefficients correspond to the following: + @verbatim + LRRCoeffs + { + Cmu 0.09; + Clrr1 1.8; + Clrr2 0.6; + C1 1.44; + C2 1.92; + Cs 0.25; + Ceps 0.15; + alphah 1.0; // only for compressible + alphaEps 0.76923; + alphaR 1.22; // only for compressible + couplingFactor 0.0; // only for incompressible + } + @endverbatim + SourceFiles LRR.C diff --git a/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H index d84ddbd93b00a96307a5b6432978aa49dc3a8849..0bb147f3a545342d78075e4c6d288a6c8aba0138 100644 --- a/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H +++ b/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H @@ -28,6 +28,26 @@ Class Description Launder-Gibson Reynolds stress turbulence model for incompressible flows. + The default model coefficients correspond to the following: + @verbatim + LaunderGibsonRSTMCoeffs + { + Cmu 0.09; + Clg1 1.8; + Clg2 0.6; + C1 1.44; + C2 1.92; + C1Ref 0.5; + C2Ref 0.3; + Cs 0.25; + Ceps 0.15; + alphah 1.0; // only for compressible + alphaEps 0.76923; + alphaR 1.22; + couplingFactor 0.0; + } + @endverbatim + SourceFiles LaunderGibsonRSTM.C diff --git a/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H index e4e134d44238f39b6da1cf6c532fd41279cff174..eb7a371d328b7f782492753078825fb26e305490 100644 --- a/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H +++ b/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H @@ -29,6 +29,20 @@ Description Launder and Sharma low-Reynolds k-epsilon turbulence model for incompressible flows. + The default model coefficients correspond to the following: + @verbatim + LaunderSharmaKECoeffs + { + Cmu 0.09; + C1 1.44; + C2 1.92; + C3 -0.33; + alphah 1.0; // only for compressible + alphahk 1.0; // only for compressible + alphaEps 0.76923; + } + @endverbatim + SourceFiles LaunderSharmaKE.C diff --git a/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowReSetWallDissipation.H b/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowReSetWallDissipation.H index 76d0a2021171f4d1f4589c57640bcf4d7f616141..ef216dcf68765654ef1d86c72b077c71ff542f57 100644 --- a/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowReSetWallDissipation.H +++ b/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowReSetWallDissipation.H @@ -43,7 +43,7 @@ epsilon_[faceCelli] += Cmu75*pow(k_[faceCelli], 1.5) /( - kappa_*y_[faceCelli] + kappa_.value()*y_[faceCelli] *(1.0 - exp(-Aepsilon_.value()*yStar_[faceCelli])) ) *exp(-Amu_.value()*sqr(yStar_[faceCelli])); diff --git a/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowReSetWallDissipation.H b/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowReSetWallDissipation.H index cfda062b594bf64966001211a22cfc0b01ea98d3..a998d3af8e092ecb639f6fac1fae615ad0bd828a 100644 --- a/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowReSetWallDissipation.H +++ b/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowReSetWallDissipation.H @@ -43,7 +43,7 @@ epsilon_[faceCelli] += Cmu75*pow(k_[faceCelli], 1.5) /( - kappa_*y_[faceCelli] + kappa_.value()*y_[faceCelli] *(1.0 - exp(-Aepsilon*yStar_[faceCelli])) ) *exp(-Amu*sqr(yStar_[faceCelli])); diff --git a/src/turbulenceModels/RAS/incompressible/Make/files b/src/turbulenceModels/RAS/incompressible/Make/files index e1ee8f4c189de6fad67e41a73066c4678cfde93e..c7746e7fd2bc356ca4c3404cbc31610c4ac38f4e 100644 --- a/src/turbulenceModels/RAS/incompressible/Make/files +++ b/src/turbulenceModels/RAS/incompressible/Make/files @@ -1,3 +1,4 @@ +/* RAS turbulence models */ RASModel/RASModel.C RASModel/newRASModel.C laminar/laminar.C @@ -16,8 +17,13 @@ NonlinearKEShih/NonlinearKEShih.C LienLeschzinerLowRe/LienLeschzinerLowRe.C LamBremhorstKE/LamBremhorstKE.C +/* Wall functions */ wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.C wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.C +/* Patch fields */ +derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C +derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C + LIB = $(FOAM_LIBBIN)/libincompressibleRASModels diff --git a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.C b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.C index 36567e7b8c5778d66646f4644b637ff5cabc16c4..34be1e6e39165d0235d699c5470d539b793f18d2 100644 --- a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.C +++ b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.C @@ -85,14 +85,24 @@ RASModel::RASModel kappa_ ( - subDict("wallFunctionCoeffs").lookupOrAddDefault<scalar> + dimensioned<scalar>::lookupOrAddToDict ( "kappa", + subDict("wallFunctionCoeffs"), 0.4187 ) ), - E_(subDict("wallFunctionCoeffs").lookupOrAddDefault<scalar>("E", 9.0)), - yPlusLam_(yPlusLam(kappa_, E_)), + E_ + ( + dimensioned<scalar>::lookupOrAddToDict + ( + "E", + subDict("wallFunctionCoeffs"), + 9.0 + ) + ), + + yPlusLam_(yPlusLam(kappa_.value(), E_.value())), k0_("k0", dimVelocity*dimVelocity, SMALL), epsilon0_("epsilon", k0_.dimensions()/dimTime, SMALL), @@ -168,14 +178,14 @@ bool RASModel::read() lookup("turbulence") >> turbulence_; coeffDict_ = subDict(type() + "Coeffs"); - subDict("wallFunctionCoeffs").readIfPresent<scalar>("kappa", kappa_); - subDict("wallFunctionCoeffs").readIfPresent<scalar>("E", E_); + kappa_.readIfPresent(subDict("wallFunctionCoeffs")); + E_.readIfPresent(subDict("wallFunctionCoeffs")); - yPlusLam_ = yPlusLam(kappa_, E_); + yPlusLam_ = yPlusLam(kappa_.value(), E_.value()); - readIfPresent("k0", k0_); - readIfPresent("epsilon0", epsilon0_); - readIfPresent("epsilonSmall", epsilonSmall_); + k0_.readIfPresent(*this); + epsilon0_.readIfPresent(*this); + epsilonSmall_.readIfPresent(*this); return true; } diff --git a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H index 9944d6ffe0363e83a0b4b57039de5632c1fe0465..40e087612e3640320e627151f9d5bf1df9cf2c9a 100644 --- a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H +++ b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H @@ -88,8 +88,8 @@ protected: Switch printCoeffs_; dictionary coeffDict_; - scalar kappa_; - scalar E_; + dimensionedScalar kappa_; + dimensionedScalar E_; scalar yPlusLam(const scalar kappa, const scalar E); scalar yPlusLam_; @@ -213,13 +213,13 @@ public: //- Return kappa for use in wall-functions - scalar kappa() const + dimensionedScalar kappa() const { return kappa_; } //- Return E for use in wall-functions - scalar E() const + dimensionedScalar E() const { return E_; } @@ -232,7 +232,7 @@ public: } //- Const access to the coefficients dictionary - const dictionary& coeffDict() + const dictionary& coeffDict() const { return coeffDict_; } diff --git a/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H index 58cd18a943105c0b9557fe8825253aaf58530e2c..01b50d03eefa88ce6497f021a11f256c45687890 100644 --- a/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H +++ b/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H @@ -28,6 +28,22 @@ Class Description Renormalisation group k-epsilon turbulence model for incompressible flows. + The default model coefficients correspond to the following: + @verbatim + RNGkEpsilonCoeffs + { + Cmu 0.0845; + C1 1.42; + C2 1.68; + C3 -0.33; // only for compressible + alphah 1.0; // only for compressible + alphak 1.39; + alphaEps 1.39; + eta0 4.38; + beta 0.012; + } + @endverbatim + SourceFiles RNGkEpsilon.C diff --git a/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H index 98fc25adb0336cde6a8fda10227c6053a7ec9ba2..947eda2c884c59c0f45dd766514d522b66bde4f3 100644 --- a/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H @@ -42,7 +42,22 @@ Description for High Reynolds Number Compressible Flows" G.A. Ashford, Ph.D. thesis, University of Michigan, 1996. + @endverbatim + + The default model coefficients correspond to the following: @verbatim + SpalartAllmarasCoeffs + { + Cb1 0.1355; + Cb2 0.622; + Cw2 0.3; + Cw3 2.0; + Cv1 7.1; + Cv2 5.0; + alphaNut 1.5; + alphah 1.0; // only for compressible + } + @endverbatim SourceFiles SpalartAllmaras.C diff --git a/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..b84182c6367567570fa6ef88cb246ddfe8c9c28d --- /dev/null +++ b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -0,0 +1,149 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2006-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "turbulentMixingLengthDissipationRateInletFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "surfaceFields.H" +#include "volFields.H" +#include "RASModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +turbulentMixingLengthDissipationRateInletFvPatchScalarField:: +turbulentMixingLengthDissipationRateInletFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(p, iF), + mixingLength_(0.001) +{} + +turbulentMixingLengthDissipationRateInletFvPatchScalarField:: +turbulentMixingLengthDissipationRateInletFvPatchScalarField +( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchField<scalar>(ptf, p, iF, mapper), + mixingLength_(ptf.mixingLength_) +{} + +turbulentMixingLengthDissipationRateInletFvPatchScalarField:: +turbulentMixingLengthDissipationRateInletFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + fixedValueFvPatchField<scalar>(p, iF, dict), + mixingLength_(readScalar(dict.lookup("mixingLength"))) +{} + +turbulentMixingLengthDissipationRateInletFvPatchScalarField:: +turbulentMixingLengthDissipationRateInletFvPatchScalarField +( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField& ptf +) +: + fixedValueFvPatchField<scalar>(ptf), + mixingLength_(ptf.mixingLength_) +{} + +turbulentMixingLengthDissipationRateInletFvPatchScalarField:: +turbulentMixingLengthDissipationRateInletFvPatchScalarField +( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField& ptf, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(ptf, iF), + mixingLength_(ptf.mixingLength_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void turbulentMixingLengthDissipationRateInletFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // Lookup Cmu corresponding to the turbulence model selected + const incompressible::RASModel& RAS = + db().lookupObject<incompressible::RASModel>("RASProperties"); + scalar Cmu = readScalar(RAS.coeffDict().lookup("Cmu")); + + scalar Cmu75 = pow(Cmu, 0.75); + + const fvPatchField<scalar>& k = + patch().lookupPatchField<volScalarField, scalar>("k"); + + operator==(Cmu75*k*sqrt(k)/mixingLength_); + + fixedValueFvPatchField<scalar>::updateCoeffs(); +} + + +void turbulentMixingLengthDissipationRateInletFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchField<scalar>::write(os); + os.writeKeyword("mixingLength") + << mixingLength_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField +( + fvPatchScalarField, + turbulentMixingLengthDissipationRateInletFvPatchScalarField +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..749912601593ae9907b176ff2abe468738096b3b --- /dev/null +++ b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H @@ -0,0 +1,163 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2006-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::turbulentMixingLengthDissipationRateInletFvPatchScalarField + +Description + Calculate epsilon via the mixing length [m] + + Example of the boundary condition specification: + @verbatim + inlet + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; // 5 mm + value uniform 200; // placeholder + } + @endverbatim + +SourceFiles + turbulentMixingLengthDissipationRateInletFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentMixingLengthDissipationRateInletFvPatchScalarField_H +#define turbulentMixingLengthDissipationRateInletFvPatchScalarField_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class turbulentMixingLengthDissipationRateInletFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentMixingLengthDissipationRateInletFvPatchScalarField +: + public fixedValueFvPatchScalarField +{ + // Private data + + //- turbulent length scale + scalar mixingLength_; + +public: + + //- Runtime type information + TypeName("turbulentMixingLengthDissipationRateInlet"); + + + // Constructors + + //- Construct from patch and internal field + turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given + // turbulentMixingLengthDissipationRateInletFvPatchScalarField + // onto a new patch + turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + const turbulentMixingLengthDissipationRateInletFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new turbulentMixingLengthDissipationRateInletFvPatchScalarField + ( + *this, + iF + ) + ); + } + + + // Member functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..2cb553c5c5ca10cf67baa4a145414510dc91259d --- /dev/null +++ b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2006-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "turbulentMixingLengthFrequencyInletFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "surfaceFields.H" +#include "volFields.H" +#include "RASModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +turbulentMixingLengthFrequencyInletFvPatchScalarField:: +turbulentMixingLengthFrequencyInletFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(p, iF), + mixingLength_(0.0), + kName_("undefined-k") +{} + +turbulentMixingLengthFrequencyInletFvPatchScalarField:: +turbulentMixingLengthFrequencyInletFvPatchScalarField +( + const turbulentMixingLengthFrequencyInletFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchField<scalar>(ptf, p, iF, mapper), + mixingLength_(ptf.mixingLength_), + kName_(ptf.kName_) +{} + +turbulentMixingLengthFrequencyInletFvPatchScalarField:: +turbulentMixingLengthFrequencyInletFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + fixedValueFvPatchField<scalar>(p, iF, dict), + mixingLength_(readScalar(dict.lookup("mixingLength"))), + kName_(dict.lookup("k")) +{} + +turbulentMixingLengthFrequencyInletFvPatchScalarField:: +turbulentMixingLengthFrequencyInletFvPatchScalarField +( + const turbulentMixingLengthFrequencyInletFvPatchScalarField& ptf +) +: + fixedValueFvPatchField<scalar>(ptf), + mixingLength_(ptf.mixingLength_), + kName_(ptf.kName_) +{} + +turbulentMixingLengthFrequencyInletFvPatchScalarField:: +turbulentMixingLengthFrequencyInletFvPatchScalarField +( + const turbulentMixingLengthFrequencyInletFvPatchScalarField& ptf, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(ptf, iF), + mixingLength_(ptf.mixingLength_), + kName_(ptf.kName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void turbulentMixingLengthFrequencyInletFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // Lookup Cmu corresponding to the turbulence model selected + const incompressible::RASModel& RAS = + db().lookupObject<incompressible::RASModel>("RASProperties"); + scalar Cmu = readScalar(RAS.coeffDict().lookup("Cmu")); + + scalar Cmu25 = pow(Cmu, 0.25); + + const fvPatchField<scalar>& kp = + patch().lookupPatchField<volScalarField, scalar>(kName_); + + operator==(sqrt(kp)/(Cmu25*mixingLength_)); + + fixedValueFvPatchField<scalar>::updateCoeffs(); +} + + +void turbulentMixingLengthFrequencyInletFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchField<scalar>::write(os); + os.writeKeyword("mixingLength") + << mixingLength_ << token::END_STATEMENT << nl; + os.writeKeyword("k") << kName_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField +( + fvPatchScalarField, + turbulentMixingLengthFrequencyInletFvPatchScalarField +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..b5627099685ab58aeae4e097a47b7fa1864061ad --- /dev/null +++ b/src/turbulenceModels/RAS/incompressible/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H @@ -0,0 +1,168 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2006-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::turbulentMixingLengthFrequencyInletFvPatchScalarField + +Description + Calculate omega via the mixing length + + Example of the boundary condition specification: + @verbatim + inlet + { + type turbulentMixingLengthFrequencyInlet; + mixingLength 0.005; // 5 mm + k k; // turbulent k field + value uniform 5; // initial value + } + @endverbatim + +SourceFiles + turbulentMixingLengthFrequencyInletFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentMixingLengthFrequencyInletFvPatchScalarField_H +#define turbulentMixingLengthFrequencyInletFvPatchScalarField_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class turbulentMixingLengthFrequencyInletFvPatchScalarField Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentMixingLengthFrequencyInletFvPatchScalarField +: + public fixedValueFvPatchScalarField +{ + // Private data + + //- Turbulent length scale + scalar mixingLength_; + + //- Name of the turbulent kinetic energy field + word kName_; + + +public: + + //- Runtime type information + TypeName("turbulentMixingLengthFrequencyInlet"); + + + // Constructors + + //- Construct from patch and internal field + turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given + // turbulentMixingLengthFrequencyInletFvPatchScalarField + // onto a new patch + turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + const turbulentMixingLengthFrequencyInletFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + const turbulentMixingLengthFrequencyInletFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + const turbulentMixingLengthFrequencyInletFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new turbulentMixingLengthFrequencyInletFvPatchScalarField + ( + *this, + iF + ) + ); + } + + + // Member functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H b/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H index c3383f2d36cbc3ee4f28f64ed566c815df37124f..b0e93d3a47283163386b0f8c0444476e3c1eb16f 100644 --- a/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H +++ b/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H @@ -28,6 +28,20 @@ Class Description Standard k-epsilon turbulence model for incompressible flows. + The default model coefficients correspond to the following: + @verbatim + kEpsilonCoeffs + { + Cmu 0.09; + C1 1.44; + C2 1.92; + C3 -0.33; // only for compressible + alphak 1.0; // only for compressible + alphaEps 0.76923; + alphah 1.0; // only for compressible + } + @endverbatim + SourceFiles kEpsilon.C diff --git a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H index 418b759d240035e193e041a6451ed4d2ccede541..da3c2dc06494295efe762b9cfc7105429e332353 100644 --- a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H +++ b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H @@ -53,6 +53,26 @@ Description uncertainty in their origin, range of applicability and that is y+ becomes sufficiently small blending u_tau in this manner clearly becomes nonsense. + The default model coefficients correspond to the following: + @verbatim + kOmegaSST + { + Cmu 0.09; + alphaK1 0.85034; + alphaK2 1.0; + alphaOmega1 0.5; + alphaOmega2 0.85616; + alphah 1.0; // only for compressible + beta1 0.075; + beta2 0.0828; + betaStar 0.09; + gamma1 0.5532; + gamma2 0.4403; + a1 0.31; + c1 10.0; + } + @endverbatim + SourceFiles kOmegaSST.C kOmegaWallFunctionsI.H diff --git a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallFunctionsI.H b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallFunctionsI.H index 3b3a8a59bff1a711d07f6c23c9cb4bbc501d88ff..ab2bcc148e6f34dd211cb428594cbdbfdb92c0ab 100644 --- a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallFunctionsI.H +++ b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallFunctionsI.H @@ -87,7 +87,7 @@ Description omega_[faceCelli] += sqrt(k_[faceCelli]) - /(Cmu25*kappa_*y_[faceCelli]); + /(Cmu25*kappa_.value()*y_[faceCelli]); if (yPlus > yPlusLam_) { @@ -95,7 +95,7 @@ Description (nutw[facei] + nuw[facei]) *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) - /(kappa_*y_[faceCelli]); + /(kappa_.value()*y_[faceCelli]); } } } diff --git a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallViscosityI.H b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallViscosityI.H index 3231565d7a38a3cca60601ccad1a11ce12d1fdba..f2667bc675705215b39ab967ec5aee0297d4190c 100644 --- a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallViscosityI.H +++ b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaWallViscosityI.H @@ -55,7 +55,7 @@ Description { nutw[facei] = nuw[facei] - *(yPlus*kappa_/log(E_*yPlus) - 1); + *(yPlus*kappa_.value()/log(E_.value()*yPlus) - 1); } else { diff --git a/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H b/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H index 84b585595346d9ddc1a22324f4f9e675c888afcc..7a38d7e62d51862c763355b2502c86dd1da37fe4 100644 --- a/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H +++ b/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H @@ -37,8 +37,20 @@ Description Jiang Zhu Computers and Fluids Vol. 24, No. 3, pp. 227-238, 1995 - @verbatim + @endverbatim + The default model coefficients correspond to the following: + @verbatim + realizableKE + { + Cmu 0.09; + A0 4.0; + C2 1.9; + alphak 1.0; + alphaEps 0.833333; + alphah 1.0; // only for compressible + } + @endverbatim SourceFiles realizableKE.C diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nonLinearWallFunctionsI.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/nonLinearWallFunctionsI.H index 07967c87d95bce1fa283e825d7cfd3776b1111c3..f286ad0b67031f29438e8ca3b2b5223100756bc4 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nonLinearWallFunctionsI.H +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nonLinearWallFunctionsI.H @@ -89,7 +89,7 @@ Description epsilon_[faceCelli] += Cmu75*pow(k_[faceCelli], 1.5) - /(kappa_*y_[patchi][facei]); + /(kappa_.value()*y_[patchi][facei]); if (yPlus > yPlusLam_) { @@ -97,7 +97,7 @@ Description (nutw[facei] + nuw[facei]) *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) - /(kappa_*y_[patchi][facei]) + /(kappa_.value()*y_[patchi][facei]) - (nonlinearStress_[faceCelli] && gradU_[faceCelli]); } } diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.C b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.C index 2f242c1a4feccc66b2f6308ab3828726c5300efb..dcc849510eaf88320a7c7ff1ba8fecde33942028 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.C @@ -123,8 +123,8 @@ void nutStandardRoughWallFunctionFvPatchScalarField::evaluate const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); - const scalar kappa = rasModel.kappa(); - const scalar E = rasModel.E(); + const scalar kappa = rasModel.kappa().value(); + const scalar E = rasModel.E().value(); const scalar yPlusLam = 11.225; // The reciprical of the distance to the adjacent cell centre. diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.C b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.C index 3eee19f990f8a3a24f9902158d99882d97fe1d0b..d1ffe669de33f7a20fc0b0e96944de935fe10bbf 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.C @@ -108,9 +108,9 @@ void nutStandardWallFunctionFvPatchScalarField::evaluate const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); - scalar kappa = rasModel.kappa(); - scalar E = rasModel.E(); - scalar yPlusLam = rasModel.E(); + scalar kappa = rasModel.kappa().value(); + scalar E = rasModel.E().value(); + scalar yPlusLam = rasModel.yPlusLam(); const scalarField& ry = patch().deltaCoeffs(); diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C index 12dc46e96d0e8827dbfd0c67a4e3abc3029cfb40..7ec3523fd7dcb6cb994dc9dfb19378d466a1d234 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.C @@ -100,8 +100,8 @@ void nutWallFunctionFvPatchScalarField::evaluate(const Pstream::commsTypes) const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties"); - scalar kappa = rasModel.kappa(); - scalar E = rasModel.E(); + scalar kappa = rasModel.kappa().value(); + scalar E = rasModel.E().value(); const scalarField& ry = patch().deltaCoeffs(); diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallFunctionsI.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallFunctionsI.H index 52c4b0c0e14491ecadd0d779a0aaf6a0e602dc6d..c5f97fc043e9b1f300505d9828df0f3dda75b5e0 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallFunctionsI.H +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallFunctionsI.H @@ -88,7 +88,7 @@ Description epsilon_[faceCelli] += Cmu75*pow(k_[faceCelli], 1.5) - /(kappa_*RASModel::y_[patchi][facei]); + /(kappa_.value()*RASModel::y_[patchi][facei]); if (yPlus > yPlusLam_) { @@ -96,7 +96,7 @@ Description (nutw[facei] + nuw[facei]) *magFaceGradU[facei] *Cmu25*sqrt(k_[faceCelli]) - /(kappa_*RASModel::y_[patchi][facei]); + /(kappa_.value()*RASModel::y_[patchi][facei]); } } } diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallNonlinearViscosityI.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallNonlinearViscosityI.H index d1d3617e9257eaede933e20816429350a5c9d818..05bc8411abbb2417102d939a7188f0e00c70d07a 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallNonlinearViscosityI.H +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallNonlinearViscosityI.H @@ -55,7 +55,7 @@ Description if (yPlus > yPlusLam_) { nutw[facei] = nuw[facei] - *(yPlus*kappa_/log(E_*yPlus) - 1); + *(yPlus*kappa_.value()/log(E_.value()*yPlus) - 1); } else { diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallViscosityI.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallViscosityI.H index 82a47f39b9efb9003dad55847f40d75fb93db1b7..9a7fe62d3e58c88a50ea1100828a48b71307d30d 100644 --- a/src/turbulenceModels/RAS/incompressible/wallFunctions/wallViscosityI.H +++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/wallViscosityI.H @@ -55,7 +55,7 @@ Description { nutw[facei] = nuw[facei] - *(yPlus*kappa_/log(E_*yPlus) - 1); + *(yPlus*kappa_.value()/log(E_.value()*yPlus) - 1); } else { diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..c7ee598f505d0ffc7c51f394b6ea9292a413890c --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object blockMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.25e-9; + +vertices +( + (0 0 0) //0 + (15 0 0) + (15 3 0) + (0 3 0) + (0 0 12) + (15 0 12) + (15 3 12) + (0 3 12) //7 + (22 0 0) + (22 3 0) + (22 0 12) + (22 3 12) //11 + (31 0 0) + (31 3 0) + (31 0 12) + (31 3 12) //15 + (20 9 0) + (17 9 0) + (20 9 12) + (17 9 12) //19 + (0 9 0) + (0 9 12) //21 + (31 9 0) + (31 9 12) //23 + (17 18 0) + (0 18 0) + (17 18 12) + (0 18 12) //27 + (31 18 0) + (20 18 0) + (31 18 12) + (20 18 12) //31 + (17 21 0) + (0 21 0) + (17 21 12) + (0 21 12) //35 + (31 21 0) + (20 21 0) + (31 21 12) + (20 21 12) //39 + (17 25 0) + (0 25 0) + (17 25 12) + (0 25 12) // 43 + (31 25 0) + (20 25 0) + (31 25 12) + (20 25 12) // 47 +); + +blocks +( + hex (0 1 2 3 4 5 6 7) bottomWall (15 3 6) simpleGrading (1 1 1) //1 + hex (1 8 9 2 5 10 11 6) bottomWall (3 3 6) simpleGrading (1 1 1) //2 + hex (2 9 16 17 6 11 18 19) bottomWall (3 6 6) simpleGrading (1 1 1) //3 + hex (8 12 13 9 10 14 15 11) bottomWall (9 3 6) simpleGrading (1 1 1) //4 + hex (3 2 17 20 7 6 19 21) liquid (15 6 6) simpleGrading (1 1 1) //5 + hex (20 17 24 25 21 19 26 27) liquid (15 9 6) simpleGrading (1 1 1) //6 + hex (25 24 32 33 27 26 34 35) liquid (15 3 6) simpleGrading (1 1 1) //6A + hex (17 16 29 24 19 18 31 26) liquid (3 9 6) simpleGrading (1 1 1) //7 + hex (16 22 28 29 18 23 30 31) liquid (9 9 6) simpleGrading (1 1 1) //8 + hex (29 28 36 37 31 30 38 39) liquid (9 3 6) simpleGrading (1 1 1) //8A + hex (9 13 22 16 11 15 23 18) liquid (9 6 6) simpleGrading (1 1 1) //9 + hex (33 32 40 41 35 34 42 43) topWall (15 3 6) simpleGrading (1 1 1) //10 + hex (32 37 45 40 34 39 47 42) topWall (3 3 6) simpleGrading (1 1 1) //11 + hex (24 29 37 32 26 31 39 34) topWall (3 3 6) simpleGrading (1 1 1) //12 + hex (37 36 44 45 39 38 46 47) topWall (9 3 6) simpleGrading (1 1 1) //13 +); + +patches +( + cyclic + periodicX + ( + (0 4 7 3) + (3 7 21 20) + (20 21 27 25) + (25 27 35 33) + (33 35 43 41) + (12 13 15 14) + (13 22 23 15) + (22 28 30 23) + (28 36 38 30) + (36 44 46 38) + ) + + cyclic + periodicZ + ( + (0 3 2 1) + (1 2 9 8) + (8 9 13 12) + (2 17 16 9) + (2 3 20 17) + (9 16 22 13) + (17 20 25 24) + (16 29 28 22) + (16 17 24 29) + (24 25 33 32) + (28 29 37 36) + (32 33 41 40) + (36 37 45 44) + (32 40 45 37) + (24 32 37 29) + (4 5 6 7) + (5 10 11 6) + (10 14 15 11) + (6 11 18 19) + (7 6 19 21) + (11 15 23 18) + (19 26 27 21) + (18 23 30 31) + (18 31 26 19) + (26 34 35 27) + (30 38 39 31) + (34 42 43 35) + (38 46 47 39) + (34 39 47 42) + (26 31 39 34) + ) + + wall + outerBoundaryBottom + ( + (0 1 5 4) + (1 8 10 5) + (8 12 14 10) + ) + + wall + outerBoundaryTop + ( + (40 41 43 42) + (44 45 47 46) + (40 42 47 45) + ) +); + +mergePatchPairs +( +); + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..eaeb38f09e82e1b87d50473c0f179baa840d4791 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + periodicX + { + type cyclic; + nFaces 288; + startFace 10710; + featureCos 0.9; + } + periodicZ + { + type cyclic; + nFaces 1296; + startFace 10998; + featureCos 0.9; + } + outerBoundaryBottom + { + type wall; + nFaces 162; + startFace 12294; + } + outerBoundaryTop + { + type wall; + nFaces 162; + startFace 12456; + } +) + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/cellZones b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/cellZones new file mode 100644 index 0000000000000000000000000000000000000000..80eac3fa56f8f78d6e37bd9c2b03eb79220522b9 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/cellZones @@ -0,0 +1,3939 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object cellZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( +bottomWall +{ + type cellZone; +cellLabels List<label> +594 +( +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +) +; +} + +liquid +{ + type cellZone; +cellLabels List<label> +2754 +( +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +2263 +2264 +2265 +2266 +2267 +2268 +2269 +2270 +2271 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2280 +2281 +2282 +2283 +2284 +2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293 +2294 +2295 +2296 +2297 +2298 +2299 +2300 +2301 +2302 +2303 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2312 +2313 +2314 +2315 +2316 +2317 +2318 +2319 +2320 +2321 +2322 +2323 +2324 +2325 +2326 +2327 +2328 +2329 +2330 +2331 +2332 +2333 +2334 +2335 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2344 +2345 +2346 +2347 +2348 +2349 +2350 +2351 +2352 +2353 +2354 +2355 +2356 +2357 +2358 +2359 +2360 +2361 +2362 +2363 +2364 +2365 +2366 +2367 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2376 +2377 +2378 +2379 +2380 +2381 +2382 +2383 +2384 +2385 +2386 +2387 +2388 +2389 +2390 +2391 +2392 +2393 +2394 +2395 +2396 +2397 +2398 +2399 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2408 +2409 +2410 +2411 +2412 +2413 +2414 +2415 +2416 +2417 +2418 +2419 +2420 +2421 +2422 +2423 +2424 +2425 +2426 +2427 +2428 +2429 +2430 +2431 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2440 +2441 +2442 +2443 +2444 +2445 +2446 +2447 +2448 +2449 +2450 +2451 +2452 +2453 +2454 +2455 +2456 +2457 +2458 +2459 +2460 +2461 +2462 +2463 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2472 +2473 +2474 +2475 +2476 +2477 +2478 +2479 +2480 +2481 +2482 +2483 +2484 +2485 +2486 +2487 +2488 +2489 +2490 +2491 +2492 +2493 +2494 +2495 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2504 +2505 +2506 +2507 +2508 +2509 +2510 +2511 +2512 +2513 +2514 +2515 +2516 +2517 +2518 +2519 +2520 +2521 +2522 +2523 +2524 +2525 +2526 +2527 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2536 +2537 +2538 +2539 +2540 +2541 +2542 +2543 +2544 +2545 +2546 +2547 +2548 +2549 +2550 +2551 +2552 +2553 +2554 +2555 +2556 +2557 +2558 +2559 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2568 +2569 +2570 +2571 +2572 +2573 +2574 +2575 +2576 +2577 +2578 +2579 +2580 +2581 +2582 +2583 +2584 +2585 +2586 +2587 +2588 +2589 +2590 +2591 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2600 +2601 +2602 +2603 +2604 +2605 +2606 +2607 +2608 +2609 +2610 +2611 +2612 +2613 +2614 +2615 +2616 +2617 +2618 +2619 +2620 +2621 +2622 +2623 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2632 +2633 +2634 +2635 +2636 +2637 +2638 +2639 +2640 +2641 +2642 +2643 +2644 +2645 +2646 +2647 +2648 +2649 +2650 +2651 +2652 +2653 +2654 +2655 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2664 +2665 +2666 +2667 +2668 +2669 +2670 +2671 +2672 +2673 +2674 +2675 +2676 +2677 +2678 +2679 +2680 +2681 +2682 +2683 +2684 +2685 +2686 +2687 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706 +2707 +2708 +2709 +2710 +2711 +2712 +2713 +2714 +2715 +2716 +2717 +2718 +2719 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2728 +2729 +2730 +2731 +2732 +2733 +2734 +2735 +2736 +2737 +2738 +2739 +2740 +2741 +2742 +2743 +2744 +2745 +2746 +2747 +2748 +2749 +2750 +2751 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2760 +2761 +2762 +2763 +2764 +2765 +2766 +2767 +2768 +2769 +2770 +2771 +2772 +2773 +2774 +2775 +2776 +2777 +2778 +2779 +2780 +2781 +2782 +2783 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2792 +2793 +2794 +2795 +2796 +2797 +2798 +2799 +2800 +2801 +2802 +2803 +2804 +2805 +2806 +2807 +2808 +2809 +2810 +2811 +2812 +2813 +2814 +2815 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2824 +2825 +2826 +2827 +2828 +2829 +2830 +2831 +2832 +2833 +2834 +2835 +2836 +2837 +2838 +2839 +2840 +2841 +2842 +2843 +2844 +2845 +2846 +2847 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2856 +2857 +2858 +2859 +2860 +2861 +2862 +2863 +2864 +2865 +2866 +2867 +2868 +2869 +2870 +2871 +2872 +2873 +2874 +2875 +2876 +2877 +2878 +2879 +2880 +2881 +2882 +2883 +2884 +2885 +2886 +2887 +2888 +2889 +2890 +2891 +2892 +2893 +2894 +2895 +2896 +2897 +2898 +2899 +2900 +2901 +2902 +2903 +2904 +2905 +2906 +2907 +2908 +2909 +2910 +2911 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2920 +2921 +2922 +2923 +2924 +2925 +2926 +2927 +2928 +2929 +2930 +2931 +2932 +2933 +2934 +2935 +2936 +2937 +2938 +2939 +2940 +2941 +2942 +2943 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2952 +2953 +2954 +2955 +2956 +2957 +2958 +2959 +2960 +2961 +2962 +2963 +2964 +2965 +2966 +2967 +2968 +2969 +2970 +2971 +2972 +2973 +2974 +2975 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +2984 +2985 +2986 +2987 +2988 +2989 +2990 +2991 +2992 +2993 +2994 +2995 +2996 +2997 +2998 +2999 +3000 +3001 +3002 +3003 +3004 +3005 +3006 +3007 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3016 +3017 +3018 +3019 +3020 +3021 +3022 +3023 +3024 +3025 +3026 +3027 +3028 +3029 +3030 +3031 +3032 +3033 +3034 +3035 +3036 +3037 +3038 +3039 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3048 +3049 +3050 +3051 +3052 +3053 +3054 +3055 +3056 +3057 +3058 +3059 +3060 +3061 +3062 +3063 +3064 +3065 +3066 +3067 +3068 +3069 +3070 +3071 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3080 +3081 +3082 +3083 +3084 +3085 +3086 +3087 +3088 +3089 +3090 +3091 +3092 +3093 +3094 +3095 +3096 +3097 +3098 +3099 +3100 +3101 +3102 +3103 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3112 +3113 +3114 +3115 +3116 +3117 +3118 +3119 +3120 +3121 +3122 +3123 +3124 +3125 +3126 +3127 +3128 +3129 +3130 +3131 +3132 +3133 +3134 +3135 +3136 +3137 +3138 +3139 +3140 +3141 +3142 +3143 +3144 +3145 +3146 +3147 +3148 +3149 +3150 +3151 +3152 +3153 +3154 +3155 +3156 +3157 +3158 +3159 +3160 +3161 +3162 +3163 +3164 +3165 +3166 +3167 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3176 +3177 +3178 +3179 +3180 +3181 +3182 +3183 +3184 +3185 +3186 +3187 +3188 +3189 +3190 +3191 +3192 +3193 +3194 +3195 +3196 +3197 +3198 +3199 +3200 +3201 +3202 +3203 +3204 +3205 +3206 +3207 +3208 +3209 +3210 +3211 +3212 +3213 +3214 +3215 +3216 +3217 +3218 +3219 +3220 +3221 +3222 +3223 +3224 +3225 +3226 +3227 +3228 +3229 +3230 +3231 +3232 +3233 +3234 +3235 +3236 +3237 +3238 +3239 +3240 +3241 +3242 +3243 +3244 +3245 +3246 +3247 +3248 +3249 +3250 +3251 +3252 +3253 +3254 +3255 +3256 +3257 +3258 +3259 +3260 +3261 +3262 +3263 +3264 +3265 +3266 +3267 +3268 +3269 +3270 +3271 +3272 +3273 +3274 +3275 +3276 +3277 +3278 +3279 +3280 +3281 +3282 +3283 +3284 +3285 +3286 +3287 +3288 +3289 +3290 +3291 +3292 +3293 +3294 +3295 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3304 +3305 +3306 +3307 +3308 +3309 +3310 +3311 +3312 +3313 +3314 +3315 +3316 +3317 +3318 +3319 +3320 +3321 +3322 +3323 +3324 +3325 +3326 +3327 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3336 +3337 +3338 +3339 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3347 +) +; +} + +topWall +{ + type cellZone; +cellLabels List<label> +540 +( +3348 +3349 +3350 +3351 +3352 +3353 +3354 +3355 +3356 +3357 +3358 +3359 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3368 +3369 +3370 +3371 +3372 +3373 +3374 +3375 +3376 +3377 +3378 +3379 +3380 +3381 +3382 +3383 +3384 +3385 +3386 +3387 +3388 +3389 +3390 +3391 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3400 +3401 +3402 +3403 +3404 +3405 +3406 +3407 +3408 +3409 +3410 +3411 +3412 +3413 +3414 +3415 +3416 +3417 +3418 +3419 +3420 +3421 +3422 +3423 +3424 +3425 +3426 +3427 +3428 +3429 +3430 +3431 +3432 +3433 +3434 +3435 +3436 +3437 +3438 +3439 +3440 +3441 +3442 +3443 +3444 +3445 +3446 +3447 +3448 +3449 +3450 +3451 +3452 +3453 +3454 +3455 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3464 +3465 +3466 +3467 +3468 +3469 +3470 +3471 +3472 +3473 +3474 +3475 +3476 +3477 +3478 +3479 +3480 +3481 +3482 +3483 +3484 +3485 +3486 +3487 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3496 +3497 +3498 +3499 +3500 +3501 +3502 +3503 +3504 +3505 +3506 +3507 +3508 +3509 +3510 +3511 +3512 +3513 +3514 +3515 +3516 +3517 +3518 +3519 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3528 +3529 +3530 +3531 +3532 +3533 +3534 +3535 +3536 +3537 +3538 +3539 +3540 +3541 +3542 +3543 +3544 +3545 +3546 +3547 +3548 +3549 +3550 +3551 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3560 +3561 +3562 +3563 +3564 +3565 +3566 +3567 +3568 +3569 +3570 +3571 +3572 +3573 +3574 +3575 +3576 +3577 +3578 +3579 +3580 +3581 +3582 +3583 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3592 +3593 +3594 +3595 +3596 +3597 +3598 +3599 +3600 +3601 +3602 +3603 +3604 +3605 +3606 +3607 +3608 +3609 +3610 +3611 +3612 +3613 +3614 +3615 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3624 +3625 +3626 +3627 +3628 +3629 +3630 +3631 +3632 +3633 +3634 +3635 +3636 +3637 +3638 +3639 +3640 +3641 +3642 +3643 +3644 +3645 +3646 +3647 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3656 +3657 +3658 +3659 +3660 +3661 +3662 +3663 +3664 +3665 +3666 +3667 +3668 +3669 +3670 +3671 +3672 +3673 +3674 +3675 +3676 +3677 +3678 +3679 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3688 +3689 +3690 +3691 +3692 +3693 +3694 +3695 +3696 +3697 +3698 +3699 +3700 +3701 +3702 +3703 +3704 +3705 +3706 +3707 +3708 +3709 +3710 +3711 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3720 +3721 +3722 +3723 +3724 +3725 +3726 +3727 +3728 +3729 +3730 +3731 +3732 +3733 +3734 +3735 +3736 +3737 +3738 +3739 +3740 +3741 +3742 +3743 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3752 +3753 +3754 +3755 +3756 +3757 +3758 +3759 +3760 +3761 +3762 +3763 +3764 +3765 +3766 +3767 +3768 +3769 +3770 +3771 +3772 +3773 +3774 +3775 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3784 +3785 +3786 +3787 +3788 +3789 +3790 +3791 +3792 +3793 +3794 +3795 +3796 +3797 +3798 +3799 +3800 +3801 +3802 +3803 +3804 +3805 +3806 +3807 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3816 +3817 +3818 +3819 +3820 +3821 +3822 +3823 +3824 +3825 +3826 +3827 +3828 +3829 +3830 +3831 +3832 +3833 +3834 +3835 +3836 +3837 +3838 +3839 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3848 +3849 +3850 +3851 +3852 +3853 +3854 +3855 +3856 +3857 +3858 +3859 +3860 +3861 +3862 +3863 +3864 +3865 +3866 +3867 +3868 +3869 +3870 +3871 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3880 +3881 +3882 +3883 +3884 +3885 +3886 +3887 +) +; +} +) + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/faces b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/faces new file mode 100644 index 0000000000000000000000000000000000000000..722effb830a78a45707b01dad7d0843688de0aa1 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/faces @@ -0,0 +1,12642 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class faceList; + location "constant/polyMesh"; + object faces; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +12618 +( +4(1 17 81 65) +4(16 80 81 17) +4(64 65 81 80) +4(2 18 82 66) +4(17 81 82 18) +4(65 66 82 81) +4(3 19 83 67) +4(18 82 83 19) +4(66 67 83 82) +4(4 20 84 68) +4(19 83 84 20) +4(67 68 84 83) +4(5 21 85 69) +4(20 84 85 21) +4(68 69 85 84) +4(6 22 86 70) +4(21 85 86 22) +4(69 70 86 85) +4(7 23 87 71) +4(22 86 87 23) +4(70 71 87 86) +4(8 24 88 72) +4(23 87 88 24) +4(71 72 88 87) +4(9 25 89 73) +4(24 88 89 25) +4(72 73 89 88) +4(10 26 90 74) +4(25 89 90 26) +4(73 74 90 89) +4(11 27 91 75) +4(26 90 91 27) +4(74 75 91 90) +4(12 28 92 76) +4(27 91 92 28) +4(75 76 92 91) +4(13 29 93 77) +4(28 92 93 29) +4(76 77 93 92) +4(14 30 94 78) +4(29 93 94 30) +4(77 78 94 93) +4(30 94 95 31) +4(78 79 95 94) +4(15 31 95 79) +4(17 33 97 81) +4(32 96 97 33) +4(80 81 97 96) +4(18 34 98 82) +4(33 97 98 34) +4(81 82 98 97) +4(19 35 99 83) +4(34 98 99 35) +4(82 83 99 98) +4(20 36 100 84) +4(35 99 100 36) +4(83 84 100 99) +4(21 37 101 85) +4(36 100 101 37) +4(84 85 101 100) +4(22 38 102 86) +4(37 101 102 38) +4(85 86 102 101) +4(23 39 103 87) +4(38 102 103 39) +4(86 87 103 102) +4(24 40 104 88) +4(39 103 104 40) +4(87 88 104 103) +4(25 41 105 89) +4(40 104 105 41) +4(88 89 105 104) +4(26 42 106 90) +4(41 105 106 42) +4(89 90 106 105) +4(27 43 107 91) +4(42 106 107 43) +4(90 91 107 106) +4(28 44 108 92) +4(43 107 108 44) +4(91 92 108 107) +4(29 45 109 93) +4(44 108 109 45) +4(92 93 109 108) +4(30 46 110 94) +4(45 109 110 46) +4(93 94 110 109) +4(46 110 111 47) +4(94 95 111 110) +4(31 47 111 95) +4(33 49 113 97) +4(96 97 113 112) +4(48 112 113 49) +4(34 50 114 98) +4(97 98 114 113) +4(49 113 114 50) +4(35 51 115 99) +4(98 99 115 114) +4(50 114 115 51) +4(36 52 116 100) +4(99 100 116 115) +4(51 115 116 52) +4(37 53 117 101) +4(100 101 117 116) +4(52 116 117 53) +4(38 54 118 102) +4(101 102 118 117) +4(53 117 118 54) +4(39 55 119 103) +4(102 103 119 118) +4(54 118 119 55) +4(40 56 120 104) +4(103 104 120 119) +4(55 119 120 56) +4(41 57 121 105) +4(104 105 121 120) +4(56 120 121 57) +4(42 58 122 106) +4(105 106 122 121) +4(57 121 122 58) +4(43 59 123 107) +4(106 107 123 122) +4(58 122 123 59) +4(44 60 124 108) +4(107 108 124 123) +4(59 123 124 60) +4(45 61 125 109) +4(108 109 125 124) +4(60 124 125 61) +4(46 62 126 110) +4(109 110 126 125) +4(61 125 126 62) +4(110 111 127 126) +4(47 63 127 111) +4(62 126 127 63) +4(65 81 145 129) +4(80 144 145 81) +4(128 129 145 144) +4(66 82 146 130) +4(81 145 146 82) +4(129 130 146 145) +4(67 83 147 131) +4(82 146 147 83) +4(130 131 147 146) +4(68 84 148 132) +4(83 147 148 84) +4(131 132 148 147) +4(69 85 149 133) +4(84 148 149 85) +4(132 133 149 148) +4(70 86 150 134) +4(85 149 150 86) +4(133 134 150 149) +4(71 87 151 135) +4(86 150 151 87) +4(134 135 151 150) +4(72 88 152 136) +4(87 151 152 88) +4(135 136 152 151) +4(73 89 153 137) +4(88 152 153 89) +4(136 137 153 152) +4(74 90 154 138) +4(89 153 154 90) +4(137 138 154 153) +4(75 91 155 139) +4(90 154 155 91) +4(138 139 155 154) +4(76 92 156 140) +4(91 155 156 92) +4(139 140 156 155) +4(77 93 157 141) +4(92 156 157 93) +4(140 141 157 156) +4(78 94 158 142) +4(93 157 158 94) +4(141 142 158 157) +4(94 158 159 95) +4(142 143 159 158) +4(79 95 159 143) +4(81 97 161 145) +4(96 160 161 97) +4(144 145 161 160) +4(82 98 162 146) +4(97 161 162 98) +4(145 146 162 161) +4(83 99 163 147) +4(98 162 163 99) +4(146 147 163 162) +4(84 100 164 148) +4(99 163 164 100) +4(147 148 164 163) +4(85 101 165 149) +4(100 164 165 101) +4(148 149 165 164) +4(86 102 166 150) +4(101 165 166 102) +4(149 150 166 165) +4(87 103 167 151) +4(102 166 167 103) +4(150 151 167 166) +4(88 104 168 152) +4(103 167 168 104) +4(151 152 168 167) +4(89 105 169 153) +4(104 168 169 105) +4(152 153 169 168) +4(90 106 170 154) +4(105 169 170 106) +4(153 154 170 169) +4(91 107 171 155) +4(106 170 171 107) +4(154 155 171 170) +4(92 108 172 156) +4(107 171 172 108) +4(155 156 172 171) +4(93 109 173 157) +4(108 172 173 109) +4(156 157 173 172) +4(94 110 174 158) +4(109 173 174 110) +4(157 158 174 173) +4(110 174 175 111) +4(158 159 175 174) +4(95 111 175 159) +4(97 113 177 161) +4(160 161 177 176) +4(112 176 177 113) +4(98 114 178 162) +4(161 162 178 177) +4(113 177 178 114) +4(99 115 179 163) +4(162 163 179 178) +4(114 178 179 115) +4(100 116 180 164) +4(163 164 180 179) +4(115 179 180 116) +4(101 117 181 165) +4(164 165 181 180) +4(116 180 181 117) +4(102 118 182 166) +4(165 166 182 181) +4(117 181 182 118) +4(103 119 183 167) +4(166 167 183 182) +4(118 182 183 119) +4(104 120 184 168) +4(167 168 184 183) +4(119 183 184 120) +4(105 121 185 169) +4(168 169 185 184) +4(120 184 185 121) +4(106 122 186 170) +4(169 170 186 185) +4(121 185 186 122) +4(107 123 187 171) +4(170 171 187 186) +4(122 186 187 123) +4(108 124 188 172) +4(171 172 188 187) +4(123 187 188 124) +4(109 125 189 173) +4(172 173 189 188) +4(124 188 189 125) +4(110 126 190 174) +4(173 174 190 189) +4(125 189 190 126) +4(174 175 191 190) +4(111 127 191 175) +4(126 190 191 127) +4(129 145 209 193) +4(144 208 209 145) +4(192 193 209 208) +4(130 146 210 194) +4(145 209 210 146) +4(193 194 210 209) +4(131 147 211 195) +4(146 210 211 147) +4(194 195 211 210) +4(132 148 212 196) +4(147 211 212 148) +4(195 196 212 211) +4(133 149 213 197) +4(148 212 213 149) +4(196 197 213 212) +4(134 150 214 198) +4(149 213 214 150) +4(197 198 214 213) +4(135 151 215 199) +4(150 214 215 151) +4(198 199 215 214) +4(136 152 216 200) +4(151 215 216 152) +4(199 200 216 215) +4(137 153 217 201) +4(152 216 217 153) +4(200 201 217 216) +4(138 154 218 202) +4(153 217 218 154) +4(201 202 218 217) +4(139 155 219 203) +4(154 218 219 155) +4(202 203 219 218) +4(140 156 220 204) +4(155 219 220 156) +4(203 204 220 219) +4(141 157 221 205) +4(156 220 221 157) +4(204 205 221 220) +4(142 158 222 206) +4(157 221 222 158) +4(205 206 222 221) +4(158 222 223 159) +4(206 207 223 222) +4(143 159 223 207) +4(145 161 225 209) +4(160 224 225 161) +4(208 209 225 224) +4(146 162 226 210) +4(161 225 226 162) +4(209 210 226 225) +4(147 163 227 211) +4(162 226 227 163) +4(210 211 227 226) +4(148 164 228 212) +4(163 227 228 164) +4(211 212 228 227) +4(149 165 229 213) +4(164 228 229 165) +4(212 213 229 228) +4(150 166 230 214) +4(165 229 230 166) +4(213 214 230 229) +4(151 167 231 215) +4(166 230 231 167) +4(214 215 231 230) +4(152 168 232 216) +4(167 231 232 168) +4(215 216 232 231) +4(153 169 233 217) +4(168 232 233 169) +4(216 217 233 232) +4(154 170 234 218) +4(169 233 234 170) +4(217 218 234 233) +4(155 171 235 219) +4(170 234 235 171) +4(218 219 235 234) +4(156 172 236 220) +4(171 235 236 172) +4(219 220 236 235) +4(157 173 237 221) +4(172 236 237 173) +4(220 221 237 236) +4(158 174 238 222) +4(173 237 238 174) +4(221 222 238 237) +4(174 238 239 175) +4(222 223 239 238) +4(159 175 239 223) +4(161 177 241 225) +4(224 225 241 240) +4(176 240 241 177) +4(162 178 242 226) +4(225 226 242 241) +4(177 241 242 178) +4(163 179 243 227) +4(226 227 243 242) +4(178 242 243 179) +4(164 180 244 228) +4(227 228 244 243) +4(179 243 244 180) +4(165 181 245 229) +4(228 229 245 244) +4(180 244 245 181) +4(166 182 246 230) +4(229 230 246 245) +4(181 245 246 182) +4(167 183 247 231) +4(230 231 247 246) +4(182 246 247 183) +4(168 184 248 232) +4(231 232 248 247) +4(183 247 248 184) +4(169 185 249 233) +4(232 233 249 248) +4(184 248 249 185) +4(170 186 250 234) +4(233 234 250 249) +4(185 249 250 186) +4(171 187 251 235) +4(234 235 251 250) +4(186 250 251 187) +4(172 188 252 236) +4(235 236 252 251) +4(187 251 252 188) +4(173 189 253 237) +4(236 237 253 252) +4(188 252 253 189) +4(174 190 254 238) +4(237 238 254 253) +4(189 253 254 190) +4(238 239 255 254) +4(175 191 255 239) +4(190 254 255 191) +4(193 209 273 257) +4(208 272 273 209) +4(256 257 273 272) +4(194 210 274 258) +4(209 273 274 210) +4(257 258 274 273) +4(195 211 275 259) +4(210 274 275 211) +4(258 259 275 274) +4(196 212 276 260) +4(211 275 276 212) +4(259 260 276 275) +4(197 213 277 261) +4(212 276 277 213) +4(260 261 277 276) +4(198 214 278 262) +4(213 277 278 214) +4(261 262 278 277) +4(199 215 279 263) +4(214 278 279 215) +4(262 263 279 278) +4(200 216 280 264) +4(215 279 280 216) +4(263 264 280 279) +4(201 217 281 265) +4(216 280 281 217) +4(264 265 281 280) +4(202 218 282 266) +4(217 281 282 218) +4(265 266 282 281) +4(203 219 283 267) +4(218 282 283 219) +4(266 267 283 282) +4(204 220 284 268) +4(219 283 284 220) +4(267 268 284 283) +4(205 221 285 269) +4(220 284 285 221) +4(268 269 285 284) +4(206 222 286 270) +4(221 285 286 222) +4(269 270 286 285) +4(222 286 287 223) +4(270 271 287 286) +4(207 223 287 271) +4(209 225 289 273) +4(224 288 289 225) +4(272 273 289 288) +4(210 226 290 274) +4(225 289 290 226) +4(273 274 290 289) +4(211 227 291 275) +4(226 290 291 227) +4(274 275 291 290) +4(212 228 292 276) +4(227 291 292 228) +4(275 276 292 291) +4(213 229 293 277) +4(228 292 293 229) +4(276 277 293 292) +4(214 230 294 278) +4(229 293 294 230) +4(277 278 294 293) +4(215 231 295 279) +4(230 294 295 231) +4(278 279 295 294) +4(216 232 296 280) +4(231 295 296 232) +4(279 280 296 295) +4(217 233 297 281) +4(232 296 297 233) +4(280 281 297 296) +4(218 234 298 282) +4(233 297 298 234) +4(281 282 298 297) +4(219 235 299 283) +4(234 298 299 235) +4(282 283 299 298) +4(220 236 300 284) +4(235 299 300 236) +4(283 284 300 299) +4(221 237 301 285) +4(236 300 301 237) +4(284 285 301 300) +4(222 238 302 286) +4(237 301 302 238) +4(285 286 302 301) +4(238 302 303 239) +4(286 287 303 302) +4(223 239 303 287) +4(225 241 305 289) +4(288 289 305 304) +4(240 304 305 241) +4(226 242 306 290) +4(289 290 306 305) +4(241 305 306 242) +4(227 243 307 291) +4(290 291 307 306) +4(242 306 307 243) +4(228 244 308 292) +4(291 292 308 307) +4(243 307 308 244) +4(229 245 309 293) +4(292 293 309 308) +4(244 308 309 245) +4(230 246 310 294) +4(293 294 310 309) +4(245 309 310 246) +4(231 247 311 295) +4(294 295 311 310) +4(246 310 311 247) +4(232 248 312 296) +4(295 296 312 311) +4(247 311 312 248) +4(233 249 313 297) +4(296 297 313 312) +4(248 312 313 249) +4(234 250 314 298) +4(297 298 314 313) +4(249 313 314 250) +4(235 251 315 299) +4(298 299 315 314) +4(250 314 315 251) +4(236 252 316 300) +4(299 300 316 315) +4(251 315 316 252) +4(237 253 317 301) +4(300 301 317 316) +4(252 316 317 253) +4(238 254 318 302) +4(301 302 318 317) +4(253 317 318 254) +4(302 303 319 318) +4(239 255 319 303) +4(254 318 319 255) +4(257 273 337 321) +4(272 336 337 273) +4(320 321 337 336) +4(258 274 338 322) +4(273 337 338 274) +4(321 322 338 337) +4(259 275 339 323) +4(274 338 339 275) +4(322 323 339 338) +4(260 276 340 324) +4(275 339 340 276) +4(323 324 340 339) +4(261 277 341 325) +4(276 340 341 277) +4(324 325 341 340) +4(262 278 342 326) +4(277 341 342 278) +4(325 326 342 341) +4(263 279 343 327) +4(278 342 343 279) +4(326 327 343 342) +4(264 280 344 328) +4(279 343 344 280) +4(327 328 344 343) +4(265 281 345 329) +4(280 344 345 281) +4(328 329 345 344) +4(266 282 346 330) +4(281 345 346 282) +4(329 330 346 345) +4(267 283 347 331) +4(282 346 347 283) +4(330 331 347 346) +4(268 284 348 332) +4(283 347 348 284) +4(331 332 348 347) +4(269 285 349 333) +4(284 348 349 285) +4(332 333 349 348) +4(270 286 350 334) +4(285 349 350 286) +4(333 334 350 349) +4(286 350 351 287) +4(334 335 351 350) +4(271 287 351 335) +4(273 289 353 337) +4(288 352 353 289) +4(336 337 353 352) +4(274 290 354 338) +4(289 353 354 290) +4(337 338 354 353) +4(275 291 355 339) +4(290 354 355 291) +4(338 339 355 354) +4(276 292 356 340) +4(291 355 356 292) +4(339 340 356 355) +4(277 293 357 341) +4(292 356 357 293) +4(340 341 357 356) +4(278 294 358 342) +4(293 357 358 294) +4(341 342 358 357) +4(279 295 359 343) +4(294 358 359 295) +4(342 343 359 358) +4(280 296 360 344) +4(295 359 360 296) +4(343 344 360 359) +4(281 297 361 345) +4(296 360 361 297) +4(344 345 361 360) +4(282 298 362 346) +4(297 361 362 298) +4(345 346 362 361) +4(283 299 363 347) +4(298 362 363 299) +4(346 347 363 362) +4(284 300 364 348) +4(299 363 364 300) +4(347 348 364 363) +4(285 301 365 349) +4(300 364 365 301) +4(348 349 365 364) +4(286 302 366 350) +4(301 365 366 302) +4(349 350 366 365) +4(302 366 367 303) +4(350 351 367 366) +4(287 303 367 351) +4(289 305 369 353) +4(352 353 369 368) +4(304 368 369 305) +4(290 306 370 354) +4(353 354 370 369) +4(305 369 370 306) +4(291 307 371 355) +4(354 355 371 370) +4(306 370 371 307) +4(292 308 372 356) +4(355 356 372 371) +4(307 371 372 308) +4(293 309 373 357) +4(356 357 373 372) +4(308 372 373 309) +4(294 310 374 358) +4(357 358 374 373) +4(309 373 374 310) +4(295 311 375 359) +4(358 359 375 374) +4(310 374 375 311) +4(296 312 376 360) +4(359 360 376 375) +4(311 375 376 312) +4(297 313 377 361) +4(360 361 377 376) +4(312 376 377 313) +4(298 314 378 362) +4(361 362 378 377) +4(313 377 378 314) +4(299 315 379 363) +4(362 363 379 378) +4(314 378 379 315) +4(300 316 380 364) +4(363 364 380 379) +4(315 379 380 316) +4(301 317 381 365) +4(364 365 381 380) +4(316 380 381 317) +4(302 318 382 366) +4(365 366 382 381) +4(317 381 382 318) +4(366 367 383 382) +4(303 319 383 367) +4(318 382 383 319) +4(321 337 401 385) +4(336 400 401 337) +4(322 338 402 386) +4(337 401 402 338) +4(323 339 403 387) +4(338 402 403 339) +4(324 340 404 388) +4(339 403 404 340) +4(325 341 405 389) +4(340 404 405 341) +4(326 342 406 390) +4(341 405 406 342) +4(327 343 407 391) +4(342 406 407 343) +4(328 344 408 392) +4(343 407 408 344) +4(329 345 409 393) +4(344 408 409 345) +4(330 346 410 394) +4(345 409 410 346) +4(331 347 411 395) +4(346 410 411 347) +4(332 348 412 396) +4(347 411 412 348) +4(333 349 413 397) +4(348 412 413 349) +4(334 350 414 398) +4(349 413 414 350) +4(350 414 415 351) +4(335 351 415 399) +4(337 353 417 401) +4(352 416 417 353) +4(338 354 418 402) +4(353 417 418 354) +4(339 355 419 403) +4(354 418 419 355) +4(340 356 420 404) +4(355 419 420 356) +4(341 357 421 405) +4(356 420 421 357) +4(342 358 422 406) +4(357 421 422 358) +4(343 359 423 407) +4(358 422 423 359) +4(344 360 424 408) +4(359 423 424 360) +4(345 361 425 409) +4(360 424 425 361) +4(346 362 426 410) +4(361 425 426 362) +4(347 363 427 411) +4(362 426 427 363) +4(348 364 428 412) +4(363 427 428 364) +4(349 365 429 413) +4(364 428 429 365) +4(350 366 430 414) +4(365 429 430 366) +4(366 430 431 367) +4(351 367 431 415) +4(353 369 433 417) +4(368 432 433 369) +4(354 370 434 418) +4(369 433 434 370) +4(355 371 435 419) +4(370 434 435 371) +4(356 372 436 420) +4(371 435 436 372) +4(357 373 437 421) +4(372 436 437 373) +4(358 374 438 422) +4(373 437 438 374) +4(359 375 439 423) +4(374 438 439 375) +4(360 376 440 424) +4(375 439 440 376) +4(361 377 441 425) +4(376 440 441 377) +4(362 378 442 426) +4(377 441 442 378) +4(363 379 443 427) +4(378 442 443 379) +4(364 380 444 428) +4(379 443 444 380) +4(365 381 445 429) +4(380 444 445 381) +4(366 382 446 430) +4(381 445 446 382) +4(367 383 447 431) +4(382 446 447 383) +4(448 451 463 460) +4(31 95 463 451) +4(79 460 463 95) +4(449 452 464 461) +4(451 463 464 452) +4(460 461 464 463) +4(452 464 465 453) +4(461 462 465 464) +4(450 453 465 462) +4(451 454 466 463) +4(47 111 466 454) +4(95 463 466 111) +4(452 455 467 464) +4(454 466 467 455) +4(463 464 467 466) +4(455 467 468 456) +4(464 465 468 467) +4(453 456 468 465) +4(454 457 469 466) +4(111 466 469 127) +4(63 127 469 457) +4(455 458 470 467) +4(466 467 470 469) +4(457 469 470 458) +4(467 468 471 470) +4(458 470 471 459) +4(456 459 471 468) +4(460 463 475 472) +4(95 159 475 463) +4(143 472 475 159) +4(461 464 476 473) +4(463 475 476 464) +4(472 473 476 475) +4(464 476 477 465) +4(473 474 477 476) +4(462 465 477 474) +4(463 466 478 475) +4(111 175 478 466) +4(159 475 478 175) +4(464 467 479 476) +4(466 478 479 467) +4(475 476 479 478) +4(467 479 480 468) +4(476 477 480 479) +4(465 468 480 477) +4(466 469 481 478) +4(175 478 481 191) +4(127 191 481 469) +4(467 470 482 479) +4(478 479 482 481) +4(469 481 482 470) +4(479 480 483 482) +4(470 482 483 471) +4(468 471 483 480) +4(472 475 487 484) +4(159 223 487 475) +4(207 484 487 223) +4(473 476 488 485) +4(475 487 488 476) +4(484 485 488 487) +4(476 488 489 477) +4(485 486 489 488) +4(474 477 489 486) +4(475 478 490 487) +4(175 239 490 478) +4(223 487 490 239) +4(476 479 491 488) +4(478 490 491 479) +4(487 488 491 490) +4(479 491 492 480) +4(488 489 492 491) +4(477 480 492 489) +4(478 481 493 490) +4(239 490 493 255) +4(191 255 493 481) +4(479 482 494 491) +4(490 491 494 493) +4(481 493 494 482) +4(491 492 495 494) +4(482 494 495 483) +4(480 483 495 492) +4(484 487 499 496) +4(223 287 499 487) +4(271 496 499 287) +4(485 488 500 497) +4(487 499 500 488) +4(496 497 500 499) +4(488 500 501 489) +4(497 498 501 500) +4(486 489 501 498) +4(487 490 502 499) +4(239 303 502 490) +4(287 499 502 303) +4(488 491 503 500) +4(490 502 503 491) +4(499 500 503 502) +4(491 503 504 492) +4(500 501 504 503) +4(489 492 504 501) +4(490 493 505 502) +4(303 502 505 319) +4(255 319 505 493) +4(491 494 506 503) +4(502 503 506 505) +4(493 505 506 494) +4(503 504 507 506) +4(494 506 507 495) +4(492 495 507 504) +4(496 499 511 508) +4(287 351 511 499) +4(335 508 511 351) +4(497 500 512 509) +4(499 511 512 500) +4(508 509 512 511) +4(500 512 513 501) +4(509 510 513 512) +4(498 501 513 510) +4(499 502 514 511) +4(303 367 514 502) +4(351 511 514 367) +4(500 503 515 512) +4(502 514 515 503) +4(511 512 515 514) +4(503 515 516 504) +4(512 513 516 515) +4(501 504 516 513) +4(502 505 517 514) +4(367 514 517 383) +4(319 383 517 505) +4(503 506 518 515) +4(514 515 518 517) +4(505 517 518 506) +4(515 516 519 518) +4(506 518 519 507) +4(504 507 519 516) +4(508 511 523 520) +4(351 415 523 511) +4(509 512 524 521) +4(511 523 524 512) +4(512 524 525 513) +4(510 513 525 522) +4(511 514 526 523) +4(367 431 526 514) +4(512 515 527 524) +4(514 526 527 515) +4(515 527 528 516) +4(513 516 528 525) +4(514 517 529 526) +4(383 447 529 517) +4(515 518 530 527) +4(517 529 530 518) +4(518 530 531 519) +4(516 519 531 528) +4(457 533 557 469) +4(532 556 557 533) +4(127 469 557 556) +4(63 127 556 532) +4(458 534 558 470) +4(533 557 558 534) +4(469 470 558 557) +4(534 558 559 535) +4(470 471 559 558) +4(459 535 559 471) +4(533 537 561 557) +4(536 560 561 537) +4(556 557 561 560) +4(532 556 560 536) +4(534 538 562 558) +4(537 561 562 538) +4(557 558 562 561) +4(538 562 563 539) +4(558 559 563 562) +4(535 539 563 559) +4(537 541 565 561) +4(540 564 565 541) +4(560 561 565 564) +4(536 560 564 540) +4(538 542 566 562) +4(541 565 566 542) +4(561 562 566 565) +4(542 566 567 543) +4(562 563 567 566) +4(539 543 567 563) +4(541 545 569 565) +4(544 568 569 545) +4(564 565 569 568) +4(540 564 568 544) +4(542 546 570 566) +4(545 569 570 546) +4(565 566 570 569) +4(546 570 571 547) +4(566 567 571 570) +4(543 547 571 567) +4(545 549 573 569) +4(548 572 573 549) +4(568 569 573 572) +4(544 568 572 548) +4(546 550 574 570) +4(549 573 574 550) +4(569 570 574 573) +4(550 574 575 551) +4(570 571 575 574) +4(547 551 575 571) +4(549 553 577 573) +4(572 573 577 576) +4(548 572 576 552) +4(552 576 577 553) +4(550 554 578 574) +4(573 574 578 577) +4(553 577 578 554) +4(574 575 579 578) +4(554 578 579 555) +4(551 555 579 575) +4(469 557 581 481) +4(556 580 581 557) +4(191 481 581 580) +4(127 191 580 556) +4(470 558 582 482) +4(557 581 582 558) +4(481 482 582 581) +4(558 582 583 559) +4(482 483 583 582) +4(471 559 583 483) +4(557 561 585 581) +4(560 584 585 561) +4(580 581 585 584) +4(556 580 584 560) +4(558 562 586 582) +4(561 585 586 562) +4(581 582 586 585) +4(562 586 587 563) +4(582 583 587 586) +4(559 563 587 583) +4(561 565 589 585) +4(564 588 589 565) +4(584 585 589 588) +4(560 584 588 564) +4(562 566 590 586) +4(565 589 590 566) +4(585 586 590 589) +4(566 590 591 567) +4(586 587 591 590) +4(563 567 591 587) +4(565 569 593 589) +4(568 592 593 569) +4(588 589 593 592) +4(564 588 592 568) +4(566 570 594 590) +4(569 593 594 570) +4(589 590 594 593) +4(570 594 595 571) +4(590 591 595 594) +4(567 571 595 591) +4(569 573 597 593) +4(572 596 597 573) +4(592 593 597 596) +4(568 592 596 572) +4(570 574 598 594) +4(573 597 598 574) +4(593 594 598 597) +4(574 598 599 575) +4(594 595 599 598) +4(571 575 599 595) +4(573 577 601 597) +4(596 597 601 600) +4(572 596 600 576) +4(576 600 601 577) +4(574 578 602 598) +4(597 598 602 601) +4(577 601 602 578) +4(598 599 603 602) +4(578 602 603 579) +4(575 579 603 599) +4(481 581 605 493) +4(580 604 605 581) +4(255 493 605 604) +4(191 255 604 580) +4(482 582 606 494) +4(581 605 606 582) +4(493 494 606 605) +4(582 606 607 583) +4(494 495 607 606) +4(483 583 607 495) +4(581 585 609 605) +4(584 608 609 585) +4(604 605 609 608) +4(580 604 608 584) +4(582 586 610 606) +4(585 609 610 586) +4(605 606 610 609) +4(586 610 611 587) +4(606 607 611 610) +4(583 587 611 607) +4(585 589 613 609) +4(588 612 613 589) +4(608 609 613 612) +4(584 608 612 588) +4(586 590 614 610) +4(589 613 614 590) +4(609 610 614 613) +4(590 614 615 591) +4(610 611 615 614) +4(587 591 615 611) +4(589 593 617 613) +4(592 616 617 593) +4(612 613 617 616) +4(588 612 616 592) +4(590 594 618 614) +4(593 617 618 594) +4(613 614 618 617) +4(594 618 619 595) +4(614 615 619 618) +4(591 595 619 615) +4(593 597 621 617) +4(596 620 621 597) +4(616 617 621 620) +4(592 616 620 596) +4(594 598 622 618) +4(597 621 622 598) +4(617 618 622 621) +4(598 622 623 599) +4(618 619 623 622) +4(595 599 623 619) +4(597 601 625 621) +4(620 621 625 624) +4(596 620 624 600) +4(600 624 625 601) +4(598 602 626 622) +4(621 622 626 625) +4(601 625 626 602) +4(622 623 627 626) +4(602 626 627 603) +4(599 603 627 623) +4(493 605 629 505) +4(604 628 629 605) +4(319 505 629 628) +4(255 319 628 604) +4(494 606 630 506) +4(605 629 630 606) +4(505 506 630 629) +4(606 630 631 607) +4(506 507 631 630) +4(495 607 631 507) +4(605 609 633 629) +4(608 632 633 609) +4(628 629 633 632) +4(604 628 632 608) +4(606 610 634 630) +4(609 633 634 610) +4(629 630 634 633) +4(610 634 635 611) +4(630 631 635 634) +4(607 611 635 631) +4(609 613 637 633) +4(612 636 637 613) +4(632 633 637 636) +4(608 632 636 612) +4(610 614 638 634) +4(613 637 638 614) +4(633 634 638 637) +4(614 638 639 615) +4(634 635 639 638) +4(611 615 639 635) +4(613 617 641 637) +4(616 640 641 617) +4(636 637 641 640) +4(612 636 640 616) +4(614 618 642 638) +4(617 641 642 618) +4(637 638 642 641) +4(618 642 643 619) +4(638 639 643 642) +4(615 619 643 639) +4(617 621 645 641) +4(620 644 645 621) +4(640 641 645 644) +4(616 640 644 620) +4(618 622 646 642) +4(621 645 646 622) +4(641 642 646 645) +4(622 646 647 623) +4(642 643 647 646) +4(619 623 647 643) +4(621 625 649 645) +4(644 645 649 648) +4(620 644 648 624) +4(624 648 649 625) +4(622 626 650 646) +4(645 646 650 649) +4(625 649 650 626) +4(646 647 651 650) +4(626 650 651 627) +4(623 627 651 647) +4(505 629 653 517) +4(628 652 653 629) +4(383 517 653 652) +4(319 383 652 628) +4(506 630 654 518) +4(629 653 654 630) +4(517 518 654 653) +4(630 654 655 631) +4(518 519 655 654) +4(507 631 655 519) +4(629 633 657 653) +4(632 656 657 633) +4(652 653 657 656) +4(628 652 656 632) +4(630 634 658 654) +4(633 657 658 634) +4(653 654 658 657) +4(634 658 659 635) +4(654 655 659 658) +4(631 635 659 655) +4(633 637 661 657) +4(636 660 661 637) +4(656 657 661 660) +4(632 656 660 636) +4(634 638 662 658) +4(637 661 662 638) +4(657 658 662 661) +4(638 662 663 639) +4(658 659 663 662) +4(635 639 663 659) +4(637 641 665 661) +4(640 664 665 641) +4(660 661 665 664) +4(636 660 664 640) +4(638 642 666 662) +4(641 665 666 642) +4(661 662 666 665) +4(642 666 667 643) +4(662 663 667 666) +4(639 643 667 663) +4(641 645 669 665) +4(644 668 669 645) +4(664 665 669 668) +4(640 664 668 644) +4(642 646 670 666) +4(645 669 670 646) +4(665 666 670 669) +4(646 670 671 647) +4(666 667 671 670) +4(643 647 671 667) +4(645 649 673 669) +4(668 669 673 672) +4(644 668 672 648) +4(648 672 673 649) +4(646 650 674 670) +4(669 670 674 673) +4(649 673 674 650) +4(670 671 675 674) +4(650 674 675 651) +4(647 651 675 671) +4(517 653 677 529) +4(652 676 677 653) +4(383 447 676 652) +4(518 654 678 530) +4(653 677 678 654) +4(654 678 679 655) +4(519 655 679 531) +4(653 657 681 677) +4(656 680 681 657) +4(652 676 680 656) +4(654 658 682 678) +4(657 681 682 658) +4(658 682 683 659) +4(655 659 683 679) +4(657 661 685 681) +4(660 684 685 661) +4(656 680 684 660) +4(658 662 686 682) +4(661 685 686 662) +4(662 686 687 663) +4(659 663 687 683) +4(661 665 689 685) +4(664 688 689 665) +4(660 684 688 664) +4(662 666 690 686) +4(665 689 690 666) +4(666 690 691 667) +4(663 667 691 687) +4(665 669 693 689) +4(668 692 693 669) +4(664 688 692 668) +4(666 670 694 690) +4(669 693 694 670) +4(670 694 695 671) +4(667 671 695 691) +4(669 673 697 693) +4(668 692 696 672) +4(672 696 697 673) +4(670 674 698 694) +4(673 697 698 674) +4(674 698 699 675) +4(671 675 699 695) +4(700 709 745 736) +4(453 465 745 709) +4(462 736 745 465) +4(701 710 746 737) +4(709 745 746 710) +4(736 737 746 745) +4(702 711 747 738) +4(710 746 747 711) +4(737 738 747 746) +4(703 712 748 739) +4(711 747 748 712) +4(738 739 748 747) +4(704 713 749 740) +4(712 748 749 713) +4(739 740 749 748) +4(705 714 750 741) +4(713 749 750 714) +4(740 741 750 749) +4(706 715 751 742) +4(714 750 751 715) +4(741 742 751 750) +4(707 716 752 743) +4(715 751 752 716) +4(742 743 752 751) +4(716 752 753 717) +4(743 744 753 752) +4(709 718 754 745) +4(456 468 754 718) +4(465 745 754 468) +4(710 719 755 746) +4(718 754 755 719) +4(745 746 755 754) +4(711 720 756 747) +4(719 755 756 720) +4(746 747 756 755) +4(712 721 757 748) +4(720 756 757 721) +4(747 748 757 756) +4(713 722 758 749) +4(721 757 758 722) +4(748 749 758 757) +4(714 723 759 750) +4(722 758 759 723) +4(749 750 759 758) +4(715 724 760 751) +4(723 759 760 724) +4(750 751 760 759) +4(716 725 761 752) +4(724 760 761 725) +4(751 752 761 760) +4(725 761 762 726) +4(752 753 762 761) +4(718 727 763 754) +4(468 754 763 471) +4(459 471 763 727) +4(719 728 764 755) +4(754 755 764 763) +4(727 763 764 728) +4(720 729 765 756) +4(755 756 765 764) +4(728 764 765 729) +4(721 730 766 757) +4(756 757 766 765) +4(729 765 766 730) +4(722 731 767 758) +4(757 758 767 766) +4(730 766 767 731) +4(723 732 768 759) +4(758 759 768 767) +4(731 767 768 732) +4(724 733 769 760) +4(759 760 769 768) +4(732 768 769 733) +4(725 734 770 761) +4(760 761 770 769) +4(733 769 770 734) +4(761 762 771 770) +4(734 770 771 735) +4(736 745 781 772) +4(465 477 781 745) +4(474 772 781 477) +4(737 746 782 773) +4(745 781 782 746) +4(772 773 782 781) +4(738 747 783 774) +4(746 782 783 747) +4(773 774 783 782) +4(739 748 784 775) +4(747 783 784 748) +4(774 775 784 783) +4(740 749 785 776) +4(748 784 785 749) +4(775 776 785 784) +4(741 750 786 777) +4(749 785 786 750) +4(776 777 786 785) +4(742 751 787 778) +4(750 786 787 751) +4(777 778 787 786) +4(743 752 788 779) +4(751 787 788 752) +4(778 779 788 787) +4(752 788 789 753) +4(779 780 789 788) +4(745 754 790 781) +4(468 480 790 754) +4(477 781 790 480) +4(746 755 791 782) +4(754 790 791 755) +4(781 782 791 790) +4(747 756 792 783) +4(755 791 792 756) +4(782 783 792 791) +4(748 757 793 784) +4(756 792 793 757) +4(783 784 793 792) +4(749 758 794 785) +4(757 793 794 758) +4(784 785 794 793) +4(750 759 795 786) +4(758 794 795 759) +4(785 786 795 794) +4(751 760 796 787) +4(759 795 796 760) +4(786 787 796 795) +4(752 761 797 788) +4(760 796 797 761) +4(787 788 797 796) +4(761 797 798 762) +4(788 789 798 797) +4(754 763 799 790) +4(480 790 799 483) +4(471 483 799 763) +4(755 764 800 791) +4(790 791 800 799) +4(763 799 800 764) +4(756 765 801 792) +4(791 792 801 800) +4(764 800 801 765) +4(757 766 802 793) +4(792 793 802 801) +4(765 801 802 766) +4(758 767 803 794) +4(793 794 803 802) +4(766 802 803 767) +4(759 768 804 795) +4(794 795 804 803) +4(767 803 804 768) +4(760 769 805 796) +4(795 796 805 804) +4(768 804 805 769) +4(761 770 806 797) +4(796 797 806 805) +4(769 805 806 770) +4(797 798 807 806) +4(770 806 807 771) +4(772 781 817 808) +4(477 489 817 781) +4(486 808 817 489) +4(773 782 818 809) +4(781 817 818 782) +4(808 809 818 817) +4(774 783 819 810) +4(782 818 819 783) +4(809 810 819 818) +4(775 784 820 811) +4(783 819 820 784) +4(810 811 820 819) +4(776 785 821 812) +4(784 820 821 785) +4(811 812 821 820) +4(777 786 822 813) +4(785 821 822 786) +4(812 813 822 821) +4(778 787 823 814) +4(786 822 823 787) +4(813 814 823 822) +4(779 788 824 815) +4(787 823 824 788) +4(814 815 824 823) +4(788 824 825 789) +4(815 816 825 824) +4(781 790 826 817) +4(480 492 826 790) +4(489 817 826 492) +4(782 791 827 818) +4(790 826 827 791) +4(817 818 827 826) +4(783 792 828 819) +4(791 827 828 792) +4(818 819 828 827) +4(784 793 829 820) +4(792 828 829 793) +4(819 820 829 828) +4(785 794 830 821) +4(793 829 830 794) +4(820 821 830 829) +4(786 795 831 822) +4(794 830 831 795) +4(821 822 831 830) +4(787 796 832 823) +4(795 831 832 796) +4(822 823 832 831) +4(788 797 833 824) +4(796 832 833 797) +4(823 824 833 832) +4(797 833 834 798) +4(824 825 834 833) +4(790 799 835 826) +4(492 826 835 495) +4(483 495 835 799) +4(791 800 836 827) +4(826 827 836 835) +4(799 835 836 800) +4(792 801 837 828) +4(827 828 837 836) +4(800 836 837 801) +4(793 802 838 829) +4(828 829 838 837) +4(801 837 838 802) +4(794 803 839 830) +4(829 830 839 838) +4(802 838 839 803) +4(795 804 840 831) +4(830 831 840 839) +4(803 839 840 804) +4(796 805 841 832) +4(831 832 841 840) +4(804 840 841 805) +4(797 806 842 833) +4(832 833 842 841) +4(805 841 842 806) +4(833 834 843 842) +4(806 842 843 807) +4(808 817 853 844) +4(489 501 853 817) +4(498 844 853 501) +4(809 818 854 845) +4(817 853 854 818) +4(844 845 854 853) +4(810 819 855 846) +4(818 854 855 819) +4(845 846 855 854) +4(811 820 856 847) +4(819 855 856 820) +4(846 847 856 855) +4(812 821 857 848) +4(820 856 857 821) +4(847 848 857 856) +4(813 822 858 849) +4(821 857 858 822) +4(848 849 858 857) +4(814 823 859 850) +4(822 858 859 823) +4(849 850 859 858) +4(815 824 860 851) +4(823 859 860 824) +4(850 851 860 859) +4(824 860 861 825) +4(851 852 861 860) +4(817 826 862 853) +4(492 504 862 826) +4(501 853 862 504) +4(818 827 863 854) +4(826 862 863 827) +4(853 854 863 862) +4(819 828 864 855) +4(827 863 864 828) +4(854 855 864 863) +4(820 829 865 856) +4(828 864 865 829) +4(855 856 865 864) +4(821 830 866 857) +4(829 865 866 830) +4(856 857 866 865) +4(822 831 867 858) +4(830 866 867 831) +4(857 858 867 866) +4(823 832 868 859) +4(831 867 868 832) +4(858 859 868 867) +4(824 833 869 860) +4(832 868 869 833) +4(859 860 869 868) +4(833 869 870 834) +4(860 861 870 869) +4(826 835 871 862) +4(504 862 871 507) +4(495 507 871 835) +4(827 836 872 863) +4(862 863 872 871) +4(835 871 872 836) +4(828 837 873 864) +4(863 864 873 872) +4(836 872 873 837) +4(829 838 874 865) +4(864 865 874 873) +4(837 873 874 838) +4(830 839 875 866) +4(865 866 875 874) +4(838 874 875 839) +4(831 840 876 867) +4(866 867 876 875) +4(839 875 876 840) +4(832 841 877 868) +4(867 868 877 876) +4(840 876 877 841) +4(833 842 878 869) +4(868 869 878 877) +4(841 877 878 842) +4(869 870 879 878) +4(842 878 879 843) +4(844 853 889 880) +4(501 513 889 853) +4(510 880 889 513) +4(845 854 890 881) +4(853 889 890 854) +4(880 881 890 889) +4(846 855 891 882) +4(854 890 891 855) +4(881 882 891 890) +4(847 856 892 883) +4(855 891 892 856) +4(882 883 892 891) +4(848 857 893 884) +4(856 892 893 857) +4(883 884 893 892) +4(849 858 894 885) +4(857 893 894 858) +4(884 885 894 893) +4(850 859 895 886) +4(858 894 895 859) +4(885 886 895 894) +4(851 860 896 887) +4(859 895 896 860) +4(886 887 896 895) +4(860 896 897 861) +4(887 888 897 896) +4(853 862 898 889) +4(504 516 898 862) +4(513 889 898 516) +4(854 863 899 890) +4(862 898 899 863) +4(889 890 899 898) +4(855 864 900 891) +4(863 899 900 864) +4(890 891 900 899) +4(856 865 901 892) +4(864 900 901 865) +4(891 892 901 900) +4(857 866 902 893) +4(865 901 902 866) +4(892 893 902 901) +4(858 867 903 894) +4(866 902 903 867) +4(893 894 903 902) +4(859 868 904 895) +4(867 903 904 868) +4(894 895 904 903) +4(860 869 905 896) +4(868 904 905 869) +4(895 896 905 904) +4(869 905 906 870) +4(896 897 906 905) +4(862 871 907 898) +4(516 898 907 519) +4(507 519 907 871) +4(863 872 908 899) +4(898 899 908 907) +4(871 907 908 872) +4(864 873 909 900) +4(899 900 909 908) +4(872 908 909 873) +4(865 874 910 901) +4(900 901 910 909) +4(873 909 910 874) +4(866 875 911 902) +4(901 902 911 910) +4(874 910 911 875) +4(867 876 912 903) +4(902 903 912 911) +4(875 911 912 876) +4(868 877 913 904) +4(903 904 913 912) +4(876 912 913 877) +4(869 878 914 905) +4(904 905 914 913) +4(877 913 914 878) +4(905 906 915 914) +4(878 914 915 879) +4(880 889 925 916) +4(513 525 925 889) +4(881 890 926 917) +4(889 925 926 890) +4(882 891 927 918) +4(890 926 927 891) +4(883 892 928 919) +4(891 927 928 892) +4(884 893 929 920) +4(892 928 929 893) +4(885 894 930 921) +4(893 929 930 894) +4(886 895 931 922) +4(894 930 931 895) +4(887 896 932 923) +4(895 931 932 896) +4(896 932 933 897) +4(889 898 934 925) +4(516 528 934 898) +4(890 899 935 926) +4(898 934 935 899) +4(891 900 936 927) +4(899 935 936 900) +4(892 901 937 928) +4(900 936 937 901) +4(893 902 938 929) +4(901 937 938 902) +4(894 903 939 930) +4(902 938 939 903) +4(895 904 940 931) +4(903 939 940 904) +4(896 905 941 932) +4(904 940 941 905) +4(905 941 942 906) +4(898 907 943 934) +4(519 531 943 907) +4(899 908 944 935) +4(907 943 944 908) +4(900 909 945 936) +4(908 944 945 909) +4(901 910 946 937) +4(909 945 946 910) +4(902 911 947 938) +4(910 946 947 911) +4(903 912 948 939) +4(911 947 948 912) +4(904 913 949 940) +4(912 948 949 913) +4(905 914 950 941) +4(913 949 950 914) +4(914 950 951 915) +4(49 953 1043 113) +4(952 1042 1043 953) +4(112 113 1043 1042) +4(50 954 1044 114) +4(953 1043 1044 954) +4(113 114 1044 1043) +4(51 955 1045 115) +4(954 1044 1045 955) +4(114 115 1045 1044) +4(52 956 1046 116) +4(955 1045 1046 956) +4(115 116 1046 1045) +4(53 957 1047 117) +4(956 1046 1047 957) +4(116 117 1047 1046) +4(54 958 1048 118) +4(957 1047 1048 958) +4(117 118 1048 1047) +4(55 959 1049 119) +4(958 1048 1049 959) +4(118 119 1049 1048) +4(56 960 1050 120) +4(959 1049 1050 960) +4(119 120 1050 1049) +4(57 961 1051 121) +4(960 1050 1051 961) +4(120 121 1051 1050) +4(58 962 1052 122) +4(961 1051 1052 962) +4(121 122 1052 1051) +4(59 963 1053 123) +4(962 1052 1053 963) +4(122 123 1053 1052) +4(60 964 1054 124) +4(963 1053 1054 964) +4(123 124 1054 1053) +4(61 965 1055 125) +4(964 1054 1055 965) +4(124 125 1055 1054) +4(62 966 1056 126) +4(965 1055 1056 966) +4(125 126 1056 1055) +4(966 1056 556 532) +4(126 127 556 1056) +4(953 968 1058 1043) +4(967 1057 1058 968) +4(1042 1043 1058 1057) +4(954 969 1059 1044) +4(968 1058 1059 969) +4(1043 1044 1059 1058) +4(955 970 1060 1045) +4(969 1059 1060 970) +4(1044 1045 1060 1059) +4(956 971 1061 1046) +4(970 1060 1061 971) +4(1045 1046 1061 1060) +4(957 972 1062 1047) +4(971 1061 1062 972) +4(1046 1047 1062 1061) +4(958 973 1063 1048) +4(972 1062 1063 973) +4(1047 1048 1063 1062) +4(959 974 1064 1049) +4(973 1063 1064 974) +4(1048 1049 1064 1063) +4(960 975 1065 1050) +4(974 1064 1065 975) +4(1049 1050 1065 1064) +4(961 976 1066 1051) +4(975 1065 1066 976) +4(1050 1051 1066 1065) +4(962 977 1067 1052) +4(976 1066 1067 977) +4(1051 1052 1067 1066) +4(963 978 1068 1053) +4(977 1067 1068 978) +4(1052 1053 1068 1067) +4(964 979 1069 1054) +4(978 1068 1069 979) +4(1053 1054 1069 1068) +4(965 980 1070 1055) +4(979 1069 1070 980) +4(1054 1055 1070 1069) +4(966 981 1071 1056) +4(980 1070 1071 981) +4(1055 1056 1071 1070) +4(981 1071 560 536) +4(1056 556 560 1071) +4(968 983 1073 1058) +4(982 1072 1073 983) +4(1057 1058 1073 1072) +4(969 984 1074 1059) +4(983 1073 1074 984) +4(1058 1059 1074 1073) +4(970 985 1075 1060) +4(984 1074 1075 985) +4(1059 1060 1075 1074) +4(971 986 1076 1061) +4(985 1075 1076 986) +4(1060 1061 1076 1075) +4(972 987 1077 1062) +4(986 1076 1077 987) +4(1061 1062 1077 1076) +4(973 988 1078 1063) +4(987 1077 1078 988) +4(1062 1063 1078 1077) +4(974 989 1079 1064) +4(988 1078 1079 989) +4(1063 1064 1079 1078) +4(975 990 1080 1065) +4(989 1079 1080 990) +4(1064 1065 1080 1079) +4(976 991 1081 1066) +4(990 1080 1081 991) +4(1065 1066 1081 1080) +4(977 992 1082 1067) +4(991 1081 1082 992) +4(1066 1067 1082 1081) +4(978 993 1083 1068) +4(992 1082 1083 993) +4(1067 1068 1083 1082) +4(979 994 1084 1069) +4(993 1083 1084 994) +4(1068 1069 1084 1083) +4(980 995 1085 1070) +4(994 1084 1085 995) +4(1069 1070 1085 1084) +4(981 996 1086 1071) +4(995 1085 1086 996) +4(1070 1071 1086 1085) +4(996 1086 564 540) +4(1071 560 564 1086) +4(983 998 1088 1073) +4(997 1087 1088 998) +4(1072 1073 1088 1087) +4(984 999 1089 1074) +4(998 1088 1089 999) +4(1073 1074 1089 1088) +4(985 1000 1090 1075) +4(999 1089 1090 1000) +4(1074 1075 1090 1089) +4(986 1001 1091 1076) +4(1000 1090 1091 1001) +4(1075 1076 1091 1090) +4(987 1002 1092 1077) +4(1001 1091 1092 1002) +4(1076 1077 1092 1091) +4(988 1003 1093 1078) +4(1002 1092 1093 1003) +4(1077 1078 1093 1092) +4(989 1004 1094 1079) +4(1003 1093 1094 1004) +4(1078 1079 1094 1093) +4(990 1005 1095 1080) +4(1004 1094 1095 1005) +4(1079 1080 1095 1094) +4(991 1006 1096 1081) +4(1005 1095 1096 1006) +4(1080 1081 1096 1095) +4(992 1007 1097 1082) +4(1006 1096 1097 1007) +4(1081 1082 1097 1096) +4(993 1008 1098 1083) +4(1007 1097 1098 1008) +4(1082 1083 1098 1097) +4(994 1009 1099 1084) +4(1008 1098 1099 1009) +4(1083 1084 1099 1098) +4(995 1010 1100 1085) +4(1009 1099 1100 1010) +4(1084 1085 1100 1099) +4(996 1011 1101 1086) +4(1010 1100 1101 1011) +4(1085 1086 1101 1100) +4(1011 1101 568 544) +4(1086 564 568 1101) +4(998 1013 1103 1088) +4(1012 1102 1103 1013) +4(1087 1088 1103 1102) +4(999 1014 1104 1089) +4(1013 1103 1104 1014) +4(1088 1089 1104 1103) +4(1000 1015 1105 1090) +4(1014 1104 1105 1015) +4(1089 1090 1105 1104) +4(1001 1016 1106 1091) +4(1015 1105 1106 1016) +4(1090 1091 1106 1105) +4(1002 1017 1107 1092) +4(1016 1106 1107 1017) +4(1091 1092 1107 1106) +4(1003 1018 1108 1093) +4(1017 1107 1108 1018) +4(1092 1093 1108 1107) +4(1004 1019 1109 1094) +4(1018 1108 1109 1019) +4(1093 1094 1109 1108) +4(1005 1020 1110 1095) +4(1019 1109 1110 1020) +4(1094 1095 1110 1109) +4(1006 1021 1111 1096) +4(1020 1110 1111 1021) +4(1095 1096 1111 1110) +4(1007 1022 1112 1097) +4(1021 1111 1112 1022) +4(1096 1097 1112 1111) +4(1008 1023 1113 1098) +4(1022 1112 1113 1023) +4(1097 1098 1113 1112) +4(1009 1024 1114 1099) +4(1023 1113 1114 1024) +4(1098 1099 1114 1113) +4(1010 1025 1115 1100) +4(1024 1114 1115 1025) +4(1099 1100 1115 1114) +4(1011 1026 1116 1101) +4(1025 1115 1116 1026) +4(1100 1101 1116 1115) +4(1026 1116 572 548) +4(1101 568 572 1116) +4(1013 1028 1118 1103) +4(1102 1103 1118 1117) +4(1027 1117 1118 1028) +4(1014 1029 1119 1104) +4(1103 1104 1119 1118) +4(1028 1118 1119 1029) +4(1015 1030 1120 1105) +4(1104 1105 1120 1119) +4(1029 1119 1120 1030) +4(1016 1031 1121 1106) +4(1105 1106 1121 1120) +4(1030 1120 1121 1031) +4(1017 1032 1122 1107) +4(1106 1107 1122 1121) +4(1031 1121 1122 1032) +4(1018 1033 1123 1108) +4(1107 1108 1123 1122) +4(1032 1122 1123 1033) +4(1019 1034 1124 1109) +4(1108 1109 1124 1123) +4(1033 1123 1124 1034) +4(1020 1035 1125 1110) +4(1109 1110 1125 1124) +4(1034 1124 1125 1035) +4(1021 1036 1126 1111) +4(1110 1111 1126 1125) +4(1035 1125 1126 1036) +4(1022 1037 1127 1112) +4(1111 1112 1127 1126) +4(1036 1126 1127 1037) +4(1023 1038 1128 1113) +4(1112 1113 1128 1127) +4(1037 1127 1128 1038) +4(1024 1039 1129 1114) +4(1113 1114 1129 1128) +4(1038 1128 1129 1039) +4(1025 1040 1130 1115) +4(1114 1115 1130 1129) +4(1039 1129 1130 1040) +4(1026 1041 1131 1116) +4(1115 1116 1131 1130) +4(1040 1130 1131 1041) +4(1116 572 576 1131) +4(1041 1131 576 552) +4(113 1043 1133 177) +4(1042 1132 1133 1043) +4(176 177 1133 1132) +4(114 1044 1134 178) +4(1043 1133 1134 1044) +4(177 178 1134 1133) +4(115 1045 1135 179) +4(1044 1134 1135 1045) +4(178 179 1135 1134) +4(116 1046 1136 180) +4(1045 1135 1136 1046) +4(179 180 1136 1135) +4(117 1047 1137 181) +4(1046 1136 1137 1047) +4(180 181 1137 1136) +4(118 1048 1138 182) +4(1047 1137 1138 1048) +4(181 182 1138 1137) +4(119 1049 1139 183) +4(1048 1138 1139 1049) +4(182 183 1139 1138) +4(120 1050 1140 184) +4(1049 1139 1140 1050) +4(183 184 1140 1139) +4(121 1051 1141 185) +4(1050 1140 1141 1051) +4(184 185 1141 1140) +4(122 1052 1142 186) +4(1051 1141 1142 1052) +4(185 186 1142 1141) +4(123 1053 1143 187) +4(1052 1142 1143 1053) +4(186 187 1143 1142) +4(124 1054 1144 188) +4(1053 1143 1144 1054) +4(187 188 1144 1143) +4(125 1055 1145 189) +4(1054 1144 1145 1055) +4(188 189 1145 1144) +4(126 1056 1146 190) +4(1055 1145 1146 1056) +4(189 190 1146 1145) +4(1056 1146 580 556) +4(190 191 580 1146) +4(1043 1058 1148 1133) +4(1057 1147 1148 1058) +4(1132 1133 1148 1147) +4(1044 1059 1149 1134) +4(1058 1148 1149 1059) +4(1133 1134 1149 1148) +4(1045 1060 1150 1135) +4(1059 1149 1150 1060) +4(1134 1135 1150 1149) +4(1046 1061 1151 1136) +4(1060 1150 1151 1061) +4(1135 1136 1151 1150) +4(1047 1062 1152 1137) +4(1061 1151 1152 1062) +4(1136 1137 1152 1151) +4(1048 1063 1153 1138) +4(1062 1152 1153 1063) +4(1137 1138 1153 1152) +4(1049 1064 1154 1139) +4(1063 1153 1154 1064) +4(1138 1139 1154 1153) +4(1050 1065 1155 1140) +4(1064 1154 1155 1065) +4(1139 1140 1155 1154) +4(1051 1066 1156 1141) +4(1065 1155 1156 1066) +4(1140 1141 1156 1155) +4(1052 1067 1157 1142) +4(1066 1156 1157 1067) +4(1141 1142 1157 1156) +4(1053 1068 1158 1143) +4(1067 1157 1158 1068) +4(1142 1143 1158 1157) +4(1054 1069 1159 1144) +4(1068 1158 1159 1069) +4(1143 1144 1159 1158) +4(1055 1070 1160 1145) +4(1069 1159 1160 1070) +4(1144 1145 1160 1159) +4(1056 1071 1161 1146) +4(1070 1160 1161 1071) +4(1145 1146 1161 1160) +4(1071 1161 584 560) +4(1146 580 584 1161) +4(1058 1073 1163 1148) +4(1072 1162 1163 1073) +4(1147 1148 1163 1162) +4(1059 1074 1164 1149) +4(1073 1163 1164 1074) +4(1148 1149 1164 1163) +4(1060 1075 1165 1150) +4(1074 1164 1165 1075) +4(1149 1150 1165 1164) +4(1061 1076 1166 1151) +4(1075 1165 1166 1076) +4(1150 1151 1166 1165) +4(1062 1077 1167 1152) +4(1076 1166 1167 1077) +4(1151 1152 1167 1166) +4(1063 1078 1168 1153) +4(1077 1167 1168 1078) +4(1152 1153 1168 1167) +4(1064 1079 1169 1154) +4(1078 1168 1169 1079) +4(1153 1154 1169 1168) +4(1065 1080 1170 1155) +4(1079 1169 1170 1080) +4(1154 1155 1170 1169) +4(1066 1081 1171 1156) +4(1080 1170 1171 1081) +4(1155 1156 1171 1170) +4(1067 1082 1172 1157) +4(1081 1171 1172 1082) +4(1156 1157 1172 1171) +4(1068 1083 1173 1158) +4(1082 1172 1173 1083) +4(1157 1158 1173 1172) +4(1069 1084 1174 1159) +4(1083 1173 1174 1084) +4(1158 1159 1174 1173) +4(1070 1085 1175 1160) +4(1084 1174 1175 1085) +4(1159 1160 1175 1174) +4(1071 1086 1176 1161) +4(1085 1175 1176 1086) +4(1160 1161 1176 1175) +4(1086 1176 588 564) +4(1161 584 588 1176) +4(1073 1088 1178 1163) +4(1087 1177 1178 1088) +4(1162 1163 1178 1177) +4(1074 1089 1179 1164) +4(1088 1178 1179 1089) +4(1163 1164 1179 1178) +4(1075 1090 1180 1165) +4(1089 1179 1180 1090) +4(1164 1165 1180 1179) +4(1076 1091 1181 1166) +4(1090 1180 1181 1091) +4(1165 1166 1181 1180) +4(1077 1092 1182 1167) +4(1091 1181 1182 1092) +4(1166 1167 1182 1181) +4(1078 1093 1183 1168) +4(1092 1182 1183 1093) +4(1167 1168 1183 1182) +4(1079 1094 1184 1169) +4(1093 1183 1184 1094) +4(1168 1169 1184 1183) +4(1080 1095 1185 1170) +4(1094 1184 1185 1095) +4(1169 1170 1185 1184) +4(1081 1096 1186 1171) +4(1095 1185 1186 1096) +4(1170 1171 1186 1185) +4(1082 1097 1187 1172) +4(1096 1186 1187 1097) +4(1171 1172 1187 1186) +4(1083 1098 1188 1173) +4(1097 1187 1188 1098) +4(1172 1173 1188 1187) +4(1084 1099 1189 1174) +4(1098 1188 1189 1099) +4(1173 1174 1189 1188) +4(1085 1100 1190 1175) +4(1099 1189 1190 1100) +4(1174 1175 1190 1189) +4(1086 1101 1191 1176) +4(1100 1190 1191 1101) +4(1175 1176 1191 1190) +4(1101 1191 592 568) +4(1176 588 592 1191) +4(1088 1103 1193 1178) +4(1102 1192 1193 1103) +4(1177 1178 1193 1192) +4(1089 1104 1194 1179) +4(1103 1193 1194 1104) +4(1178 1179 1194 1193) +4(1090 1105 1195 1180) +4(1104 1194 1195 1105) +4(1179 1180 1195 1194) +4(1091 1106 1196 1181) +4(1105 1195 1196 1106) +4(1180 1181 1196 1195) +4(1092 1107 1197 1182) +4(1106 1196 1197 1107) +4(1181 1182 1197 1196) +4(1093 1108 1198 1183) +4(1107 1197 1198 1108) +4(1182 1183 1198 1197) +4(1094 1109 1199 1184) +4(1108 1198 1199 1109) +4(1183 1184 1199 1198) +4(1095 1110 1200 1185) +4(1109 1199 1200 1110) +4(1184 1185 1200 1199) +4(1096 1111 1201 1186) +4(1110 1200 1201 1111) +4(1185 1186 1201 1200) +4(1097 1112 1202 1187) +4(1111 1201 1202 1112) +4(1186 1187 1202 1201) +4(1098 1113 1203 1188) +4(1112 1202 1203 1113) +4(1187 1188 1203 1202) +4(1099 1114 1204 1189) +4(1113 1203 1204 1114) +4(1188 1189 1204 1203) +4(1100 1115 1205 1190) +4(1114 1204 1205 1115) +4(1189 1190 1205 1204) +4(1101 1116 1206 1191) +4(1115 1205 1206 1116) +4(1190 1191 1206 1205) +4(1116 1206 596 572) +4(1191 592 596 1206) +4(1103 1118 1208 1193) +4(1192 1193 1208 1207) +4(1117 1207 1208 1118) +4(1104 1119 1209 1194) +4(1193 1194 1209 1208) +4(1118 1208 1209 1119) +4(1105 1120 1210 1195) +4(1194 1195 1210 1209) +4(1119 1209 1210 1120) +4(1106 1121 1211 1196) +4(1195 1196 1211 1210) +4(1120 1210 1211 1121) +4(1107 1122 1212 1197) +4(1196 1197 1212 1211) +4(1121 1211 1212 1122) +4(1108 1123 1213 1198) +4(1197 1198 1213 1212) +4(1122 1212 1213 1123) +4(1109 1124 1214 1199) +4(1198 1199 1214 1213) +4(1123 1213 1214 1124) +4(1110 1125 1215 1200) +4(1199 1200 1215 1214) +4(1124 1214 1215 1125) +4(1111 1126 1216 1201) +4(1200 1201 1216 1215) +4(1125 1215 1216 1126) +4(1112 1127 1217 1202) +4(1201 1202 1217 1216) +4(1126 1216 1217 1127) +4(1113 1128 1218 1203) +4(1202 1203 1218 1217) +4(1127 1217 1218 1128) +4(1114 1129 1219 1204) +4(1203 1204 1219 1218) +4(1128 1218 1219 1129) +4(1115 1130 1220 1205) +4(1204 1205 1220 1219) +4(1129 1219 1220 1130) +4(1116 1131 1221 1206) +4(1205 1206 1221 1220) +4(1130 1220 1221 1131) +4(1206 596 600 1221) +4(1131 1221 600 576) +4(177 1133 1223 241) +4(1132 1222 1223 1133) +4(240 241 1223 1222) +4(178 1134 1224 242) +4(1133 1223 1224 1134) +4(241 242 1224 1223) +4(179 1135 1225 243) +4(1134 1224 1225 1135) +4(242 243 1225 1224) +4(180 1136 1226 244) +4(1135 1225 1226 1136) +4(243 244 1226 1225) +4(181 1137 1227 245) +4(1136 1226 1227 1137) +4(244 245 1227 1226) +4(182 1138 1228 246) +4(1137 1227 1228 1138) +4(245 246 1228 1227) +4(183 1139 1229 247) +4(1138 1228 1229 1139) +4(246 247 1229 1228) +4(184 1140 1230 248) +4(1139 1229 1230 1140) +4(247 248 1230 1229) +4(185 1141 1231 249) +4(1140 1230 1231 1141) +4(248 249 1231 1230) +4(186 1142 1232 250) +4(1141 1231 1232 1142) +4(249 250 1232 1231) +4(187 1143 1233 251) +4(1142 1232 1233 1143) +4(250 251 1233 1232) +4(188 1144 1234 252) +4(1143 1233 1234 1144) +4(251 252 1234 1233) +4(189 1145 1235 253) +4(1144 1234 1235 1145) +4(252 253 1235 1234) +4(190 1146 1236 254) +4(1145 1235 1236 1146) +4(253 254 1236 1235) +4(1146 1236 604 580) +4(254 255 604 1236) +4(1133 1148 1238 1223) +4(1147 1237 1238 1148) +4(1222 1223 1238 1237) +4(1134 1149 1239 1224) +4(1148 1238 1239 1149) +4(1223 1224 1239 1238) +4(1135 1150 1240 1225) +4(1149 1239 1240 1150) +4(1224 1225 1240 1239) +4(1136 1151 1241 1226) +4(1150 1240 1241 1151) +4(1225 1226 1241 1240) +4(1137 1152 1242 1227) +4(1151 1241 1242 1152) +4(1226 1227 1242 1241) +4(1138 1153 1243 1228) +4(1152 1242 1243 1153) +4(1227 1228 1243 1242) +4(1139 1154 1244 1229) +4(1153 1243 1244 1154) +4(1228 1229 1244 1243) +4(1140 1155 1245 1230) +4(1154 1244 1245 1155) +4(1229 1230 1245 1244) +4(1141 1156 1246 1231) +4(1155 1245 1246 1156) +4(1230 1231 1246 1245) +4(1142 1157 1247 1232) +4(1156 1246 1247 1157) +4(1231 1232 1247 1246) +4(1143 1158 1248 1233) +4(1157 1247 1248 1158) +4(1232 1233 1248 1247) +4(1144 1159 1249 1234) +4(1158 1248 1249 1159) +4(1233 1234 1249 1248) +4(1145 1160 1250 1235) +4(1159 1249 1250 1160) +4(1234 1235 1250 1249) +4(1146 1161 1251 1236) +4(1160 1250 1251 1161) +4(1235 1236 1251 1250) +4(1161 1251 608 584) +4(1236 604 608 1251) +4(1148 1163 1253 1238) +4(1162 1252 1253 1163) +4(1237 1238 1253 1252) +4(1149 1164 1254 1239) +4(1163 1253 1254 1164) +4(1238 1239 1254 1253) +4(1150 1165 1255 1240) +4(1164 1254 1255 1165) +4(1239 1240 1255 1254) +4(1151 1166 1256 1241) +4(1165 1255 1256 1166) +4(1240 1241 1256 1255) +4(1152 1167 1257 1242) +4(1166 1256 1257 1167) +4(1241 1242 1257 1256) +4(1153 1168 1258 1243) +4(1167 1257 1258 1168) +4(1242 1243 1258 1257) +4(1154 1169 1259 1244) +4(1168 1258 1259 1169) +4(1243 1244 1259 1258) +4(1155 1170 1260 1245) +4(1169 1259 1260 1170) +4(1244 1245 1260 1259) +4(1156 1171 1261 1246) +4(1170 1260 1261 1171) +4(1245 1246 1261 1260) +4(1157 1172 1262 1247) +4(1171 1261 1262 1172) +4(1246 1247 1262 1261) +4(1158 1173 1263 1248) +4(1172 1262 1263 1173) +4(1247 1248 1263 1262) +4(1159 1174 1264 1249) +4(1173 1263 1264 1174) +4(1248 1249 1264 1263) +4(1160 1175 1265 1250) +4(1174 1264 1265 1175) +4(1249 1250 1265 1264) +4(1161 1176 1266 1251) +4(1175 1265 1266 1176) +4(1250 1251 1266 1265) +4(1176 1266 612 588) +4(1251 608 612 1266) +4(1163 1178 1268 1253) +4(1177 1267 1268 1178) +4(1252 1253 1268 1267) +4(1164 1179 1269 1254) +4(1178 1268 1269 1179) +4(1253 1254 1269 1268) +4(1165 1180 1270 1255) +4(1179 1269 1270 1180) +4(1254 1255 1270 1269) +4(1166 1181 1271 1256) +4(1180 1270 1271 1181) +4(1255 1256 1271 1270) +4(1167 1182 1272 1257) +4(1181 1271 1272 1182) +4(1256 1257 1272 1271) +4(1168 1183 1273 1258) +4(1182 1272 1273 1183) +4(1257 1258 1273 1272) +4(1169 1184 1274 1259) +4(1183 1273 1274 1184) +4(1258 1259 1274 1273) +4(1170 1185 1275 1260) +4(1184 1274 1275 1185) +4(1259 1260 1275 1274) +4(1171 1186 1276 1261) +4(1185 1275 1276 1186) +4(1260 1261 1276 1275) +4(1172 1187 1277 1262) +4(1186 1276 1277 1187) +4(1261 1262 1277 1276) +4(1173 1188 1278 1263) +4(1187 1277 1278 1188) +4(1262 1263 1278 1277) +4(1174 1189 1279 1264) +4(1188 1278 1279 1189) +4(1263 1264 1279 1278) +4(1175 1190 1280 1265) +4(1189 1279 1280 1190) +4(1264 1265 1280 1279) +4(1176 1191 1281 1266) +4(1190 1280 1281 1191) +4(1265 1266 1281 1280) +4(1191 1281 616 592) +4(1266 612 616 1281) +4(1178 1193 1283 1268) +4(1192 1282 1283 1193) +4(1267 1268 1283 1282) +4(1179 1194 1284 1269) +4(1193 1283 1284 1194) +4(1268 1269 1284 1283) +4(1180 1195 1285 1270) +4(1194 1284 1285 1195) +4(1269 1270 1285 1284) +4(1181 1196 1286 1271) +4(1195 1285 1286 1196) +4(1270 1271 1286 1285) +4(1182 1197 1287 1272) +4(1196 1286 1287 1197) +4(1271 1272 1287 1286) +4(1183 1198 1288 1273) +4(1197 1287 1288 1198) +4(1272 1273 1288 1287) +4(1184 1199 1289 1274) +4(1198 1288 1289 1199) +4(1273 1274 1289 1288) +4(1185 1200 1290 1275) +4(1199 1289 1290 1200) +4(1274 1275 1290 1289) +4(1186 1201 1291 1276) +4(1200 1290 1291 1201) +4(1275 1276 1291 1290) +4(1187 1202 1292 1277) +4(1201 1291 1292 1202) +4(1276 1277 1292 1291) +4(1188 1203 1293 1278) +4(1202 1292 1293 1203) +4(1277 1278 1293 1292) +4(1189 1204 1294 1279) +4(1203 1293 1294 1204) +4(1278 1279 1294 1293) +4(1190 1205 1295 1280) +4(1204 1294 1295 1205) +4(1279 1280 1295 1294) +4(1191 1206 1296 1281) +4(1205 1295 1296 1206) +4(1280 1281 1296 1295) +4(1206 1296 620 596) +4(1281 616 620 1296) +4(1193 1208 1298 1283) +4(1282 1283 1298 1297) +4(1207 1297 1298 1208) +4(1194 1209 1299 1284) +4(1283 1284 1299 1298) +4(1208 1298 1299 1209) +4(1195 1210 1300 1285) +4(1284 1285 1300 1299) +4(1209 1299 1300 1210) +4(1196 1211 1301 1286) +4(1285 1286 1301 1300) +4(1210 1300 1301 1211) +4(1197 1212 1302 1287) +4(1286 1287 1302 1301) +4(1211 1301 1302 1212) +4(1198 1213 1303 1288) +4(1287 1288 1303 1302) +4(1212 1302 1303 1213) +4(1199 1214 1304 1289) +4(1288 1289 1304 1303) +4(1213 1303 1304 1214) +4(1200 1215 1305 1290) +4(1289 1290 1305 1304) +4(1214 1304 1305 1215) +4(1201 1216 1306 1291) +4(1290 1291 1306 1305) +4(1215 1305 1306 1216) +4(1202 1217 1307 1292) +4(1291 1292 1307 1306) +4(1216 1306 1307 1217) +4(1203 1218 1308 1293) +4(1292 1293 1308 1307) +4(1217 1307 1308 1218) +4(1204 1219 1309 1294) +4(1293 1294 1309 1308) +4(1218 1308 1309 1219) +4(1205 1220 1310 1295) +4(1294 1295 1310 1309) +4(1219 1309 1310 1220) +4(1206 1221 1311 1296) +4(1295 1296 1311 1310) +4(1220 1310 1311 1221) +4(1296 620 624 1311) +4(1221 1311 624 600) +4(241 1223 1313 305) +4(1222 1312 1313 1223) +4(304 305 1313 1312) +4(242 1224 1314 306) +4(1223 1313 1314 1224) +4(305 306 1314 1313) +4(243 1225 1315 307) +4(1224 1314 1315 1225) +4(306 307 1315 1314) +4(244 1226 1316 308) +4(1225 1315 1316 1226) +4(307 308 1316 1315) +4(245 1227 1317 309) +4(1226 1316 1317 1227) +4(308 309 1317 1316) +4(246 1228 1318 310) +4(1227 1317 1318 1228) +4(309 310 1318 1317) +4(247 1229 1319 311) +4(1228 1318 1319 1229) +4(310 311 1319 1318) +4(248 1230 1320 312) +4(1229 1319 1320 1230) +4(311 312 1320 1319) +4(249 1231 1321 313) +4(1230 1320 1321 1231) +4(312 313 1321 1320) +4(250 1232 1322 314) +4(1231 1321 1322 1232) +4(313 314 1322 1321) +4(251 1233 1323 315) +4(1232 1322 1323 1233) +4(314 315 1323 1322) +4(252 1234 1324 316) +4(1233 1323 1324 1234) +4(315 316 1324 1323) +4(253 1235 1325 317) +4(1234 1324 1325 1235) +4(316 317 1325 1324) +4(254 1236 1326 318) +4(1235 1325 1326 1236) +4(317 318 1326 1325) +4(1236 1326 628 604) +4(318 319 628 1326) +4(1223 1238 1328 1313) +4(1237 1327 1328 1238) +4(1312 1313 1328 1327) +4(1224 1239 1329 1314) +4(1238 1328 1329 1239) +4(1313 1314 1329 1328) +4(1225 1240 1330 1315) +4(1239 1329 1330 1240) +4(1314 1315 1330 1329) +4(1226 1241 1331 1316) +4(1240 1330 1331 1241) +4(1315 1316 1331 1330) +4(1227 1242 1332 1317) +4(1241 1331 1332 1242) +4(1316 1317 1332 1331) +4(1228 1243 1333 1318) +4(1242 1332 1333 1243) +4(1317 1318 1333 1332) +4(1229 1244 1334 1319) +4(1243 1333 1334 1244) +4(1318 1319 1334 1333) +4(1230 1245 1335 1320) +4(1244 1334 1335 1245) +4(1319 1320 1335 1334) +4(1231 1246 1336 1321) +4(1245 1335 1336 1246) +4(1320 1321 1336 1335) +4(1232 1247 1337 1322) +4(1246 1336 1337 1247) +4(1321 1322 1337 1336) +4(1233 1248 1338 1323) +4(1247 1337 1338 1248) +4(1322 1323 1338 1337) +4(1234 1249 1339 1324) +4(1248 1338 1339 1249) +4(1323 1324 1339 1338) +4(1235 1250 1340 1325) +4(1249 1339 1340 1250) +4(1324 1325 1340 1339) +4(1236 1251 1341 1326) +4(1250 1340 1341 1251) +4(1325 1326 1341 1340) +4(1251 1341 632 608) +4(1326 628 632 1341) +4(1238 1253 1343 1328) +4(1252 1342 1343 1253) +4(1327 1328 1343 1342) +4(1239 1254 1344 1329) +4(1253 1343 1344 1254) +4(1328 1329 1344 1343) +4(1240 1255 1345 1330) +4(1254 1344 1345 1255) +4(1329 1330 1345 1344) +4(1241 1256 1346 1331) +4(1255 1345 1346 1256) +4(1330 1331 1346 1345) +4(1242 1257 1347 1332) +4(1256 1346 1347 1257) +4(1331 1332 1347 1346) +4(1243 1258 1348 1333) +4(1257 1347 1348 1258) +4(1332 1333 1348 1347) +4(1244 1259 1349 1334) +4(1258 1348 1349 1259) +4(1333 1334 1349 1348) +4(1245 1260 1350 1335) +4(1259 1349 1350 1260) +4(1334 1335 1350 1349) +4(1246 1261 1351 1336) +4(1260 1350 1351 1261) +4(1335 1336 1351 1350) +4(1247 1262 1352 1337) +4(1261 1351 1352 1262) +4(1336 1337 1352 1351) +4(1248 1263 1353 1338) +4(1262 1352 1353 1263) +4(1337 1338 1353 1352) +4(1249 1264 1354 1339) +4(1263 1353 1354 1264) +4(1338 1339 1354 1353) +4(1250 1265 1355 1340) +4(1264 1354 1355 1265) +4(1339 1340 1355 1354) +4(1251 1266 1356 1341) +4(1265 1355 1356 1266) +4(1340 1341 1356 1355) +4(1266 1356 636 612) +4(1341 632 636 1356) +4(1253 1268 1358 1343) +4(1267 1357 1358 1268) +4(1342 1343 1358 1357) +4(1254 1269 1359 1344) +4(1268 1358 1359 1269) +4(1343 1344 1359 1358) +4(1255 1270 1360 1345) +4(1269 1359 1360 1270) +4(1344 1345 1360 1359) +4(1256 1271 1361 1346) +4(1270 1360 1361 1271) +4(1345 1346 1361 1360) +4(1257 1272 1362 1347) +4(1271 1361 1362 1272) +4(1346 1347 1362 1361) +4(1258 1273 1363 1348) +4(1272 1362 1363 1273) +4(1347 1348 1363 1362) +4(1259 1274 1364 1349) +4(1273 1363 1364 1274) +4(1348 1349 1364 1363) +4(1260 1275 1365 1350) +4(1274 1364 1365 1275) +4(1349 1350 1365 1364) +4(1261 1276 1366 1351) +4(1275 1365 1366 1276) +4(1350 1351 1366 1365) +4(1262 1277 1367 1352) +4(1276 1366 1367 1277) +4(1351 1352 1367 1366) +4(1263 1278 1368 1353) +4(1277 1367 1368 1278) +4(1352 1353 1368 1367) +4(1264 1279 1369 1354) +4(1278 1368 1369 1279) +4(1353 1354 1369 1368) +4(1265 1280 1370 1355) +4(1279 1369 1370 1280) +4(1354 1355 1370 1369) +4(1266 1281 1371 1356) +4(1280 1370 1371 1281) +4(1355 1356 1371 1370) +4(1281 1371 640 616) +4(1356 636 640 1371) +4(1268 1283 1373 1358) +4(1282 1372 1373 1283) +4(1357 1358 1373 1372) +4(1269 1284 1374 1359) +4(1283 1373 1374 1284) +4(1358 1359 1374 1373) +4(1270 1285 1375 1360) +4(1284 1374 1375 1285) +4(1359 1360 1375 1374) +4(1271 1286 1376 1361) +4(1285 1375 1376 1286) +4(1360 1361 1376 1375) +4(1272 1287 1377 1362) +4(1286 1376 1377 1287) +4(1361 1362 1377 1376) +4(1273 1288 1378 1363) +4(1287 1377 1378 1288) +4(1362 1363 1378 1377) +4(1274 1289 1379 1364) +4(1288 1378 1379 1289) +4(1363 1364 1379 1378) +4(1275 1290 1380 1365) +4(1289 1379 1380 1290) +4(1364 1365 1380 1379) +4(1276 1291 1381 1366) +4(1290 1380 1381 1291) +4(1365 1366 1381 1380) +4(1277 1292 1382 1367) +4(1291 1381 1382 1292) +4(1366 1367 1382 1381) +4(1278 1293 1383 1368) +4(1292 1382 1383 1293) +4(1367 1368 1383 1382) +4(1279 1294 1384 1369) +4(1293 1383 1384 1294) +4(1368 1369 1384 1383) +4(1280 1295 1385 1370) +4(1294 1384 1385 1295) +4(1369 1370 1385 1384) +4(1281 1296 1386 1371) +4(1295 1385 1386 1296) +4(1370 1371 1386 1385) +4(1296 1386 644 620) +4(1371 640 644 1386) +4(1283 1298 1388 1373) +4(1372 1373 1388 1387) +4(1297 1387 1388 1298) +4(1284 1299 1389 1374) +4(1373 1374 1389 1388) +4(1298 1388 1389 1299) +4(1285 1300 1390 1375) +4(1374 1375 1390 1389) +4(1299 1389 1390 1300) +4(1286 1301 1391 1376) +4(1375 1376 1391 1390) +4(1300 1390 1391 1301) +4(1287 1302 1392 1377) +4(1376 1377 1392 1391) +4(1301 1391 1392 1302) +4(1288 1303 1393 1378) +4(1377 1378 1393 1392) +4(1302 1392 1393 1303) +4(1289 1304 1394 1379) +4(1378 1379 1394 1393) +4(1303 1393 1394 1304) +4(1290 1305 1395 1380) +4(1379 1380 1395 1394) +4(1304 1394 1395 1305) +4(1291 1306 1396 1381) +4(1380 1381 1396 1395) +4(1305 1395 1396 1306) +4(1292 1307 1397 1382) +4(1381 1382 1397 1396) +4(1306 1396 1397 1307) +4(1293 1308 1398 1383) +4(1382 1383 1398 1397) +4(1307 1397 1398 1308) +4(1294 1309 1399 1384) +4(1383 1384 1399 1398) +4(1308 1398 1399 1309) +4(1295 1310 1400 1385) +4(1384 1385 1400 1399) +4(1309 1399 1400 1310) +4(1296 1311 1401 1386) +4(1385 1386 1401 1400) +4(1310 1400 1401 1311) +4(1386 644 648 1401) +4(1311 1401 648 624) +4(305 1313 1403 369) +4(1312 1402 1403 1313) +4(368 369 1403 1402) +4(306 1314 1404 370) +4(1313 1403 1404 1314) +4(369 370 1404 1403) +4(307 1315 1405 371) +4(1314 1404 1405 1315) +4(370 371 1405 1404) +4(308 1316 1406 372) +4(1315 1405 1406 1316) +4(371 372 1406 1405) +4(309 1317 1407 373) +4(1316 1406 1407 1317) +4(372 373 1407 1406) +4(310 1318 1408 374) +4(1317 1407 1408 1318) +4(373 374 1408 1407) +4(311 1319 1409 375) +4(1318 1408 1409 1319) +4(374 375 1409 1408) +4(312 1320 1410 376) +4(1319 1409 1410 1320) +4(375 376 1410 1409) +4(313 1321 1411 377) +4(1320 1410 1411 1321) +4(376 377 1411 1410) +4(314 1322 1412 378) +4(1321 1411 1412 1322) +4(377 378 1412 1411) +4(315 1323 1413 379) +4(1322 1412 1413 1323) +4(378 379 1413 1412) +4(316 1324 1414 380) +4(1323 1413 1414 1324) +4(379 380 1414 1413) +4(317 1325 1415 381) +4(1324 1414 1415 1325) +4(380 381 1415 1414) +4(318 1326 1416 382) +4(1325 1415 1416 1326) +4(381 382 1416 1415) +4(1326 1416 652 628) +4(382 383 652 1416) +4(1313 1328 1418 1403) +4(1327 1417 1418 1328) +4(1402 1403 1418 1417) +4(1314 1329 1419 1404) +4(1328 1418 1419 1329) +4(1403 1404 1419 1418) +4(1315 1330 1420 1405) +4(1329 1419 1420 1330) +4(1404 1405 1420 1419) +4(1316 1331 1421 1406) +4(1330 1420 1421 1331) +4(1405 1406 1421 1420) +4(1317 1332 1422 1407) +4(1331 1421 1422 1332) +4(1406 1407 1422 1421) +4(1318 1333 1423 1408) +4(1332 1422 1423 1333) +4(1407 1408 1423 1422) +4(1319 1334 1424 1409) +4(1333 1423 1424 1334) +4(1408 1409 1424 1423) +4(1320 1335 1425 1410) +4(1334 1424 1425 1335) +4(1409 1410 1425 1424) +4(1321 1336 1426 1411) +4(1335 1425 1426 1336) +4(1410 1411 1426 1425) +4(1322 1337 1427 1412) +4(1336 1426 1427 1337) +4(1411 1412 1427 1426) +4(1323 1338 1428 1413) +4(1337 1427 1428 1338) +4(1412 1413 1428 1427) +4(1324 1339 1429 1414) +4(1338 1428 1429 1339) +4(1413 1414 1429 1428) +4(1325 1340 1430 1415) +4(1339 1429 1430 1340) +4(1414 1415 1430 1429) +4(1326 1341 1431 1416) +4(1340 1430 1431 1341) +4(1415 1416 1431 1430) +4(1341 1431 656 632) +4(1416 652 656 1431) +4(1328 1343 1433 1418) +4(1342 1432 1433 1343) +4(1417 1418 1433 1432) +4(1329 1344 1434 1419) +4(1343 1433 1434 1344) +4(1418 1419 1434 1433) +4(1330 1345 1435 1420) +4(1344 1434 1435 1345) +4(1419 1420 1435 1434) +4(1331 1346 1436 1421) +4(1345 1435 1436 1346) +4(1420 1421 1436 1435) +4(1332 1347 1437 1422) +4(1346 1436 1437 1347) +4(1421 1422 1437 1436) +4(1333 1348 1438 1423) +4(1347 1437 1438 1348) +4(1422 1423 1438 1437) +4(1334 1349 1439 1424) +4(1348 1438 1439 1349) +4(1423 1424 1439 1438) +4(1335 1350 1440 1425) +4(1349 1439 1440 1350) +4(1424 1425 1440 1439) +4(1336 1351 1441 1426) +4(1350 1440 1441 1351) +4(1425 1426 1441 1440) +4(1337 1352 1442 1427) +4(1351 1441 1442 1352) +4(1426 1427 1442 1441) +4(1338 1353 1443 1428) +4(1352 1442 1443 1353) +4(1427 1428 1443 1442) +4(1339 1354 1444 1429) +4(1353 1443 1444 1354) +4(1428 1429 1444 1443) +4(1340 1355 1445 1430) +4(1354 1444 1445 1355) +4(1429 1430 1445 1444) +4(1341 1356 1446 1431) +4(1355 1445 1446 1356) +4(1430 1431 1446 1445) +4(1356 1446 660 636) +4(1431 656 660 1446) +4(1343 1358 1448 1433) +4(1357 1447 1448 1358) +4(1432 1433 1448 1447) +4(1344 1359 1449 1434) +4(1358 1448 1449 1359) +4(1433 1434 1449 1448) +4(1345 1360 1450 1435) +4(1359 1449 1450 1360) +4(1434 1435 1450 1449) +4(1346 1361 1451 1436) +4(1360 1450 1451 1361) +4(1435 1436 1451 1450) +4(1347 1362 1452 1437) +4(1361 1451 1452 1362) +4(1436 1437 1452 1451) +4(1348 1363 1453 1438) +4(1362 1452 1453 1363) +4(1437 1438 1453 1452) +4(1349 1364 1454 1439) +4(1363 1453 1454 1364) +4(1438 1439 1454 1453) +4(1350 1365 1455 1440) +4(1364 1454 1455 1365) +4(1439 1440 1455 1454) +4(1351 1366 1456 1441) +4(1365 1455 1456 1366) +4(1440 1441 1456 1455) +4(1352 1367 1457 1442) +4(1366 1456 1457 1367) +4(1441 1442 1457 1456) +4(1353 1368 1458 1443) +4(1367 1457 1458 1368) +4(1442 1443 1458 1457) +4(1354 1369 1459 1444) +4(1368 1458 1459 1369) +4(1443 1444 1459 1458) +4(1355 1370 1460 1445) +4(1369 1459 1460 1370) +4(1444 1445 1460 1459) +4(1356 1371 1461 1446) +4(1370 1460 1461 1371) +4(1445 1446 1461 1460) +4(1371 1461 664 640) +4(1446 660 664 1461) +4(1358 1373 1463 1448) +4(1372 1462 1463 1373) +4(1447 1448 1463 1462) +4(1359 1374 1464 1449) +4(1373 1463 1464 1374) +4(1448 1449 1464 1463) +4(1360 1375 1465 1450) +4(1374 1464 1465 1375) +4(1449 1450 1465 1464) +4(1361 1376 1466 1451) +4(1375 1465 1466 1376) +4(1450 1451 1466 1465) +4(1362 1377 1467 1452) +4(1376 1466 1467 1377) +4(1451 1452 1467 1466) +4(1363 1378 1468 1453) +4(1377 1467 1468 1378) +4(1452 1453 1468 1467) +4(1364 1379 1469 1454) +4(1378 1468 1469 1379) +4(1453 1454 1469 1468) +4(1365 1380 1470 1455) +4(1379 1469 1470 1380) +4(1454 1455 1470 1469) +4(1366 1381 1471 1456) +4(1380 1470 1471 1381) +4(1455 1456 1471 1470) +4(1367 1382 1472 1457) +4(1381 1471 1472 1382) +4(1456 1457 1472 1471) +4(1368 1383 1473 1458) +4(1382 1472 1473 1383) +4(1457 1458 1473 1472) +4(1369 1384 1474 1459) +4(1383 1473 1474 1384) +4(1458 1459 1474 1473) +4(1370 1385 1475 1460) +4(1384 1474 1475 1385) +4(1459 1460 1475 1474) +4(1371 1386 1476 1461) +4(1385 1475 1476 1386) +4(1460 1461 1476 1475) +4(1386 1476 668 644) +4(1461 664 668 1476) +4(1373 1388 1478 1463) +4(1462 1463 1478 1477) +4(1387 1477 1478 1388) +4(1374 1389 1479 1464) +4(1463 1464 1479 1478) +4(1388 1478 1479 1389) +4(1375 1390 1480 1465) +4(1464 1465 1480 1479) +4(1389 1479 1480 1390) +4(1376 1391 1481 1466) +4(1465 1466 1481 1480) +4(1390 1480 1481 1391) +4(1377 1392 1482 1467) +4(1466 1467 1482 1481) +4(1391 1481 1482 1392) +4(1378 1393 1483 1468) +4(1467 1468 1483 1482) +4(1392 1482 1483 1393) +4(1379 1394 1484 1469) +4(1468 1469 1484 1483) +4(1393 1483 1484 1394) +4(1380 1395 1485 1470) +4(1469 1470 1485 1484) +4(1394 1484 1485 1395) +4(1381 1396 1486 1471) +4(1470 1471 1486 1485) +4(1395 1485 1486 1396) +4(1382 1397 1487 1472) +4(1471 1472 1487 1486) +4(1396 1486 1487 1397) +4(1383 1398 1488 1473) +4(1472 1473 1488 1487) +4(1397 1487 1488 1398) +4(1384 1399 1489 1474) +4(1473 1474 1489 1488) +4(1398 1488 1489 1399) +4(1385 1400 1490 1475) +4(1474 1475 1490 1489) +4(1399 1489 1490 1400) +4(1386 1401 1491 1476) +4(1475 1476 1491 1490) +4(1400 1490 1491 1401) +4(1476 668 672 1491) +4(1401 1491 672 648) +4(369 1403 1493 433) +4(1402 1492 1493 1403) +4(370 1404 1494 434) +4(1403 1493 1494 1404) +4(371 1405 1495 435) +4(1404 1494 1495 1405) +4(372 1406 1496 436) +4(1405 1495 1496 1406) +4(373 1407 1497 437) +4(1406 1496 1497 1407) +4(374 1408 1498 438) +4(1407 1497 1498 1408) +4(375 1409 1499 439) +4(1408 1498 1499 1409) +4(376 1410 1500 440) +4(1409 1499 1500 1410) +4(377 1411 1501 441) +4(1410 1500 1501 1411) +4(378 1412 1502 442) +4(1411 1501 1502 1412) +4(379 1413 1503 443) +4(1412 1502 1503 1413) +4(380 1414 1504 444) +4(1413 1503 1504 1414) +4(381 1415 1505 445) +4(1414 1504 1505 1415) +4(382 1416 1506 446) +4(1415 1505 1506 1416) +4(1416 1506 676 652) +4(1403 1418 1508 1493) +4(1417 1507 1508 1418) +4(1404 1419 1509 1494) +4(1418 1508 1509 1419) +4(1405 1420 1510 1495) +4(1419 1509 1510 1420) +4(1406 1421 1511 1496) +4(1420 1510 1511 1421) +4(1407 1422 1512 1497) +4(1421 1511 1512 1422) +4(1408 1423 1513 1498) +4(1422 1512 1513 1423) +4(1409 1424 1514 1499) +4(1423 1513 1514 1424) +4(1410 1425 1515 1500) +4(1424 1514 1515 1425) +4(1411 1426 1516 1501) +4(1425 1515 1516 1426) +4(1412 1427 1517 1502) +4(1426 1516 1517 1427) +4(1413 1428 1518 1503) +4(1427 1517 1518 1428) +4(1414 1429 1519 1504) +4(1428 1518 1519 1429) +4(1415 1430 1520 1505) +4(1429 1519 1520 1430) +4(1416 1431 1521 1506) +4(1430 1520 1521 1431) +4(1431 1521 680 656) +4(1418 1433 1523 1508) +4(1432 1522 1523 1433) +4(1419 1434 1524 1509) +4(1433 1523 1524 1434) +4(1420 1435 1525 1510) +4(1434 1524 1525 1435) +4(1421 1436 1526 1511) +4(1435 1525 1526 1436) +4(1422 1437 1527 1512) +4(1436 1526 1527 1437) +4(1423 1438 1528 1513) +4(1437 1527 1528 1438) +4(1424 1439 1529 1514) +4(1438 1528 1529 1439) +4(1425 1440 1530 1515) +4(1439 1529 1530 1440) +4(1426 1441 1531 1516) +4(1440 1530 1531 1441) +4(1427 1442 1532 1517) +4(1441 1531 1532 1442) +4(1428 1443 1533 1518) +4(1442 1532 1533 1443) +4(1429 1444 1534 1519) +4(1443 1533 1534 1444) +4(1430 1445 1535 1520) +4(1444 1534 1535 1445) +4(1431 1446 1536 1521) +4(1445 1535 1536 1446) +4(1446 1536 684 660) +4(1433 1448 1538 1523) +4(1447 1537 1538 1448) +4(1434 1449 1539 1524) +4(1448 1538 1539 1449) +4(1435 1450 1540 1525) +4(1449 1539 1540 1450) +4(1436 1451 1541 1526) +4(1450 1540 1541 1451) +4(1437 1452 1542 1527) +4(1451 1541 1542 1452) +4(1438 1453 1543 1528) +4(1452 1542 1543 1453) +4(1439 1454 1544 1529) +4(1453 1543 1544 1454) +4(1440 1455 1545 1530) +4(1454 1544 1545 1455) +4(1441 1456 1546 1531) +4(1455 1545 1546 1456) +4(1442 1457 1547 1532) +4(1456 1546 1547 1457) +4(1443 1458 1548 1533) +4(1457 1547 1548 1458) +4(1444 1459 1549 1534) +4(1458 1548 1549 1459) +4(1445 1460 1550 1535) +4(1459 1549 1550 1460) +4(1446 1461 1551 1536) +4(1460 1550 1551 1461) +4(1461 1551 688 664) +4(1448 1463 1553 1538) +4(1462 1552 1553 1463) +4(1449 1464 1554 1539) +4(1463 1553 1554 1464) +4(1450 1465 1555 1540) +4(1464 1554 1555 1465) +4(1451 1466 1556 1541) +4(1465 1555 1556 1466) +4(1452 1467 1557 1542) +4(1466 1556 1557 1467) +4(1453 1468 1558 1543) +4(1467 1557 1558 1468) +4(1454 1469 1559 1544) +4(1468 1558 1559 1469) +4(1455 1470 1560 1545) +4(1469 1559 1560 1470) +4(1456 1471 1561 1546) +4(1470 1560 1561 1471) +4(1457 1472 1562 1547) +4(1471 1561 1562 1472) +4(1458 1473 1563 1548) +4(1472 1562 1563 1473) +4(1459 1474 1564 1549) +4(1473 1563 1564 1474) +4(1460 1475 1565 1550) +4(1474 1564 1565 1475) +4(1461 1476 1566 1551) +4(1475 1565 1566 1476) +4(1476 1566 692 668) +4(1463 1478 1568 1553) +4(1477 1567 1568 1478) +4(1464 1479 1569 1554) +4(1478 1568 1569 1479) +4(1465 1480 1570 1555) +4(1479 1569 1570 1480) +4(1466 1481 1571 1556) +4(1480 1570 1571 1481) +4(1467 1482 1572 1557) +4(1481 1571 1572 1482) +4(1468 1483 1573 1558) +4(1482 1572 1573 1483) +4(1469 1484 1574 1559) +4(1483 1573 1574 1484) +4(1470 1485 1575 1560) +4(1484 1574 1575 1485) +4(1471 1486 1576 1561) +4(1485 1575 1576 1486) +4(1472 1487 1577 1562) +4(1486 1576 1577 1487) +4(1473 1488 1578 1563) +4(1487 1577 1578 1488) +4(1474 1489 1579 1564) +4(1488 1578 1579 1489) +4(1475 1490 1580 1565) +4(1489 1579 1580 1490) +4(1476 1491 1581 1566) +4(1490 1580 1581 1491) +4(1491 1581 696 672) +4(1028 1583 1727 1118) +4(1582 1726 1727 1583) +4(1117 1118 1727 1726) +4(1029 1584 1728 1119) +4(1583 1727 1728 1584) +4(1118 1119 1728 1727) +4(1030 1585 1729 1120) +4(1584 1728 1729 1585) +4(1119 1120 1729 1728) +4(1031 1586 1730 1121) +4(1585 1729 1730 1586) +4(1120 1121 1730 1729) +4(1032 1587 1731 1122) +4(1586 1730 1731 1587) +4(1121 1122 1731 1730) +4(1033 1588 1732 1123) +4(1587 1731 1732 1588) +4(1122 1123 1732 1731) +4(1034 1589 1733 1124) +4(1588 1732 1733 1589) +4(1123 1124 1733 1732) +4(1035 1590 1734 1125) +4(1589 1733 1734 1590) +4(1124 1125 1734 1733) +4(1036 1591 1735 1126) +4(1590 1734 1735 1591) +4(1125 1126 1735 1734) +4(1037 1592 1736 1127) +4(1591 1735 1736 1592) +4(1126 1127 1736 1735) +4(1038 1593 1737 1128) +4(1592 1736 1737 1593) +4(1127 1128 1737 1736) +4(1039 1594 1738 1129) +4(1593 1737 1738 1594) +4(1128 1129 1738 1737) +4(1040 1595 1739 1130) +4(1594 1738 1739 1595) +4(1129 1130 1739 1738) +4(1041 1596 1740 1131) +4(1595 1739 1740 1596) +4(1130 1131 1740 1739) +4(1596 1740 1741 1597) +4(1131 576 1741 1740) +4(552 1597 1741 576) +4(1583 1599 1743 1727) +4(1598 1742 1743 1599) +4(1726 1727 1743 1742) +4(1584 1600 1744 1728) +4(1599 1743 1744 1600) +4(1727 1728 1744 1743) +4(1585 1601 1745 1729) +4(1600 1744 1745 1601) +4(1728 1729 1745 1744) +4(1586 1602 1746 1730) +4(1601 1745 1746 1602) +4(1729 1730 1746 1745) +4(1587 1603 1747 1731) +4(1602 1746 1747 1603) +4(1730 1731 1747 1746) +4(1588 1604 1748 1732) +4(1603 1747 1748 1604) +4(1731 1732 1748 1747) +4(1589 1605 1749 1733) +4(1604 1748 1749 1605) +4(1732 1733 1749 1748) +4(1590 1606 1750 1734) +4(1605 1749 1750 1606) +4(1733 1734 1750 1749) +4(1591 1607 1751 1735) +4(1606 1750 1751 1607) +4(1734 1735 1751 1750) +4(1592 1608 1752 1736) +4(1607 1751 1752 1608) +4(1735 1736 1752 1751) +4(1593 1609 1753 1737) +4(1608 1752 1753 1609) +4(1736 1737 1753 1752) +4(1594 1610 1754 1738) +4(1609 1753 1754 1610) +4(1737 1738 1754 1753) +4(1595 1611 1755 1739) +4(1610 1754 1755 1611) +4(1738 1739 1755 1754) +4(1596 1612 1756 1740) +4(1611 1755 1756 1612) +4(1739 1740 1756 1755) +4(1612 1756 1757 1613) +4(1740 1741 1757 1756) +4(1597 1613 1757 1741) +4(1599 1615 1759 1743) +4(1614 1758 1759 1615) +4(1742 1743 1759 1758) +4(1600 1616 1760 1744) +4(1615 1759 1760 1616) +4(1743 1744 1760 1759) +4(1601 1617 1761 1745) +4(1616 1760 1761 1617) +4(1744 1745 1761 1760) +4(1602 1618 1762 1746) +4(1617 1761 1762 1618) +4(1745 1746 1762 1761) +4(1603 1619 1763 1747) +4(1618 1762 1763 1619) +4(1746 1747 1763 1762) +4(1604 1620 1764 1748) +4(1619 1763 1764 1620) +4(1747 1748 1764 1763) +4(1605 1621 1765 1749) +4(1620 1764 1765 1621) +4(1748 1749 1765 1764) +4(1606 1622 1766 1750) +4(1621 1765 1766 1622) +4(1749 1750 1766 1765) +4(1607 1623 1767 1751) +4(1622 1766 1767 1623) +4(1750 1751 1767 1766) +4(1608 1624 1768 1752) +4(1623 1767 1768 1624) +4(1751 1752 1768 1767) +4(1609 1625 1769 1753) +4(1624 1768 1769 1625) +4(1752 1753 1769 1768) +4(1610 1626 1770 1754) +4(1625 1769 1770 1626) +4(1753 1754 1770 1769) +4(1611 1627 1771 1755) +4(1626 1770 1771 1627) +4(1754 1755 1771 1770) +4(1612 1628 1772 1756) +4(1627 1771 1772 1628) +4(1755 1756 1772 1771) +4(1628 1772 1773 1629) +4(1756 1757 1773 1772) +4(1613 1629 1773 1757) +4(1615 1631 1775 1759) +4(1630 1774 1775 1631) +4(1758 1759 1775 1774) +4(1616 1632 1776 1760) +4(1631 1775 1776 1632) +4(1759 1760 1776 1775) +4(1617 1633 1777 1761) +4(1632 1776 1777 1633) +4(1760 1761 1777 1776) +4(1618 1634 1778 1762) +4(1633 1777 1778 1634) +4(1761 1762 1778 1777) +4(1619 1635 1779 1763) +4(1634 1778 1779 1635) +4(1762 1763 1779 1778) +4(1620 1636 1780 1764) +4(1635 1779 1780 1636) +4(1763 1764 1780 1779) +4(1621 1637 1781 1765) +4(1636 1780 1781 1637) +4(1764 1765 1781 1780) +4(1622 1638 1782 1766) +4(1637 1781 1782 1638) +4(1765 1766 1782 1781) +4(1623 1639 1783 1767) +4(1638 1782 1783 1639) +4(1766 1767 1783 1782) +4(1624 1640 1784 1768) +4(1639 1783 1784 1640) +4(1767 1768 1784 1783) +4(1625 1641 1785 1769) +4(1640 1784 1785 1641) +4(1768 1769 1785 1784) +4(1626 1642 1786 1770) +4(1641 1785 1786 1642) +4(1769 1770 1786 1785) +4(1627 1643 1787 1771) +4(1642 1786 1787 1643) +4(1770 1771 1787 1786) +4(1628 1644 1788 1772) +4(1643 1787 1788 1644) +4(1771 1772 1788 1787) +4(1644 1788 1789 1645) +4(1772 1773 1789 1788) +4(1629 1645 1789 1773) +4(1631 1647 1791 1775) +4(1646 1790 1791 1647) +4(1774 1775 1791 1790) +4(1632 1648 1792 1776) +4(1647 1791 1792 1648) +4(1775 1776 1792 1791) +4(1633 1649 1793 1777) +4(1648 1792 1793 1649) +4(1776 1777 1793 1792) +4(1634 1650 1794 1778) +4(1649 1793 1794 1650) +4(1777 1778 1794 1793) +4(1635 1651 1795 1779) +4(1650 1794 1795 1651) +4(1778 1779 1795 1794) +4(1636 1652 1796 1780) +4(1651 1795 1796 1652) +4(1779 1780 1796 1795) +4(1637 1653 1797 1781) +4(1652 1796 1797 1653) +4(1780 1781 1797 1796) +4(1638 1654 1798 1782) +4(1653 1797 1798 1654) +4(1781 1782 1798 1797) +4(1639 1655 1799 1783) +4(1654 1798 1799 1655) +4(1782 1783 1799 1798) +4(1640 1656 1800 1784) +4(1655 1799 1800 1656) +4(1783 1784 1800 1799) +4(1641 1657 1801 1785) +4(1656 1800 1801 1657) +4(1784 1785 1801 1800) +4(1642 1658 1802 1786) +4(1657 1801 1802 1658) +4(1785 1786 1802 1801) +4(1643 1659 1803 1787) +4(1658 1802 1803 1659) +4(1786 1787 1803 1802) +4(1644 1660 1804 1788) +4(1659 1803 1804 1660) +4(1787 1788 1804 1803) +4(1660 1804 1805 1661) +4(1788 1789 1805 1804) +4(1645 1661 1805 1789) +4(1647 1663 1807 1791) +4(1662 1806 1807 1663) +4(1790 1791 1807 1806) +4(1648 1664 1808 1792) +4(1663 1807 1808 1664) +4(1791 1792 1808 1807) +4(1649 1665 1809 1793) +4(1664 1808 1809 1665) +4(1792 1793 1809 1808) +4(1650 1666 1810 1794) +4(1665 1809 1810 1666) +4(1793 1794 1810 1809) +4(1651 1667 1811 1795) +4(1666 1810 1811 1667) +4(1794 1795 1811 1810) +4(1652 1668 1812 1796) +4(1667 1811 1812 1668) +4(1795 1796 1812 1811) +4(1653 1669 1813 1797) +4(1668 1812 1813 1669) +4(1796 1797 1813 1812) +4(1654 1670 1814 1798) +4(1669 1813 1814 1670) +4(1797 1798 1814 1813) +4(1655 1671 1815 1799) +4(1670 1814 1815 1671) +4(1798 1799 1815 1814) +4(1656 1672 1816 1800) +4(1671 1815 1816 1672) +4(1799 1800 1816 1815) +4(1657 1673 1817 1801) +4(1672 1816 1817 1673) +4(1800 1801 1817 1816) +4(1658 1674 1818 1802) +4(1673 1817 1818 1674) +4(1801 1802 1818 1817) +4(1659 1675 1819 1803) +4(1674 1818 1819 1675) +4(1802 1803 1819 1818) +4(1660 1676 1820 1804) +4(1675 1819 1820 1676) +4(1803 1804 1820 1819) +4(1676 1820 1821 1677) +4(1804 1805 1821 1820) +4(1661 1677 1821 1805) +4(1663 1679 1823 1807) +4(1678 1822 1823 1679) +4(1806 1807 1823 1822) +4(1664 1680 1824 1808) +4(1679 1823 1824 1680) +4(1807 1808 1824 1823) +4(1665 1681 1825 1809) +4(1680 1824 1825 1681) +4(1808 1809 1825 1824) +4(1666 1682 1826 1810) +4(1681 1825 1826 1682) +4(1809 1810 1826 1825) +4(1667 1683 1827 1811) +4(1682 1826 1827 1683) +4(1810 1811 1827 1826) +4(1668 1684 1828 1812) +4(1683 1827 1828 1684) +4(1811 1812 1828 1827) +4(1669 1685 1829 1813) +4(1684 1828 1829 1685) +4(1812 1813 1829 1828) +4(1670 1686 1830 1814) +4(1685 1829 1830 1686) +4(1813 1814 1830 1829) +4(1671 1687 1831 1815) +4(1686 1830 1831 1687) +4(1814 1815 1831 1830) +4(1672 1688 1832 1816) +4(1687 1831 1832 1688) +4(1815 1816 1832 1831) +4(1673 1689 1833 1817) +4(1688 1832 1833 1689) +4(1816 1817 1833 1832) +4(1674 1690 1834 1818) +4(1689 1833 1834 1690) +4(1817 1818 1834 1833) +4(1675 1691 1835 1819) +4(1690 1834 1835 1691) +4(1818 1819 1835 1834) +4(1676 1692 1836 1820) +4(1691 1835 1836 1692) +4(1819 1820 1836 1835) +4(1692 1836 1837 1693) +4(1820 1821 1837 1836) +4(1677 1693 1837 1821) +4(1679 1695 1839 1823) +4(1694 1838 1839 1695) +4(1822 1823 1839 1838) +4(1680 1696 1840 1824) +4(1695 1839 1840 1696) +4(1823 1824 1840 1839) +4(1681 1697 1841 1825) +4(1696 1840 1841 1697) +4(1824 1825 1841 1840) +4(1682 1698 1842 1826) +4(1697 1841 1842 1698) +4(1825 1826 1842 1841) +4(1683 1699 1843 1827) +4(1698 1842 1843 1699) +4(1826 1827 1843 1842) +4(1684 1700 1844 1828) +4(1699 1843 1844 1700) +4(1827 1828 1844 1843) +4(1685 1701 1845 1829) +4(1700 1844 1845 1701) +4(1828 1829 1845 1844) +4(1686 1702 1846 1830) +4(1701 1845 1846 1702) +4(1829 1830 1846 1845) +4(1687 1703 1847 1831) +4(1702 1846 1847 1703) +4(1830 1831 1847 1846) +4(1688 1704 1848 1832) +4(1703 1847 1848 1704) +4(1831 1832 1848 1847) +4(1689 1705 1849 1833) +4(1704 1848 1849 1705) +4(1832 1833 1849 1848) +4(1690 1706 1850 1834) +4(1705 1849 1850 1706) +4(1833 1834 1850 1849) +4(1691 1707 1851 1835) +4(1706 1850 1851 1707) +4(1834 1835 1851 1850) +4(1692 1708 1852 1836) +4(1707 1851 1852 1708) +4(1835 1836 1852 1851) +4(1708 1852 1853 1709) +4(1836 1837 1853 1852) +4(1693 1709 1853 1837) +4(1695 1711 1855 1839) +4(1838 1839 1855 1854) +4(1710 1854 1855 1711) +4(1696 1712 1856 1840) +4(1839 1840 1856 1855) +4(1711 1855 1856 1712) +4(1697 1713 1857 1841) +4(1840 1841 1857 1856) +4(1712 1856 1857 1713) +4(1698 1714 1858 1842) +4(1841 1842 1858 1857) +4(1713 1857 1858 1714) +4(1699 1715 1859 1843) +4(1842 1843 1859 1858) +4(1714 1858 1859 1715) +4(1700 1716 1860 1844) +4(1843 1844 1860 1859) +4(1715 1859 1860 1716) +4(1701 1717 1861 1845) +4(1844 1845 1861 1860) +4(1716 1860 1861 1717) +4(1702 1718 1862 1846) +4(1845 1846 1862 1861) +4(1717 1861 1862 1718) +4(1703 1719 1863 1847) +4(1846 1847 1863 1862) +4(1718 1862 1863 1719) +4(1704 1720 1864 1848) +4(1847 1848 1864 1863) +4(1719 1863 1864 1720) +4(1705 1721 1865 1849) +4(1848 1849 1865 1864) +4(1720 1864 1865 1721) +4(1706 1722 1866 1850) +4(1849 1850 1866 1865) +4(1721 1865 1866 1722) +4(1707 1723 1867 1851) +4(1850 1851 1867 1866) +4(1722 1866 1867 1723) +4(1708 1724 1868 1852) +4(1851 1852 1868 1867) +4(1723 1867 1868 1724) +4(1852 1853 1869 1868) +4(1724 1868 1869 1725) +4(1709 1725 1869 1853) +4(1118 1727 1871 1208) +4(1726 1870 1871 1727) +4(1207 1208 1871 1870) +4(1119 1728 1872 1209) +4(1727 1871 1872 1728) +4(1208 1209 1872 1871) +4(1120 1729 1873 1210) +4(1728 1872 1873 1729) +4(1209 1210 1873 1872) +4(1121 1730 1874 1211) +4(1729 1873 1874 1730) +4(1210 1211 1874 1873) +4(1122 1731 1875 1212) +4(1730 1874 1875 1731) +4(1211 1212 1875 1874) +4(1123 1732 1876 1213) +4(1731 1875 1876 1732) +4(1212 1213 1876 1875) +4(1124 1733 1877 1214) +4(1732 1876 1877 1733) +4(1213 1214 1877 1876) +4(1125 1734 1878 1215) +4(1733 1877 1878 1734) +4(1214 1215 1878 1877) +4(1126 1735 1879 1216) +4(1734 1878 1879 1735) +4(1215 1216 1879 1878) +4(1127 1736 1880 1217) +4(1735 1879 1880 1736) +4(1216 1217 1880 1879) +4(1128 1737 1881 1218) +4(1736 1880 1881 1737) +4(1217 1218 1881 1880) +4(1129 1738 1882 1219) +4(1737 1881 1882 1738) +4(1218 1219 1882 1881) +4(1130 1739 1883 1220) +4(1738 1882 1883 1739) +4(1219 1220 1883 1882) +4(1131 1740 1884 1221) +4(1739 1883 1884 1740) +4(1220 1221 1884 1883) +4(1740 1884 1885 1741) +4(1221 600 1885 1884) +4(576 1741 1885 600) +4(1727 1743 1887 1871) +4(1742 1886 1887 1743) +4(1870 1871 1887 1886) +4(1728 1744 1888 1872) +4(1743 1887 1888 1744) +4(1871 1872 1888 1887) +4(1729 1745 1889 1873) +4(1744 1888 1889 1745) +4(1872 1873 1889 1888) +4(1730 1746 1890 1874) +4(1745 1889 1890 1746) +4(1873 1874 1890 1889) +4(1731 1747 1891 1875) +4(1746 1890 1891 1747) +4(1874 1875 1891 1890) +4(1732 1748 1892 1876) +4(1747 1891 1892 1748) +4(1875 1876 1892 1891) +4(1733 1749 1893 1877) +4(1748 1892 1893 1749) +4(1876 1877 1893 1892) +4(1734 1750 1894 1878) +4(1749 1893 1894 1750) +4(1877 1878 1894 1893) +4(1735 1751 1895 1879) +4(1750 1894 1895 1751) +4(1878 1879 1895 1894) +4(1736 1752 1896 1880) +4(1751 1895 1896 1752) +4(1879 1880 1896 1895) +4(1737 1753 1897 1881) +4(1752 1896 1897 1753) +4(1880 1881 1897 1896) +4(1738 1754 1898 1882) +4(1753 1897 1898 1754) +4(1881 1882 1898 1897) +4(1739 1755 1899 1883) +4(1754 1898 1899 1755) +4(1882 1883 1899 1898) +4(1740 1756 1900 1884) +4(1755 1899 1900 1756) +4(1883 1884 1900 1899) +4(1756 1900 1901 1757) +4(1884 1885 1901 1900) +4(1741 1757 1901 1885) +4(1743 1759 1903 1887) +4(1758 1902 1903 1759) +4(1886 1887 1903 1902) +4(1744 1760 1904 1888) +4(1759 1903 1904 1760) +4(1887 1888 1904 1903) +4(1745 1761 1905 1889) +4(1760 1904 1905 1761) +4(1888 1889 1905 1904) +4(1746 1762 1906 1890) +4(1761 1905 1906 1762) +4(1889 1890 1906 1905) +4(1747 1763 1907 1891) +4(1762 1906 1907 1763) +4(1890 1891 1907 1906) +4(1748 1764 1908 1892) +4(1763 1907 1908 1764) +4(1891 1892 1908 1907) +4(1749 1765 1909 1893) +4(1764 1908 1909 1765) +4(1892 1893 1909 1908) +4(1750 1766 1910 1894) +4(1765 1909 1910 1766) +4(1893 1894 1910 1909) +4(1751 1767 1911 1895) +4(1766 1910 1911 1767) +4(1894 1895 1911 1910) +4(1752 1768 1912 1896) +4(1767 1911 1912 1768) +4(1895 1896 1912 1911) +4(1753 1769 1913 1897) +4(1768 1912 1913 1769) +4(1896 1897 1913 1912) +4(1754 1770 1914 1898) +4(1769 1913 1914 1770) +4(1897 1898 1914 1913) +4(1755 1771 1915 1899) +4(1770 1914 1915 1771) +4(1898 1899 1915 1914) +4(1756 1772 1916 1900) +4(1771 1915 1916 1772) +4(1899 1900 1916 1915) +4(1772 1916 1917 1773) +4(1900 1901 1917 1916) +4(1757 1773 1917 1901) +4(1759 1775 1919 1903) +4(1774 1918 1919 1775) +4(1902 1903 1919 1918) +4(1760 1776 1920 1904) +4(1775 1919 1920 1776) +4(1903 1904 1920 1919) +4(1761 1777 1921 1905) +4(1776 1920 1921 1777) +4(1904 1905 1921 1920) +4(1762 1778 1922 1906) +4(1777 1921 1922 1778) +4(1905 1906 1922 1921) +4(1763 1779 1923 1907) +4(1778 1922 1923 1779) +4(1906 1907 1923 1922) +4(1764 1780 1924 1908) +4(1779 1923 1924 1780) +4(1907 1908 1924 1923) +4(1765 1781 1925 1909) +4(1780 1924 1925 1781) +4(1908 1909 1925 1924) +4(1766 1782 1926 1910) +4(1781 1925 1926 1782) +4(1909 1910 1926 1925) +4(1767 1783 1927 1911) +4(1782 1926 1927 1783) +4(1910 1911 1927 1926) +4(1768 1784 1928 1912) +4(1783 1927 1928 1784) +4(1911 1912 1928 1927) +4(1769 1785 1929 1913) +4(1784 1928 1929 1785) +4(1912 1913 1929 1928) +4(1770 1786 1930 1914) +4(1785 1929 1930 1786) +4(1913 1914 1930 1929) +4(1771 1787 1931 1915) +4(1786 1930 1931 1787) +4(1914 1915 1931 1930) +4(1772 1788 1932 1916) +4(1787 1931 1932 1788) +4(1915 1916 1932 1931) +4(1788 1932 1933 1789) +4(1916 1917 1933 1932) +4(1773 1789 1933 1917) +4(1775 1791 1935 1919) +4(1790 1934 1935 1791) +4(1918 1919 1935 1934) +4(1776 1792 1936 1920) +4(1791 1935 1936 1792) +4(1919 1920 1936 1935) +4(1777 1793 1937 1921) +4(1792 1936 1937 1793) +4(1920 1921 1937 1936) +4(1778 1794 1938 1922) +4(1793 1937 1938 1794) +4(1921 1922 1938 1937) +4(1779 1795 1939 1923) +4(1794 1938 1939 1795) +4(1922 1923 1939 1938) +4(1780 1796 1940 1924) +4(1795 1939 1940 1796) +4(1923 1924 1940 1939) +4(1781 1797 1941 1925) +4(1796 1940 1941 1797) +4(1924 1925 1941 1940) +4(1782 1798 1942 1926) +4(1797 1941 1942 1798) +4(1925 1926 1942 1941) +4(1783 1799 1943 1927) +4(1798 1942 1943 1799) +4(1926 1927 1943 1942) +4(1784 1800 1944 1928) +4(1799 1943 1944 1800) +4(1927 1928 1944 1943) +4(1785 1801 1945 1929) +4(1800 1944 1945 1801) +4(1928 1929 1945 1944) +4(1786 1802 1946 1930) +4(1801 1945 1946 1802) +4(1929 1930 1946 1945) +4(1787 1803 1947 1931) +4(1802 1946 1947 1803) +4(1930 1931 1947 1946) +4(1788 1804 1948 1932) +4(1803 1947 1948 1804) +4(1931 1932 1948 1947) +4(1804 1948 1949 1805) +4(1932 1933 1949 1948) +4(1789 1805 1949 1933) +4(1791 1807 1951 1935) +4(1806 1950 1951 1807) +4(1934 1935 1951 1950) +4(1792 1808 1952 1936) +4(1807 1951 1952 1808) +4(1935 1936 1952 1951) +4(1793 1809 1953 1937) +4(1808 1952 1953 1809) +4(1936 1937 1953 1952) +4(1794 1810 1954 1938) +4(1809 1953 1954 1810) +4(1937 1938 1954 1953) +4(1795 1811 1955 1939) +4(1810 1954 1955 1811) +4(1938 1939 1955 1954) +4(1796 1812 1956 1940) +4(1811 1955 1956 1812) +4(1939 1940 1956 1955) +4(1797 1813 1957 1941) +4(1812 1956 1957 1813) +4(1940 1941 1957 1956) +4(1798 1814 1958 1942) +4(1813 1957 1958 1814) +4(1941 1942 1958 1957) +4(1799 1815 1959 1943) +4(1814 1958 1959 1815) +4(1942 1943 1959 1958) +4(1800 1816 1960 1944) +4(1815 1959 1960 1816) +4(1943 1944 1960 1959) +4(1801 1817 1961 1945) +4(1816 1960 1961 1817) +4(1944 1945 1961 1960) +4(1802 1818 1962 1946) +4(1817 1961 1962 1818) +4(1945 1946 1962 1961) +4(1803 1819 1963 1947) +4(1818 1962 1963 1819) +4(1946 1947 1963 1962) +4(1804 1820 1964 1948) +4(1819 1963 1964 1820) +4(1947 1948 1964 1963) +4(1820 1964 1965 1821) +4(1948 1949 1965 1964) +4(1805 1821 1965 1949) +4(1807 1823 1967 1951) +4(1822 1966 1967 1823) +4(1950 1951 1967 1966) +4(1808 1824 1968 1952) +4(1823 1967 1968 1824) +4(1951 1952 1968 1967) +4(1809 1825 1969 1953) +4(1824 1968 1969 1825) +4(1952 1953 1969 1968) +4(1810 1826 1970 1954) +4(1825 1969 1970 1826) +4(1953 1954 1970 1969) +4(1811 1827 1971 1955) +4(1826 1970 1971 1827) +4(1954 1955 1971 1970) +4(1812 1828 1972 1956) +4(1827 1971 1972 1828) +4(1955 1956 1972 1971) +4(1813 1829 1973 1957) +4(1828 1972 1973 1829) +4(1956 1957 1973 1972) +4(1814 1830 1974 1958) +4(1829 1973 1974 1830) +4(1957 1958 1974 1973) +4(1815 1831 1975 1959) +4(1830 1974 1975 1831) +4(1958 1959 1975 1974) +4(1816 1832 1976 1960) +4(1831 1975 1976 1832) +4(1959 1960 1976 1975) +4(1817 1833 1977 1961) +4(1832 1976 1977 1833) +4(1960 1961 1977 1976) +4(1818 1834 1978 1962) +4(1833 1977 1978 1834) +4(1961 1962 1978 1977) +4(1819 1835 1979 1963) +4(1834 1978 1979 1835) +4(1962 1963 1979 1978) +4(1820 1836 1980 1964) +4(1835 1979 1980 1836) +4(1963 1964 1980 1979) +4(1836 1980 1981 1837) +4(1964 1965 1981 1980) +4(1821 1837 1981 1965) +4(1823 1839 1983 1967) +4(1838 1982 1983 1839) +4(1966 1967 1983 1982) +4(1824 1840 1984 1968) +4(1839 1983 1984 1840) +4(1967 1968 1984 1983) +4(1825 1841 1985 1969) +4(1840 1984 1985 1841) +4(1968 1969 1985 1984) +4(1826 1842 1986 1970) +4(1841 1985 1986 1842) +4(1969 1970 1986 1985) +4(1827 1843 1987 1971) +4(1842 1986 1987 1843) +4(1970 1971 1987 1986) +4(1828 1844 1988 1972) +4(1843 1987 1988 1844) +4(1971 1972 1988 1987) +4(1829 1845 1989 1973) +4(1844 1988 1989 1845) +4(1972 1973 1989 1988) +4(1830 1846 1990 1974) +4(1845 1989 1990 1846) +4(1973 1974 1990 1989) +4(1831 1847 1991 1975) +4(1846 1990 1991 1847) +4(1974 1975 1991 1990) +4(1832 1848 1992 1976) +4(1847 1991 1992 1848) +4(1975 1976 1992 1991) +4(1833 1849 1993 1977) +4(1848 1992 1993 1849) +4(1976 1977 1993 1992) +4(1834 1850 1994 1978) +4(1849 1993 1994 1850) +4(1977 1978 1994 1993) +4(1835 1851 1995 1979) +4(1850 1994 1995 1851) +4(1978 1979 1995 1994) +4(1836 1852 1996 1980) +4(1851 1995 1996 1852) +4(1979 1980 1996 1995) +4(1852 1996 1997 1853) +4(1980 1981 1997 1996) +4(1837 1853 1997 1981) +4(1839 1855 1999 1983) +4(1982 1983 1999 1998) +4(1854 1998 1999 1855) +4(1840 1856 2000 1984) +4(1983 1984 2000 1999) +4(1855 1999 2000 1856) +4(1841 1857 2001 1985) +4(1984 1985 2001 2000) +4(1856 2000 2001 1857) +4(1842 1858 2002 1986) +4(1985 1986 2002 2001) +4(1857 2001 2002 1858) +4(1843 1859 2003 1987) +4(1986 1987 2003 2002) +4(1858 2002 2003 1859) +4(1844 1860 2004 1988) +4(1987 1988 2004 2003) +4(1859 2003 2004 1860) +4(1845 1861 2005 1989) +4(1988 1989 2005 2004) +4(1860 2004 2005 1861) +4(1846 1862 2006 1990) +4(1989 1990 2006 2005) +4(1861 2005 2006 1862) +4(1847 1863 2007 1991) +4(1990 1991 2007 2006) +4(1862 2006 2007 1863) +4(1848 1864 2008 1992) +4(1991 1992 2008 2007) +4(1863 2007 2008 1864) +4(1849 1865 2009 1993) +4(1992 1993 2009 2008) +4(1864 2008 2009 1865) +4(1850 1866 2010 1994) +4(1993 1994 2010 2009) +4(1865 2009 2010 1866) +4(1851 1867 2011 1995) +4(1994 1995 2011 2010) +4(1866 2010 2011 1867) +4(1852 1868 2012 1996) +4(1995 1996 2012 2011) +4(1867 2011 2012 1868) +4(1996 1997 2013 2012) +4(1868 2012 2013 1869) +4(1853 1869 2013 1997) +4(1208 1871 2015 1298) +4(1870 2014 2015 1871) +4(1297 1298 2015 2014) +4(1209 1872 2016 1299) +4(1871 2015 2016 1872) +4(1298 1299 2016 2015) +4(1210 1873 2017 1300) +4(1872 2016 2017 1873) +4(1299 1300 2017 2016) +4(1211 1874 2018 1301) +4(1873 2017 2018 1874) +4(1300 1301 2018 2017) +4(1212 1875 2019 1302) +4(1874 2018 2019 1875) +4(1301 1302 2019 2018) +4(1213 1876 2020 1303) +4(1875 2019 2020 1876) +4(1302 1303 2020 2019) +4(1214 1877 2021 1304) +4(1876 2020 2021 1877) +4(1303 1304 2021 2020) +4(1215 1878 2022 1305) +4(1877 2021 2022 1878) +4(1304 1305 2022 2021) +4(1216 1879 2023 1306) +4(1878 2022 2023 1879) +4(1305 1306 2023 2022) +4(1217 1880 2024 1307) +4(1879 2023 2024 1880) +4(1306 1307 2024 2023) +4(1218 1881 2025 1308) +4(1880 2024 2025 1881) +4(1307 1308 2025 2024) +4(1219 1882 2026 1309) +4(1881 2025 2026 1882) +4(1308 1309 2026 2025) +4(1220 1883 2027 1310) +4(1882 2026 2027 1883) +4(1309 1310 2027 2026) +4(1221 1884 2028 1311) +4(1883 2027 2028 1884) +4(1310 1311 2028 2027) +4(1884 2028 2029 1885) +4(1311 624 2029 2028) +4(600 1885 2029 624) +4(1871 1887 2031 2015) +4(1886 2030 2031 1887) +4(2014 2015 2031 2030) +4(1872 1888 2032 2016) +4(1887 2031 2032 1888) +4(2015 2016 2032 2031) +4(1873 1889 2033 2017) +4(1888 2032 2033 1889) +4(2016 2017 2033 2032) +4(1874 1890 2034 2018) +4(1889 2033 2034 1890) +4(2017 2018 2034 2033) +4(1875 1891 2035 2019) +4(1890 2034 2035 1891) +4(2018 2019 2035 2034) +4(1876 1892 2036 2020) +4(1891 2035 2036 1892) +4(2019 2020 2036 2035) +4(1877 1893 2037 2021) +4(1892 2036 2037 1893) +4(2020 2021 2037 2036) +4(1878 1894 2038 2022) +4(1893 2037 2038 1894) +4(2021 2022 2038 2037) +4(1879 1895 2039 2023) +4(1894 2038 2039 1895) +4(2022 2023 2039 2038) +4(1880 1896 2040 2024) +4(1895 2039 2040 1896) +4(2023 2024 2040 2039) +4(1881 1897 2041 2025) +4(1896 2040 2041 1897) +4(2024 2025 2041 2040) +4(1882 1898 2042 2026) +4(1897 2041 2042 1898) +4(2025 2026 2042 2041) +4(1883 1899 2043 2027) +4(1898 2042 2043 1899) +4(2026 2027 2043 2042) +4(1884 1900 2044 2028) +4(1899 2043 2044 1900) +4(2027 2028 2044 2043) +4(1900 2044 2045 1901) +4(2028 2029 2045 2044) +4(1885 1901 2045 2029) +4(1887 1903 2047 2031) +4(1902 2046 2047 1903) +4(2030 2031 2047 2046) +4(1888 1904 2048 2032) +4(1903 2047 2048 1904) +4(2031 2032 2048 2047) +4(1889 1905 2049 2033) +4(1904 2048 2049 1905) +4(2032 2033 2049 2048) +4(1890 1906 2050 2034) +4(1905 2049 2050 1906) +4(2033 2034 2050 2049) +4(1891 1907 2051 2035) +4(1906 2050 2051 1907) +4(2034 2035 2051 2050) +4(1892 1908 2052 2036) +4(1907 2051 2052 1908) +4(2035 2036 2052 2051) +4(1893 1909 2053 2037) +4(1908 2052 2053 1909) +4(2036 2037 2053 2052) +4(1894 1910 2054 2038) +4(1909 2053 2054 1910) +4(2037 2038 2054 2053) +4(1895 1911 2055 2039) +4(1910 2054 2055 1911) +4(2038 2039 2055 2054) +4(1896 1912 2056 2040) +4(1911 2055 2056 1912) +4(2039 2040 2056 2055) +4(1897 1913 2057 2041) +4(1912 2056 2057 1913) +4(2040 2041 2057 2056) +4(1898 1914 2058 2042) +4(1913 2057 2058 1914) +4(2041 2042 2058 2057) +4(1899 1915 2059 2043) +4(1914 2058 2059 1915) +4(2042 2043 2059 2058) +4(1900 1916 2060 2044) +4(1915 2059 2060 1916) +4(2043 2044 2060 2059) +4(1916 2060 2061 1917) +4(2044 2045 2061 2060) +4(1901 1917 2061 2045) +4(1903 1919 2063 2047) +4(1918 2062 2063 1919) +4(2046 2047 2063 2062) +4(1904 1920 2064 2048) +4(1919 2063 2064 1920) +4(2047 2048 2064 2063) +4(1905 1921 2065 2049) +4(1920 2064 2065 1921) +4(2048 2049 2065 2064) +4(1906 1922 2066 2050) +4(1921 2065 2066 1922) +4(2049 2050 2066 2065) +4(1907 1923 2067 2051) +4(1922 2066 2067 1923) +4(2050 2051 2067 2066) +4(1908 1924 2068 2052) +4(1923 2067 2068 1924) +4(2051 2052 2068 2067) +4(1909 1925 2069 2053) +4(1924 2068 2069 1925) +4(2052 2053 2069 2068) +4(1910 1926 2070 2054) +4(1925 2069 2070 1926) +4(2053 2054 2070 2069) +4(1911 1927 2071 2055) +4(1926 2070 2071 1927) +4(2054 2055 2071 2070) +4(1912 1928 2072 2056) +4(1927 2071 2072 1928) +4(2055 2056 2072 2071) +4(1913 1929 2073 2057) +4(1928 2072 2073 1929) +4(2056 2057 2073 2072) +4(1914 1930 2074 2058) +4(1929 2073 2074 1930) +4(2057 2058 2074 2073) +4(1915 1931 2075 2059) +4(1930 2074 2075 1931) +4(2058 2059 2075 2074) +4(1916 1932 2076 2060) +4(1931 2075 2076 1932) +4(2059 2060 2076 2075) +4(1932 2076 2077 1933) +4(2060 2061 2077 2076) +4(1917 1933 2077 2061) +4(1919 1935 2079 2063) +4(1934 2078 2079 1935) +4(2062 2063 2079 2078) +4(1920 1936 2080 2064) +4(1935 2079 2080 1936) +4(2063 2064 2080 2079) +4(1921 1937 2081 2065) +4(1936 2080 2081 1937) +4(2064 2065 2081 2080) +4(1922 1938 2082 2066) +4(1937 2081 2082 1938) +4(2065 2066 2082 2081) +4(1923 1939 2083 2067) +4(1938 2082 2083 1939) +4(2066 2067 2083 2082) +4(1924 1940 2084 2068) +4(1939 2083 2084 1940) +4(2067 2068 2084 2083) +4(1925 1941 2085 2069) +4(1940 2084 2085 1941) +4(2068 2069 2085 2084) +4(1926 1942 2086 2070) +4(1941 2085 2086 1942) +4(2069 2070 2086 2085) +4(1927 1943 2087 2071) +4(1942 2086 2087 1943) +4(2070 2071 2087 2086) +4(1928 1944 2088 2072) +4(1943 2087 2088 1944) +4(2071 2072 2088 2087) +4(1929 1945 2089 2073) +4(1944 2088 2089 1945) +4(2072 2073 2089 2088) +4(1930 1946 2090 2074) +4(1945 2089 2090 1946) +4(2073 2074 2090 2089) +4(1931 1947 2091 2075) +4(1946 2090 2091 1947) +4(2074 2075 2091 2090) +4(1932 1948 2092 2076) +4(1947 2091 2092 1948) +4(2075 2076 2092 2091) +4(1948 2092 2093 1949) +4(2076 2077 2093 2092) +4(1933 1949 2093 2077) +4(1935 1951 2095 2079) +4(1950 2094 2095 1951) +4(2078 2079 2095 2094) +4(1936 1952 2096 2080) +4(1951 2095 2096 1952) +4(2079 2080 2096 2095) +4(1937 1953 2097 2081) +4(1952 2096 2097 1953) +4(2080 2081 2097 2096) +4(1938 1954 2098 2082) +4(1953 2097 2098 1954) +4(2081 2082 2098 2097) +4(1939 1955 2099 2083) +4(1954 2098 2099 1955) +4(2082 2083 2099 2098) +4(1940 1956 2100 2084) +4(1955 2099 2100 1956) +4(2083 2084 2100 2099) +4(1941 1957 2101 2085) +4(1956 2100 2101 1957) +4(2084 2085 2101 2100) +4(1942 1958 2102 2086) +4(1957 2101 2102 1958) +4(2085 2086 2102 2101) +4(1943 1959 2103 2087) +4(1958 2102 2103 1959) +4(2086 2087 2103 2102) +4(1944 1960 2104 2088) +4(1959 2103 2104 1960) +4(2087 2088 2104 2103) +4(1945 1961 2105 2089) +4(1960 2104 2105 1961) +4(2088 2089 2105 2104) +4(1946 1962 2106 2090) +4(1961 2105 2106 1962) +4(2089 2090 2106 2105) +4(1947 1963 2107 2091) +4(1962 2106 2107 1963) +4(2090 2091 2107 2106) +4(1948 1964 2108 2092) +4(1963 2107 2108 1964) +4(2091 2092 2108 2107) +4(1964 2108 2109 1965) +4(2092 2093 2109 2108) +4(1949 1965 2109 2093) +4(1951 1967 2111 2095) +4(1966 2110 2111 1967) +4(2094 2095 2111 2110) +4(1952 1968 2112 2096) +4(1967 2111 2112 1968) +4(2095 2096 2112 2111) +4(1953 1969 2113 2097) +4(1968 2112 2113 1969) +4(2096 2097 2113 2112) +4(1954 1970 2114 2098) +4(1969 2113 2114 1970) +4(2097 2098 2114 2113) +4(1955 1971 2115 2099) +4(1970 2114 2115 1971) +4(2098 2099 2115 2114) +4(1956 1972 2116 2100) +4(1971 2115 2116 1972) +4(2099 2100 2116 2115) +4(1957 1973 2117 2101) +4(1972 2116 2117 1973) +4(2100 2101 2117 2116) +4(1958 1974 2118 2102) +4(1973 2117 2118 1974) +4(2101 2102 2118 2117) +4(1959 1975 2119 2103) +4(1974 2118 2119 1975) +4(2102 2103 2119 2118) +4(1960 1976 2120 2104) +4(1975 2119 2120 1976) +4(2103 2104 2120 2119) +4(1961 1977 2121 2105) +4(1976 2120 2121 1977) +4(2104 2105 2121 2120) +4(1962 1978 2122 2106) +4(1977 2121 2122 1978) +4(2105 2106 2122 2121) +4(1963 1979 2123 2107) +4(1978 2122 2123 1979) +4(2106 2107 2123 2122) +4(1964 1980 2124 2108) +4(1979 2123 2124 1980) +4(2107 2108 2124 2123) +4(1980 2124 2125 1981) +4(2108 2109 2125 2124) +4(1965 1981 2125 2109) +4(1967 1983 2127 2111) +4(1982 2126 2127 1983) +4(2110 2111 2127 2126) +4(1968 1984 2128 2112) +4(1983 2127 2128 1984) +4(2111 2112 2128 2127) +4(1969 1985 2129 2113) +4(1984 2128 2129 1985) +4(2112 2113 2129 2128) +4(1970 1986 2130 2114) +4(1985 2129 2130 1986) +4(2113 2114 2130 2129) +4(1971 1987 2131 2115) +4(1986 2130 2131 1987) +4(2114 2115 2131 2130) +4(1972 1988 2132 2116) +4(1987 2131 2132 1988) +4(2115 2116 2132 2131) +4(1973 1989 2133 2117) +4(1988 2132 2133 1989) +4(2116 2117 2133 2132) +4(1974 1990 2134 2118) +4(1989 2133 2134 1990) +4(2117 2118 2134 2133) +4(1975 1991 2135 2119) +4(1990 2134 2135 1991) +4(2118 2119 2135 2134) +4(1976 1992 2136 2120) +4(1991 2135 2136 1992) +4(2119 2120 2136 2135) +4(1977 1993 2137 2121) +4(1992 2136 2137 1993) +4(2120 2121 2137 2136) +4(1978 1994 2138 2122) +4(1993 2137 2138 1994) +4(2121 2122 2138 2137) +4(1979 1995 2139 2123) +4(1994 2138 2139 1995) +4(2122 2123 2139 2138) +4(1980 1996 2140 2124) +4(1995 2139 2140 1996) +4(2123 2124 2140 2139) +4(1996 2140 2141 1997) +4(2124 2125 2141 2140) +4(1981 1997 2141 2125) +4(1983 1999 2143 2127) +4(2126 2127 2143 2142) +4(1998 2142 2143 1999) +4(1984 2000 2144 2128) +4(2127 2128 2144 2143) +4(1999 2143 2144 2000) +4(1985 2001 2145 2129) +4(2128 2129 2145 2144) +4(2000 2144 2145 2001) +4(1986 2002 2146 2130) +4(2129 2130 2146 2145) +4(2001 2145 2146 2002) +4(1987 2003 2147 2131) +4(2130 2131 2147 2146) +4(2002 2146 2147 2003) +4(1988 2004 2148 2132) +4(2131 2132 2148 2147) +4(2003 2147 2148 2004) +4(1989 2005 2149 2133) +4(2132 2133 2149 2148) +4(2004 2148 2149 2005) +4(1990 2006 2150 2134) +4(2133 2134 2150 2149) +4(2005 2149 2150 2006) +4(1991 2007 2151 2135) +4(2134 2135 2151 2150) +4(2006 2150 2151 2007) +4(1992 2008 2152 2136) +4(2135 2136 2152 2151) +4(2007 2151 2152 2008) +4(1993 2009 2153 2137) +4(2136 2137 2153 2152) +4(2008 2152 2153 2009) +4(1994 2010 2154 2138) +4(2137 2138 2154 2153) +4(2009 2153 2154 2010) +4(1995 2011 2155 2139) +4(2138 2139 2155 2154) +4(2010 2154 2155 2011) +4(1996 2012 2156 2140) +4(2139 2140 2156 2155) +4(2011 2155 2156 2012) +4(2140 2141 2157 2156) +4(2012 2156 2157 2013) +4(1997 2013 2157 2141) +4(1298 2015 2159 1388) +4(2014 2158 2159 2015) +4(1387 1388 2159 2158) +4(1299 2016 2160 1389) +4(2015 2159 2160 2016) +4(1388 1389 2160 2159) +4(1300 2017 2161 1390) +4(2016 2160 2161 2017) +4(1389 1390 2161 2160) +4(1301 2018 2162 1391) +4(2017 2161 2162 2018) +4(1390 1391 2162 2161) +4(1302 2019 2163 1392) +4(2018 2162 2163 2019) +4(1391 1392 2163 2162) +4(1303 2020 2164 1393) +4(2019 2163 2164 2020) +4(1392 1393 2164 2163) +4(1304 2021 2165 1394) +4(2020 2164 2165 2021) +4(1393 1394 2165 2164) +4(1305 2022 2166 1395) +4(2021 2165 2166 2022) +4(1394 1395 2166 2165) +4(1306 2023 2167 1396) +4(2022 2166 2167 2023) +4(1395 1396 2167 2166) +4(1307 2024 2168 1397) +4(2023 2167 2168 2024) +4(1396 1397 2168 2167) +4(1308 2025 2169 1398) +4(2024 2168 2169 2025) +4(1397 1398 2169 2168) +4(1309 2026 2170 1399) +4(2025 2169 2170 2026) +4(1398 1399 2170 2169) +4(1310 2027 2171 1400) +4(2026 2170 2171 2027) +4(1399 1400 2171 2170) +4(1311 2028 2172 1401) +4(2027 2171 2172 2028) +4(1400 1401 2172 2171) +4(2028 2172 2173 2029) +4(1401 648 2173 2172) +4(624 2029 2173 648) +4(2015 2031 2175 2159) +4(2030 2174 2175 2031) +4(2158 2159 2175 2174) +4(2016 2032 2176 2160) +4(2031 2175 2176 2032) +4(2159 2160 2176 2175) +4(2017 2033 2177 2161) +4(2032 2176 2177 2033) +4(2160 2161 2177 2176) +4(2018 2034 2178 2162) +4(2033 2177 2178 2034) +4(2161 2162 2178 2177) +4(2019 2035 2179 2163) +4(2034 2178 2179 2035) +4(2162 2163 2179 2178) +4(2020 2036 2180 2164) +4(2035 2179 2180 2036) +4(2163 2164 2180 2179) +4(2021 2037 2181 2165) +4(2036 2180 2181 2037) +4(2164 2165 2181 2180) +4(2022 2038 2182 2166) +4(2037 2181 2182 2038) +4(2165 2166 2182 2181) +4(2023 2039 2183 2167) +4(2038 2182 2183 2039) +4(2166 2167 2183 2182) +4(2024 2040 2184 2168) +4(2039 2183 2184 2040) +4(2167 2168 2184 2183) +4(2025 2041 2185 2169) +4(2040 2184 2185 2041) +4(2168 2169 2185 2184) +4(2026 2042 2186 2170) +4(2041 2185 2186 2042) +4(2169 2170 2186 2185) +4(2027 2043 2187 2171) +4(2042 2186 2187 2043) +4(2170 2171 2187 2186) +4(2028 2044 2188 2172) +4(2043 2187 2188 2044) +4(2171 2172 2188 2187) +4(2044 2188 2189 2045) +4(2172 2173 2189 2188) +4(2029 2045 2189 2173) +4(2031 2047 2191 2175) +4(2046 2190 2191 2047) +4(2174 2175 2191 2190) +4(2032 2048 2192 2176) +4(2047 2191 2192 2048) +4(2175 2176 2192 2191) +4(2033 2049 2193 2177) +4(2048 2192 2193 2049) +4(2176 2177 2193 2192) +4(2034 2050 2194 2178) +4(2049 2193 2194 2050) +4(2177 2178 2194 2193) +4(2035 2051 2195 2179) +4(2050 2194 2195 2051) +4(2178 2179 2195 2194) +4(2036 2052 2196 2180) +4(2051 2195 2196 2052) +4(2179 2180 2196 2195) +4(2037 2053 2197 2181) +4(2052 2196 2197 2053) +4(2180 2181 2197 2196) +4(2038 2054 2198 2182) +4(2053 2197 2198 2054) +4(2181 2182 2198 2197) +4(2039 2055 2199 2183) +4(2054 2198 2199 2055) +4(2182 2183 2199 2198) +4(2040 2056 2200 2184) +4(2055 2199 2200 2056) +4(2183 2184 2200 2199) +4(2041 2057 2201 2185) +4(2056 2200 2201 2057) +4(2184 2185 2201 2200) +4(2042 2058 2202 2186) +4(2057 2201 2202 2058) +4(2185 2186 2202 2201) +4(2043 2059 2203 2187) +4(2058 2202 2203 2059) +4(2186 2187 2203 2202) +4(2044 2060 2204 2188) +4(2059 2203 2204 2060) +4(2187 2188 2204 2203) +4(2060 2204 2205 2061) +4(2188 2189 2205 2204) +4(2045 2061 2205 2189) +4(2047 2063 2207 2191) +4(2062 2206 2207 2063) +4(2190 2191 2207 2206) +4(2048 2064 2208 2192) +4(2063 2207 2208 2064) +4(2191 2192 2208 2207) +4(2049 2065 2209 2193) +4(2064 2208 2209 2065) +4(2192 2193 2209 2208) +4(2050 2066 2210 2194) +4(2065 2209 2210 2066) +4(2193 2194 2210 2209) +4(2051 2067 2211 2195) +4(2066 2210 2211 2067) +4(2194 2195 2211 2210) +4(2052 2068 2212 2196) +4(2067 2211 2212 2068) +4(2195 2196 2212 2211) +4(2053 2069 2213 2197) +4(2068 2212 2213 2069) +4(2196 2197 2213 2212) +4(2054 2070 2214 2198) +4(2069 2213 2214 2070) +4(2197 2198 2214 2213) +4(2055 2071 2215 2199) +4(2070 2214 2215 2071) +4(2198 2199 2215 2214) +4(2056 2072 2216 2200) +4(2071 2215 2216 2072) +4(2199 2200 2216 2215) +4(2057 2073 2217 2201) +4(2072 2216 2217 2073) +4(2200 2201 2217 2216) +4(2058 2074 2218 2202) +4(2073 2217 2218 2074) +4(2201 2202 2218 2217) +4(2059 2075 2219 2203) +4(2074 2218 2219 2075) +4(2202 2203 2219 2218) +4(2060 2076 2220 2204) +4(2075 2219 2220 2076) +4(2203 2204 2220 2219) +4(2076 2220 2221 2077) +4(2204 2205 2221 2220) +4(2061 2077 2221 2205) +4(2063 2079 2223 2207) +4(2078 2222 2223 2079) +4(2206 2207 2223 2222) +4(2064 2080 2224 2208) +4(2079 2223 2224 2080) +4(2207 2208 2224 2223) +4(2065 2081 2225 2209) +4(2080 2224 2225 2081) +4(2208 2209 2225 2224) +4(2066 2082 2226 2210) +4(2081 2225 2226 2082) +4(2209 2210 2226 2225) +4(2067 2083 2227 2211) +4(2082 2226 2227 2083) +4(2210 2211 2227 2226) +4(2068 2084 2228 2212) +4(2083 2227 2228 2084) +4(2211 2212 2228 2227) +4(2069 2085 2229 2213) +4(2084 2228 2229 2085) +4(2212 2213 2229 2228) +4(2070 2086 2230 2214) +4(2085 2229 2230 2086) +4(2213 2214 2230 2229) +4(2071 2087 2231 2215) +4(2086 2230 2231 2087) +4(2214 2215 2231 2230) +4(2072 2088 2232 2216) +4(2087 2231 2232 2088) +4(2215 2216 2232 2231) +4(2073 2089 2233 2217) +4(2088 2232 2233 2089) +4(2216 2217 2233 2232) +4(2074 2090 2234 2218) +4(2089 2233 2234 2090) +4(2217 2218 2234 2233) +4(2075 2091 2235 2219) +4(2090 2234 2235 2091) +4(2218 2219 2235 2234) +4(2076 2092 2236 2220) +4(2091 2235 2236 2092) +4(2219 2220 2236 2235) +4(2092 2236 2237 2093) +4(2220 2221 2237 2236) +4(2077 2093 2237 2221) +4(2079 2095 2239 2223) +4(2094 2238 2239 2095) +4(2222 2223 2239 2238) +4(2080 2096 2240 2224) +4(2095 2239 2240 2096) +4(2223 2224 2240 2239) +4(2081 2097 2241 2225) +4(2096 2240 2241 2097) +4(2224 2225 2241 2240) +4(2082 2098 2242 2226) +4(2097 2241 2242 2098) +4(2225 2226 2242 2241) +4(2083 2099 2243 2227) +4(2098 2242 2243 2099) +4(2226 2227 2243 2242) +4(2084 2100 2244 2228) +4(2099 2243 2244 2100) +4(2227 2228 2244 2243) +4(2085 2101 2245 2229) +4(2100 2244 2245 2101) +4(2228 2229 2245 2244) +4(2086 2102 2246 2230) +4(2101 2245 2246 2102) +4(2229 2230 2246 2245) +4(2087 2103 2247 2231) +4(2102 2246 2247 2103) +4(2230 2231 2247 2246) +4(2088 2104 2248 2232) +4(2103 2247 2248 2104) +4(2231 2232 2248 2247) +4(2089 2105 2249 2233) +4(2104 2248 2249 2105) +4(2232 2233 2249 2248) +4(2090 2106 2250 2234) +4(2105 2249 2250 2106) +4(2233 2234 2250 2249) +4(2091 2107 2251 2235) +4(2106 2250 2251 2107) +4(2234 2235 2251 2250) +4(2092 2108 2252 2236) +4(2107 2251 2252 2108) +4(2235 2236 2252 2251) +4(2108 2252 2253 2109) +4(2236 2237 2253 2252) +4(2093 2109 2253 2237) +4(2095 2111 2255 2239) +4(2110 2254 2255 2111) +4(2238 2239 2255 2254) +4(2096 2112 2256 2240) +4(2111 2255 2256 2112) +4(2239 2240 2256 2255) +4(2097 2113 2257 2241) +4(2112 2256 2257 2113) +4(2240 2241 2257 2256) +4(2098 2114 2258 2242) +4(2113 2257 2258 2114) +4(2241 2242 2258 2257) +4(2099 2115 2259 2243) +4(2114 2258 2259 2115) +4(2242 2243 2259 2258) +4(2100 2116 2260 2244) +4(2115 2259 2260 2116) +4(2243 2244 2260 2259) +4(2101 2117 2261 2245) +4(2116 2260 2261 2117) +4(2244 2245 2261 2260) +4(2102 2118 2262 2246) +4(2117 2261 2262 2118) +4(2245 2246 2262 2261) +4(2103 2119 2263 2247) +4(2118 2262 2263 2119) +4(2246 2247 2263 2262) +4(2104 2120 2264 2248) +4(2119 2263 2264 2120) +4(2247 2248 2264 2263) +4(2105 2121 2265 2249) +4(2120 2264 2265 2121) +4(2248 2249 2265 2264) +4(2106 2122 2266 2250) +4(2121 2265 2266 2122) +4(2249 2250 2266 2265) +4(2107 2123 2267 2251) +4(2122 2266 2267 2123) +4(2250 2251 2267 2266) +4(2108 2124 2268 2252) +4(2123 2267 2268 2124) +4(2251 2252 2268 2267) +4(2124 2268 2269 2125) +4(2252 2253 2269 2268) +4(2109 2125 2269 2253) +4(2111 2127 2271 2255) +4(2126 2270 2271 2127) +4(2254 2255 2271 2270) +4(2112 2128 2272 2256) +4(2127 2271 2272 2128) +4(2255 2256 2272 2271) +4(2113 2129 2273 2257) +4(2128 2272 2273 2129) +4(2256 2257 2273 2272) +4(2114 2130 2274 2258) +4(2129 2273 2274 2130) +4(2257 2258 2274 2273) +4(2115 2131 2275 2259) +4(2130 2274 2275 2131) +4(2258 2259 2275 2274) +4(2116 2132 2276 2260) +4(2131 2275 2276 2132) +4(2259 2260 2276 2275) +4(2117 2133 2277 2261) +4(2132 2276 2277 2133) +4(2260 2261 2277 2276) +4(2118 2134 2278 2262) +4(2133 2277 2278 2134) +4(2261 2262 2278 2277) +4(2119 2135 2279 2263) +4(2134 2278 2279 2135) +4(2262 2263 2279 2278) +4(2120 2136 2280 2264) +4(2135 2279 2280 2136) +4(2263 2264 2280 2279) +4(2121 2137 2281 2265) +4(2136 2280 2281 2137) +4(2264 2265 2281 2280) +4(2122 2138 2282 2266) +4(2137 2281 2282 2138) +4(2265 2266 2282 2281) +4(2123 2139 2283 2267) +4(2138 2282 2283 2139) +4(2266 2267 2283 2282) +4(2124 2140 2284 2268) +4(2139 2283 2284 2140) +4(2267 2268 2284 2283) +4(2140 2284 2285 2141) +4(2268 2269 2285 2284) +4(2125 2141 2285 2269) +4(2127 2143 2287 2271) +4(2270 2271 2287 2286) +4(2142 2286 2287 2143) +4(2128 2144 2288 2272) +4(2271 2272 2288 2287) +4(2143 2287 2288 2144) +4(2129 2145 2289 2273) +4(2272 2273 2289 2288) +4(2144 2288 2289 2145) +4(2130 2146 2290 2274) +4(2273 2274 2290 2289) +4(2145 2289 2290 2146) +4(2131 2147 2291 2275) +4(2274 2275 2291 2290) +4(2146 2290 2291 2147) +4(2132 2148 2292 2276) +4(2275 2276 2292 2291) +4(2147 2291 2292 2148) +4(2133 2149 2293 2277) +4(2276 2277 2293 2292) +4(2148 2292 2293 2149) +4(2134 2150 2294 2278) +4(2277 2278 2294 2293) +4(2149 2293 2294 2150) +4(2135 2151 2295 2279) +4(2278 2279 2295 2294) +4(2150 2294 2295 2151) +4(2136 2152 2296 2280) +4(2279 2280 2296 2295) +4(2151 2295 2296 2152) +4(2137 2153 2297 2281) +4(2280 2281 2297 2296) +4(2152 2296 2297 2153) +4(2138 2154 2298 2282) +4(2281 2282 2298 2297) +4(2153 2297 2298 2154) +4(2139 2155 2299 2283) +4(2282 2283 2299 2298) +4(2154 2298 2299 2155) +4(2140 2156 2300 2284) +4(2283 2284 2300 2299) +4(2155 2299 2300 2156) +4(2284 2285 2301 2300) +4(2156 2300 2301 2157) +4(2141 2157 2301 2285) +4(1388 2159 2303 1478) +4(2158 2302 2303 2159) +4(1477 1478 2303 2302) +4(1389 2160 2304 1479) +4(2159 2303 2304 2160) +4(1478 1479 2304 2303) +4(1390 2161 2305 1480) +4(2160 2304 2305 2161) +4(1479 1480 2305 2304) +4(1391 2162 2306 1481) +4(2161 2305 2306 2162) +4(1480 1481 2306 2305) +4(1392 2163 2307 1482) +4(2162 2306 2307 2163) +4(1481 1482 2307 2306) +4(1393 2164 2308 1483) +4(2163 2307 2308 2164) +4(1482 1483 2308 2307) +4(1394 2165 2309 1484) +4(2164 2308 2309 2165) +4(1483 1484 2309 2308) +4(1395 2166 2310 1485) +4(2165 2309 2310 2166) +4(1484 1485 2310 2309) +4(1396 2167 2311 1486) +4(2166 2310 2311 2167) +4(1485 1486 2311 2310) +4(1397 2168 2312 1487) +4(2167 2311 2312 2168) +4(1486 1487 2312 2311) +4(1398 2169 2313 1488) +4(2168 2312 2313 2169) +4(1487 1488 2313 2312) +4(1399 2170 2314 1489) +4(2169 2313 2314 2170) +4(1488 1489 2314 2313) +4(1400 2171 2315 1490) +4(2170 2314 2315 2171) +4(1489 1490 2315 2314) +4(1401 2172 2316 1491) +4(2171 2315 2316 2172) +4(1490 1491 2316 2315) +4(2172 2316 2317 2173) +4(1491 672 2317 2316) +4(648 2173 2317 672) +4(2159 2175 2319 2303) +4(2174 2318 2319 2175) +4(2302 2303 2319 2318) +4(2160 2176 2320 2304) +4(2175 2319 2320 2176) +4(2303 2304 2320 2319) +4(2161 2177 2321 2305) +4(2176 2320 2321 2177) +4(2304 2305 2321 2320) +4(2162 2178 2322 2306) +4(2177 2321 2322 2178) +4(2305 2306 2322 2321) +4(2163 2179 2323 2307) +4(2178 2322 2323 2179) +4(2306 2307 2323 2322) +4(2164 2180 2324 2308) +4(2179 2323 2324 2180) +4(2307 2308 2324 2323) +4(2165 2181 2325 2309) +4(2180 2324 2325 2181) +4(2308 2309 2325 2324) +4(2166 2182 2326 2310) +4(2181 2325 2326 2182) +4(2309 2310 2326 2325) +4(2167 2183 2327 2311) +4(2182 2326 2327 2183) +4(2310 2311 2327 2326) +4(2168 2184 2328 2312) +4(2183 2327 2328 2184) +4(2311 2312 2328 2327) +4(2169 2185 2329 2313) +4(2184 2328 2329 2185) +4(2312 2313 2329 2328) +4(2170 2186 2330 2314) +4(2185 2329 2330 2186) +4(2313 2314 2330 2329) +4(2171 2187 2331 2315) +4(2186 2330 2331 2187) +4(2314 2315 2331 2330) +4(2172 2188 2332 2316) +4(2187 2331 2332 2188) +4(2315 2316 2332 2331) +4(2188 2332 2333 2189) +4(2316 2317 2333 2332) +4(2173 2189 2333 2317) +4(2175 2191 2335 2319) +4(2190 2334 2335 2191) +4(2318 2319 2335 2334) +4(2176 2192 2336 2320) +4(2191 2335 2336 2192) +4(2319 2320 2336 2335) +4(2177 2193 2337 2321) +4(2192 2336 2337 2193) +4(2320 2321 2337 2336) +4(2178 2194 2338 2322) +4(2193 2337 2338 2194) +4(2321 2322 2338 2337) +4(2179 2195 2339 2323) +4(2194 2338 2339 2195) +4(2322 2323 2339 2338) +4(2180 2196 2340 2324) +4(2195 2339 2340 2196) +4(2323 2324 2340 2339) +4(2181 2197 2341 2325) +4(2196 2340 2341 2197) +4(2324 2325 2341 2340) +4(2182 2198 2342 2326) +4(2197 2341 2342 2198) +4(2325 2326 2342 2341) +4(2183 2199 2343 2327) +4(2198 2342 2343 2199) +4(2326 2327 2343 2342) +4(2184 2200 2344 2328) +4(2199 2343 2344 2200) +4(2327 2328 2344 2343) +4(2185 2201 2345 2329) +4(2200 2344 2345 2201) +4(2328 2329 2345 2344) +4(2186 2202 2346 2330) +4(2201 2345 2346 2202) +4(2329 2330 2346 2345) +4(2187 2203 2347 2331) +4(2202 2346 2347 2203) +4(2330 2331 2347 2346) +4(2188 2204 2348 2332) +4(2203 2347 2348 2204) +4(2331 2332 2348 2347) +4(2204 2348 2349 2205) +4(2332 2333 2349 2348) +4(2189 2205 2349 2333) +4(2191 2207 2351 2335) +4(2206 2350 2351 2207) +4(2334 2335 2351 2350) +4(2192 2208 2352 2336) +4(2207 2351 2352 2208) +4(2335 2336 2352 2351) +4(2193 2209 2353 2337) +4(2208 2352 2353 2209) +4(2336 2337 2353 2352) +4(2194 2210 2354 2338) +4(2209 2353 2354 2210) +4(2337 2338 2354 2353) +4(2195 2211 2355 2339) +4(2210 2354 2355 2211) +4(2338 2339 2355 2354) +4(2196 2212 2356 2340) +4(2211 2355 2356 2212) +4(2339 2340 2356 2355) +4(2197 2213 2357 2341) +4(2212 2356 2357 2213) +4(2340 2341 2357 2356) +4(2198 2214 2358 2342) +4(2213 2357 2358 2214) +4(2341 2342 2358 2357) +4(2199 2215 2359 2343) +4(2214 2358 2359 2215) +4(2342 2343 2359 2358) +4(2200 2216 2360 2344) +4(2215 2359 2360 2216) +4(2343 2344 2360 2359) +4(2201 2217 2361 2345) +4(2216 2360 2361 2217) +4(2344 2345 2361 2360) +4(2202 2218 2362 2346) +4(2217 2361 2362 2218) +4(2345 2346 2362 2361) +4(2203 2219 2363 2347) +4(2218 2362 2363 2219) +4(2346 2347 2363 2362) +4(2204 2220 2364 2348) +4(2219 2363 2364 2220) +4(2347 2348 2364 2363) +4(2220 2364 2365 2221) +4(2348 2349 2365 2364) +4(2205 2221 2365 2349) +4(2207 2223 2367 2351) +4(2222 2366 2367 2223) +4(2350 2351 2367 2366) +4(2208 2224 2368 2352) +4(2223 2367 2368 2224) +4(2351 2352 2368 2367) +4(2209 2225 2369 2353) +4(2224 2368 2369 2225) +4(2352 2353 2369 2368) +4(2210 2226 2370 2354) +4(2225 2369 2370 2226) +4(2353 2354 2370 2369) +4(2211 2227 2371 2355) +4(2226 2370 2371 2227) +4(2354 2355 2371 2370) +4(2212 2228 2372 2356) +4(2227 2371 2372 2228) +4(2355 2356 2372 2371) +4(2213 2229 2373 2357) +4(2228 2372 2373 2229) +4(2356 2357 2373 2372) +4(2214 2230 2374 2358) +4(2229 2373 2374 2230) +4(2357 2358 2374 2373) +4(2215 2231 2375 2359) +4(2230 2374 2375 2231) +4(2358 2359 2375 2374) +4(2216 2232 2376 2360) +4(2231 2375 2376 2232) +4(2359 2360 2376 2375) +4(2217 2233 2377 2361) +4(2232 2376 2377 2233) +4(2360 2361 2377 2376) +4(2218 2234 2378 2362) +4(2233 2377 2378 2234) +4(2361 2362 2378 2377) +4(2219 2235 2379 2363) +4(2234 2378 2379 2235) +4(2362 2363 2379 2378) +4(2220 2236 2380 2364) +4(2235 2379 2380 2236) +4(2363 2364 2380 2379) +4(2236 2380 2381 2237) +4(2364 2365 2381 2380) +4(2221 2237 2381 2365) +4(2223 2239 2383 2367) +4(2238 2382 2383 2239) +4(2366 2367 2383 2382) +4(2224 2240 2384 2368) +4(2239 2383 2384 2240) +4(2367 2368 2384 2383) +4(2225 2241 2385 2369) +4(2240 2384 2385 2241) +4(2368 2369 2385 2384) +4(2226 2242 2386 2370) +4(2241 2385 2386 2242) +4(2369 2370 2386 2385) +4(2227 2243 2387 2371) +4(2242 2386 2387 2243) +4(2370 2371 2387 2386) +4(2228 2244 2388 2372) +4(2243 2387 2388 2244) +4(2371 2372 2388 2387) +4(2229 2245 2389 2373) +4(2244 2388 2389 2245) +4(2372 2373 2389 2388) +4(2230 2246 2390 2374) +4(2245 2389 2390 2246) +4(2373 2374 2390 2389) +4(2231 2247 2391 2375) +4(2246 2390 2391 2247) +4(2374 2375 2391 2390) +4(2232 2248 2392 2376) +4(2247 2391 2392 2248) +4(2375 2376 2392 2391) +4(2233 2249 2393 2377) +4(2248 2392 2393 2249) +4(2376 2377 2393 2392) +4(2234 2250 2394 2378) +4(2249 2393 2394 2250) +4(2377 2378 2394 2393) +4(2235 2251 2395 2379) +4(2250 2394 2395 2251) +4(2378 2379 2395 2394) +4(2236 2252 2396 2380) +4(2251 2395 2396 2252) +4(2379 2380 2396 2395) +4(2252 2396 2397 2253) +4(2380 2381 2397 2396) +4(2237 2253 2397 2381) +4(2239 2255 2399 2383) +4(2254 2398 2399 2255) +4(2382 2383 2399 2398) +4(2240 2256 2400 2384) +4(2255 2399 2400 2256) +4(2383 2384 2400 2399) +4(2241 2257 2401 2385) +4(2256 2400 2401 2257) +4(2384 2385 2401 2400) +4(2242 2258 2402 2386) +4(2257 2401 2402 2258) +4(2385 2386 2402 2401) +4(2243 2259 2403 2387) +4(2258 2402 2403 2259) +4(2386 2387 2403 2402) +4(2244 2260 2404 2388) +4(2259 2403 2404 2260) +4(2387 2388 2404 2403) +4(2245 2261 2405 2389) +4(2260 2404 2405 2261) +4(2388 2389 2405 2404) +4(2246 2262 2406 2390) +4(2261 2405 2406 2262) +4(2389 2390 2406 2405) +4(2247 2263 2407 2391) +4(2262 2406 2407 2263) +4(2390 2391 2407 2406) +4(2248 2264 2408 2392) +4(2263 2407 2408 2264) +4(2391 2392 2408 2407) +4(2249 2265 2409 2393) +4(2264 2408 2409 2265) +4(2392 2393 2409 2408) +4(2250 2266 2410 2394) +4(2265 2409 2410 2266) +4(2393 2394 2410 2409) +4(2251 2267 2411 2395) +4(2266 2410 2411 2267) +4(2394 2395 2411 2410) +4(2252 2268 2412 2396) +4(2267 2411 2412 2268) +4(2395 2396 2412 2411) +4(2268 2412 2413 2269) +4(2396 2397 2413 2412) +4(2253 2269 2413 2397) +4(2255 2271 2415 2399) +4(2270 2414 2415 2271) +4(2398 2399 2415 2414) +4(2256 2272 2416 2400) +4(2271 2415 2416 2272) +4(2399 2400 2416 2415) +4(2257 2273 2417 2401) +4(2272 2416 2417 2273) +4(2400 2401 2417 2416) +4(2258 2274 2418 2402) +4(2273 2417 2418 2274) +4(2401 2402 2418 2417) +4(2259 2275 2419 2403) +4(2274 2418 2419 2275) +4(2402 2403 2419 2418) +4(2260 2276 2420 2404) +4(2275 2419 2420 2276) +4(2403 2404 2420 2419) +4(2261 2277 2421 2405) +4(2276 2420 2421 2277) +4(2404 2405 2421 2420) +4(2262 2278 2422 2406) +4(2277 2421 2422 2278) +4(2405 2406 2422 2421) +4(2263 2279 2423 2407) +4(2278 2422 2423 2279) +4(2406 2407 2423 2422) +4(2264 2280 2424 2408) +4(2279 2423 2424 2280) +4(2407 2408 2424 2423) +4(2265 2281 2425 2409) +4(2280 2424 2425 2281) +4(2408 2409 2425 2424) +4(2266 2282 2426 2410) +4(2281 2425 2426 2282) +4(2409 2410 2426 2425) +4(2267 2283 2427 2411) +4(2282 2426 2427 2283) +4(2410 2411 2427 2426) +4(2268 2284 2428 2412) +4(2283 2427 2428 2284) +4(2411 2412 2428 2427) +4(2284 2428 2429 2285) +4(2412 2413 2429 2428) +4(2269 2285 2429 2413) +4(2271 2287 2431 2415) +4(2414 2415 2431 2430) +4(2286 2430 2431 2287) +4(2272 2288 2432 2416) +4(2415 2416 2432 2431) +4(2287 2431 2432 2288) +4(2273 2289 2433 2417) +4(2416 2417 2433 2432) +4(2288 2432 2433 2289) +4(2274 2290 2434 2418) +4(2417 2418 2434 2433) +4(2289 2433 2434 2290) +4(2275 2291 2435 2419) +4(2418 2419 2435 2434) +4(2290 2434 2435 2291) +4(2276 2292 2436 2420) +4(2419 2420 2436 2435) +4(2291 2435 2436 2292) +4(2277 2293 2437 2421) +4(2420 2421 2437 2436) +4(2292 2436 2437 2293) +4(2278 2294 2438 2422) +4(2421 2422 2438 2437) +4(2293 2437 2438 2294) +4(2279 2295 2439 2423) +4(2422 2423 2439 2438) +4(2294 2438 2439 2295) +4(2280 2296 2440 2424) +4(2423 2424 2440 2439) +4(2295 2439 2440 2296) +4(2281 2297 2441 2425) +4(2424 2425 2441 2440) +4(2296 2440 2441 2297) +4(2282 2298 2442 2426) +4(2425 2426 2442 2441) +4(2297 2441 2442 2298) +4(2283 2299 2443 2427) +4(2426 2427 2443 2442) +4(2298 2442 2443 2299) +4(2284 2300 2444 2428) +4(2427 2428 2444 2443) +4(2299 2443 2444 2300) +4(2428 2429 2445 2444) +4(2300 2444 2445 2301) +4(2285 2301 2445 2429) +4(1478 2303 2447 1568) +4(2302 2446 2447 2303) +4(1479 2304 2448 1569) +4(2303 2447 2448 2304) +4(1480 2305 2449 1570) +4(2304 2448 2449 2305) +4(1481 2306 2450 1571) +4(2305 2449 2450 2306) +4(1482 2307 2451 1572) +4(2306 2450 2451 2307) +4(1483 2308 2452 1573) +4(2307 2451 2452 2308) +4(1484 2309 2453 1574) +4(2308 2452 2453 2309) +4(1485 2310 2454 1575) +4(2309 2453 2454 2310) +4(1486 2311 2455 1576) +4(2310 2454 2455 2311) +4(1487 2312 2456 1577) +4(2311 2455 2456 2312) +4(1488 2313 2457 1578) +4(2312 2456 2457 2313) +4(1489 2314 2458 1579) +4(2313 2457 2458 2314) +4(1490 2315 2459 1580) +4(2314 2458 2459 2315) +4(1491 2316 2460 1581) +4(2315 2459 2460 2316) +4(2316 2460 2461 2317) +4(672 2317 2461 696) +4(2303 2319 2463 2447) +4(2318 2462 2463 2319) +4(2304 2320 2464 2448) +4(2319 2463 2464 2320) +4(2305 2321 2465 2449) +4(2320 2464 2465 2321) +4(2306 2322 2466 2450) +4(2321 2465 2466 2322) +4(2307 2323 2467 2451) +4(2322 2466 2467 2323) +4(2308 2324 2468 2452) +4(2323 2467 2468 2324) +4(2309 2325 2469 2453) +4(2324 2468 2469 2325) +4(2310 2326 2470 2454) +4(2325 2469 2470 2326) +4(2311 2327 2471 2455) +4(2326 2470 2471 2327) +4(2312 2328 2472 2456) +4(2327 2471 2472 2328) +4(2313 2329 2473 2457) +4(2328 2472 2473 2329) +4(2314 2330 2474 2458) +4(2329 2473 2474 2330) +4(2315 2331 2475 2459) +4(2330 2474 2475 2331) +4(2316 2332 2476 2460) +4(2331 2475 2476 2332) +4(2332 2476 2477 2333) +4(2317 2333 2477 2461) +4(2319 2335 2479 2463) +4(2334 2478 2479 2335) +4(2320 2336 2480 2464) +4(2335 2479 2480 2336) +4(2321 2337 2481 2465) +4(2336 2480 2481 2337) +4(2322 2338 2482 2466) +4(2337 2481 2482 2338) +4(2323 2339 2483 2467) +4(2338 2482 2483 2339) +4(2324 2340 2484 2468) +4(2339 2483 2484 2340) +4(2325 2341 2485 2469) +4(2340 2484 2485 2341) +4(2326 2342 2486 2470) +4(2341 2485 2486 2342) +4(2327 2343 2487 2471) +4(2342 2486 2487 2343) +4(2328 2344 2488 2472) +4(2343 2487 2488 2344) +4(2329 2345 2489 2473) +4(2344 2488 2489 2345) +4(2330 2346 2490 2474) +4(2345 2489 2490 2346) +4(2331 2347 2491 2475) +4(2346 2490 2491 2347) +4(2332 2348 2492 2476) +4(2347 2491 2492 2348) +4(2348 2492 2493 2349) +4(2333 2349 2493 2477) +4(2335 2351 2495 2479) +4(2350 2494 2495 2351) +4(2336 2352 2496 2480) +4(2351 2495 2496 2352) +4(2337 2353 2497 2481) +4(2352 2496 2497 2353) +4(2338 2354 2498 2482) +4(2353 2497 2498 2354) +4(2339 2355 2499 2483) +4(2354 2498 2499 2355) +4(2340 2356 2500 2484) +4(2355 2499 2500 2356) +4(2341 2357 2501 2485) +4(2356 2500 2501 2357) +4(2342 2358 2502 2486) +4(2357 2501 2502 2358) +4(2343 2359 2503 2487) +4(2358 2502 2503 2359) +4(2344 2360 2504 2488) +4(2359 2503 2504 2360) +4(2345 2361 2505 2489) +4(2360 2504 2505 2361) +4(2346 2362 2506 2490) +4(2361 2505 2506 2362) +4(2347 2363 2507 2491) +4(2362 2506 2507 2363) +4(2348 2364 2508 2492) +4(2363 2507 2508 2364) +4(2364 2508 2509 2365) +4(2349 2365 2509 2493) +4(2351 2367 2511 2495) +4(2366 2510 2511 2367) +4(2352 2368 2512 2496) +4(2367 2511 2512 2368) +4(2353 2369 2513 2497) +4(2368 2512 2513 2369) +4(2354 2370 2514 2498) +4(2369 2513 2514 2370) +4(2355 2371 2515 2499) +4(2370 2514 2515 2371) +4(2356 2372 2516 2500) +4(2371 2515 2516 2372) +4(2357 2373 2517 2501) +4(2372 2516 2517 2373) +4(2358 2374 2518 2502) +4(2373 2517 2518 2374) +4(2359 2375 2519 2503) +4(2374 2518 2519 2375) +4(2360 2376 2520 2504) +4(2375 2519 2520 2376) +4(2361 2377 2521 2505) +4(2376 2520 2521 2377) +4(2362 2378 2522 2506) +4(2377 2521 2522 2378) +4(2363 2379 2523 2507) +4(2378 2522 2523 2379) +4(2364 2380 2524 2508) +4(2379 2523 2524 2380) +4(2380 2524 2525 2381) +4(2365 2381 2525 2509) +4(2367 2383 2527 2511) +4(2382 2526 2527 2383) +4(2368 2384 2528 2512) +4(2383 2527 2528 2384) +4(2369 2385 2529 2513) +4(2384 2528 2529 2385) +4(2370 2386 2530 2514) +4(2385 2529 2530 2386) +4(2371 2387 2531 2515) +4(2386 2530 2531 2387) +4(2372 2388 2532 2516) +4(2387 2531 2532 2388) +4(2373 2389 2533 2517) +4(2388 2532 2533 2389) +4(2374 2390 2534 2518) +4(2389 2533 2534 2390) +4(2375 2391 2535 2519) +4(2390 2534 2535 2391) +4(2376 2392 2536 2520) +4(2391 2535 2536 2392) +4(2377 2393 2537 2521) +4(2392 2536 2537 2393) +4(2378 2394 2538 2522) +4(2393 2537 2538 2394) +4(2379 2395 2539 2523) +4(2394 2538 2539 2395) +4(2380 2396 2540 2524) +4(2395 2539 2540 2396) +4(2396 2540 2541 2397) +4(2381 2397 2541 2525) +4(2383 2399 2543 2527) +4(2398 2542 2543 2399) +4(2384 2400 2544 2528) +4(2399 2543 2544 2400) +4(2385 2401 2545 2529) +4(2400 2544 2545 2401) +4(2386 2402 2546 2530) +4(2401 2545 2546 2402) +4(2387 2403 2547 2531) +4(2402 2546 2547 2403) +4(2388 2404 2548 2532) +4(2403 2547 2548 2404) +4(2389 2405 2549 2533) +4(2404 2548 2549 2405) +4(2390 2406 2550 2534) +4(2405 2549 2550 2406) +4(2391 2407 2551 2535) +4(2406 2550 2551 2407) +4(2392 2408 2552 2536) +4(2407 2551 2552 2408) +4(2393 2409 2553 2537) +4(2408 2552 2553 2409) +4(2394 2410 2554 2538) +4(2409 2553 2554 2410) +4(2395 2411 2555 2539) +4(2410 2554 2555 2411) +4(2396 2412 2556 2540) +4(2411 2555 2556 2412) +4(2412 2556 2557 2413) +4(2397 2413 2557 2541) +4(2399 2415 2559 2543) +4(2414 2558 2559 2415) +4(2400 2416 2560 2544) +4(2415 2559 2560 2416) +4(2401 2417 2561 2545) +4(2416 2560 2561 2417) +4(2402 2418 2562 2546) +4(2417 2561 2562 2418) +4(2403 2419 2563 2547) +4(2418 2562 2563 2419) +4(2404 2420 2564 2548) +4(2419 2563 2564 2420) +4(2405 2421 2565 2549) +4(2420 2564 2565 2421) +4(2406 2422 2566 2550) +4(2421 2565 2566 2422) +4(2407 2423 2567 2551) +4(2422 2566 2567 2423) +4(2408 2424 2568 2552) +4(2423 2567 2568 2424) +4(2409 2425 2569 2553) +4(2424 2568 2569 2425) +4(2410 2426 2570 2554) +4(2425 2569 2570 2426) +4(2411 2427 2571 2555) +4(2426 2570 2571 2427) +4(2412 2428 2572 2556) +4(2427 2571 2572 2428) +4(2428 2572 2573 2429) +4(2413 2429 2573 2557) +4(2415 2431 2575 2559) +4(2430 2574 2575 2431) +4(2416 2432 2576 2560) +4(2431 2575 2576 2432) +4(2417 2433 2577 2561) +4(2432 2576 2577 2433) +4(2418 2434 2578 2562) +4(2433 2577 2578 2434) +4(2419 2435 2579 2563) +4(2434 2578 2579 2435) +4(2420 2436 2580 2564) +4(2435 2579 2580 2436) +4(2421 2437 2581 2565) +4(2436 2580 2581 2437) +4(2422 2438 2582 2566) +4(2437 2581 2582 2438) +4(2423 2439 2583 2567) +4(2438 2582 2583 2439) +4(2424 2440 2584 2568) +4(2439 2583 2584 2440) +4(2425 2441 2585 2569) +4(2440 2584 2585 2441) +4(2426 2442 2586 2570) +4(2441 2585 2586 2442) +4(2427 2443 2587 2571) +4(2442 2586 2587 2443) +4(2428 2444 2588 2572) +4(2443 2587 2588 2444) +4(2444 2588 2589 2445) +4(2429 2445 2589 2573) +4(1711 2591 2639 1855) +4(2590 2638 2639 2591) +4(1854 1855 2639 2638) +4(1712 2592 2640 1856) +4(2591 2639 2640 2592) +4(1855 1856 2640 2639) +4(1713 2593 2641 1857) +4(2592 2640 2641 2593) +4(1856 1857 2641 2640) +4(1714 2594 2642 1858) +4(2593 2641 2642 2594) +4(1857 1858 2642 2641) +4(1715 2595 2643 1859) +4(2594 2642 2643 2595) +4(1858 1859 2643 2642) +4(1716 2596 2644 1860) +4(2595 2643 2644 2596) +4(1859 1860 2644 2643) +4(1717 2597 2645 1861) +4(2596 2644 2645 2597) +4(1860 1861 2645 2644) +4(1718 2598 2646 1862) +4(2597 2645 2646 2598) +4(1861 1862 2646 2645) +4(1719 2599 2647 1863) +4(2598 2646 2647 2599) +4(1862 1863 2647 2646) +4(1720 2600 2648 1864) +4(2599 2647 2648 2600) +4(1863 1864 2648 2647) +4(1721 2601 2649 1865) +4(2600 2648 2649 2601) +4(1864 1865 2649 2648) +4(1722 2602 2650 1866) +4(2601 2649 2650 2602) +4(1865 1866 2650 2649) +4(1723 2603 2651 1867) +4(2602 2650 2651 2603) +4(1866 1867 2651 2650) +4(1724 2604 2652 1868) +4(2603 2651 2652 2604) +4(1867 1868 2652 2651) +4(2604 2652 2653 2605) +4(1868 1869 2653 2652) +4(1725 2605 2653 1869) +4(2591 2607 2655 2639) +4(2606 2654 2655 2607) +4(2638 2639 2655 2654) +4(2592 2608 2656 2640) +4(2607 2655 2656 2608) +4(2639 2640 2656 2655) +4(2593 2609 2657 2641) +4(2608 2656 2657 2609) +4(2640 2641 2657 2656) +4(2594 2610 2658 2642) +4(2609 2657 2658 2610) +4(2641 2642 2658 2657) +4(2595 2611 2659 2643) +4(2610 2658 2659 2611) +4(2642 2643 2659 2658) +4(2596 2612 2660 2644) +4(2611 2659 2660 2612) +4(2643 2644 2660 2659) +4(2597 2613 2661 2645) +4(2612 2660 2661 2613) +4(2644 2645 2661 2660) +4(2598 2614 2662 2646) +4(2613 2661 2662 2614) +4(2645 2646 2662 2661) +4(2599 2615 2663 2647) +4(2614 2662 2663 2615) +4(2646 2647 2663 2662) +4(2600 2616 2664 2648) +4(2615 2663 2664 2616) +4(2647 2648 2664 2663) +4(2601 2617 2665 2649) +4(2616 2664 2665 2617) +4(2648 2649 2665 2664) +4(2602 2618 2666 2650) +4(2617 2665 2666 2618) +4(2649 2650 2666 2665) +4(2603 2619 2667 2651) +4(2618 2666 2667 2619) +4(2650 2651 2667 2666) +4(2604 2620 2668 2652) +4(2619 2667 2668 2620) +4(2651 2652 2668 2667) +4(2620 2668 2669 2621) +4(2652 2653 2669 2668) +4(2605 2621 2669 2653) +4(2607 2623 2671 2655) +4(2654 2655 2671 2670) +4(2622 2670 2671 2623) +4(2608 2624 2672 2656) +4(2655 2656 2672 2671) +4(2623 2671 2672 2624) +4(2609 2625 2673 2657) +4(2656 2657 2673 2672) +4(2624 2672 2673 2625) +4(2610 2626 2674 2658) +4(2657 2658 2674 2673) +4(2625 2673 2674 2626) +4(2611 2627 2675 2659) +4(2658 2659 2675 2674) +4(2626 2674 2675 2627) +4(2612 2628 2676 2660) +4(2659 2660 2676 2675) +4(2627 2675 2676 2628) +4(2613 2629 2677 2661) +4(2660 2661 2677 2676) +4(2628 2676 2677 2629) +4(2614 2630 2678 2662) +4(2661 2662 2678 2677) +4(2629 2677 2678 2630) +4(2615 2631 2679 2663) +4(2662 2663 2679 2678) +4(2630 2678 2679 2631) +4(2616 2632 2680 2664) +4(2663 2664 2680 2679) +4(2631 2679 2680 2632) +4(2617 2633 2681 2665) +4(2664 2665 2681 2680) +4(2632 2680 2681 2633) +4(2618 2634 2682 2666) +4(2665 2666 2682 2681) +4(2633 2681 2682 2634) +4(2619 2635 2683 2667) +4(2666 2667 2683 2682) +4(2634 2682 2683 2635) +4(2620 2636 2684 2668) +4(2667 2668 2684 2683) +4(2635 2683 2684 2636) +4(2668 2669 2685 2684) +4(2636 2684 2685 2637) +4(2621 2637 2685 2669) +4(1855 2639 2687 1999) +4(2638 2686 2687 2639) +4(1998 1999 2687 2686) +4(1856 2640 2688 2000) +4(2639 2687 2688 2640) +4(1999 2000 2688 2687) +4(1857 2641 2689 2001) +4(2640 2688 2689 2641) +4(2000 2001 2689 2688) +4(1858 2642 2690 2002) +4(2641 2689 2690 2642) +4(2001 2002 2690 2689) +4(1859 2643 2691 2003) +4(2642 2690 2691 2643) +4(2002 2003 2691 2690) +4(1860 2644 2692 2004) +4(2643 2691 2692 2644) +4(2003 2004 2692 2691) +4(1861 2645 2693 2005) +4(2644 2692 2693 2645) +4(2004 2005 2693 2692) +4(1862 2646 2694 2006) +4(2645 2693 2694 2646) +4(2005 2006 2694 2693) +4(1863 2647 2695 2007) +4(2646 2694 2695 2647) +4(2006 2007 2695 2694) +4(1864 2648 2696 2008) +4(2647 2695 2696 2648) +4(2007 2008 2696 2695) +4(1865 2649 2697 2009) +4(2648 2696 2697 2649) +4(2008 2009 2697 2696) +4(1866 2650 2698 2010) +4(2649 2697 2698 2650) +4(2009 2010 2698 2697) +4(1867 2651 2699 2011) +4(2650 2698 2699 2651) +4(2010 2011 2699 2698) +4(1868 2652 2700 2012) +4(2651 2699 2700 2652) +4(2011 2012 2700 2699) +4(2652 2700 2701 2653) +4(2012 2013 2701 2700) +4(1869 2653 2701 2013) +4(2639 2655 2703 2687) +4(2654 2702 2703 2655) +4(2686 2687 2703 2702) +4(2640 2656 2704 2688) +4(2655 2703 2704 2656) +4(2687 2688 2704 2703) +4(2641 2657 2705 2689) +4(2656 2704 2705 2657) +4(2688 2689 2705 2704) +4(2642 2658 2706 2690) +4(2657 2705 2706 2658) +4(2689 2690 2706 2705) +4(2643 2659 2707 2691) +4(2658 2706 2707 2659) +4(2690 2691 2707 2706) +4(2644 2660 2708 2692) +4(2659 2707 2708 2660) +4(2691 2692 2708 2707) +4(2645 2661 2709 2693) +4(2660 2708 2709 2661) +4(2692 2693 2709 2708) +4(2646 2662 2710 2694) +4(2661 2709 2710 2662) +4(2693 2694 2710 2709) +4(2647 2663 2711 2695) +4(2662 2710 2711 2663) +4(2694 2695 2711 2710) +4(2648 2664 2712 2696) +4(2663 2711 2712 2664) +4(2695 2696 2712 2711) +4(2649 2665 2713 2697) +4(2664 2712 2713 2665) +4(2696 2697 2713 2712) +4(2650 2666 2714 2698) +4(2665 2713 2714 2666) +4(2697 2698 2714 2713) +4(2651 2667 2715 2699) +4(2666 2714 2715 2667) +4(2698 2699 2715 2714) +4(2652 2668 2716 2700) +4(2667 2715 2716 2668) +4(2699 2700 2716 2715) +4(2668 2716 2717 2669) +4(2700 2701 2717 2716) +4(2653 2669 2717 2701) +4(2655 2671 2719 2703) +4(2702 2703 2719 2718) +4(2670 2718 2719 2671) +4(2656 2672 2720 2704) +4(2703 2704 2720 2719) +4(2671 2719 2720 2672) +4(2657 2673 2721 2705) +4(2704 2705 2721 2720) +4(2672 2720 2721 2673) +4(2658 2674 2722 2706) +4(2705 2706 2722 2721) +4(2673 2721 2722 2674) +4(2659 2675 2723 2707) +4(2706 2707 2723 2722) +4(2674 2722 2723 2675) +4(2660 2676 2724 2708) +4(2707 2708 2724 2723) +4(2675 2723 2724 2676) +4(2661 2677 2725 2709) +4(2708 2709 2725 2724) +4(2676 2724 2725 2677) +4(2662 2678 2726 2710) +4(2709 2710 2726 2725) +4(2677 2725 2726 2678) +4(2663 2679 2727 2711) +4(2710 2711 2727 2726) +4(2678 2726 2727 2679) +4(2664 2680 2728 2712) +4(2711 2712 2728 2727) +4(2679 2727 2728 2680) +4(2665 2681 2729 2713) +4(2712 2713 2729 2728) +4(2680 2728 2729 2681) +4(2666 2682 2730 2714) +4(2713 2714 2730 2729) +4(2681 2729 2730 2682) +4(2667 2683 2731 2715) +4(2714 2715 2731 2730) +4(2682 2730 2731 2683) +4(2668 2684 2732 2716) +4(2715 2716 2732 2731) +4(2683 2731 2732 2684) +4(2716 2717 2733 2732) +4(2684 2732 2733 2685) +4(2669 2685 2733 2717) +4(1999 2687 2735 2143) +4(2686 2734 2735 2687) +4(2142 2143 2735 2734) +4(2000 2688 2736 2144) +4(2687 2735 2736 2688) +4(2143 2144 2736 2735) +4(2001 2689 2737 2145) +4(2688 2736 2737 2689) +4(2144 2145 2737 2736) +4(2002 2690 2738 2146) +4(2689 2737 2738 2690) +4(2145 2146 2738 2737) +4(2003 2691 2739 2147) +4(2690 2738 2739 2691) +4(2146 2147 2739 2738) +4(2004 2692 2740 2148) +4(2691 2739 2740 2692) +4(2147 2148 2740 2739) +4(2005 2693 2741 2149) +4(2692 2740 2741 2693) +4(2148 2149 2741 2740) +4(2006 2694 2742 2150) +4(2693 2741 2742 2694) +4(2149 2150 2742 2741) +4(2007 2695 2743 2151) +4(2694 2742 2743 2695) +4(2150 2151 2743 2742) +4(2008 2696 2744 2152) +4(2695 2743 2744 2696) +4(2151 2152 2744 2743) +4(2009 2697 2745 2153) +4(2696 2744 2745 2697) +4(2152 2153 2745 2744) +4(2010 2698 2746 2154) +4(2697 2745 2746 2698) +4(2153 2154 2746 2745) +4(2011 2699 2747 2155) +4(2698 2746 2747 2699) +4(2154 2155 2747 2746) +4(2012 2700 2748 2156) +4(2699 2747 2748 2700) +4(2155 2156 2748 2747) +4(2700 2748 2749 2701) +4(2156 2157 2749 2748) +4(2013 2701 2749 2157) +4(2687 2703 2751 2735) +4(2702 2750 2751 2703) +4(2734 2735 2751 2750) +4(2688 2704 2752 2736) +4(2703 2751 2752 2704) +4(2735 2736 2752 2751) +4(2689 2705 2753 2737) +4(2704 2752 2753 2705) +4(2736 2737 2753 2752) +4(2690 2706 2754 2738) +4(2705 2753 2754 2706) +4(2737 2738 2754 2753) +4(2691 2707 2755 2739) +4(2706 2754 2755 2707) +4(2738 2739 2755 2754) +4(2692 2708 2756 2740) +4(2707 2755 2756 2708) +4(2739 2740 2756 2755) +4(2693 2709 2757 2741) +4(2708 2756 2757 2709) +4(2740 2741 2757 2756) +4(2694 2710 2758 2742) +4(2709 2757 2758 2710) +4(2741 2742 2758 2757) +4(2695 2711 2759 2743) +4(2710 2758 2759 2711) +4(2742 2743 2759 2758) +4(2696 2712 2760 2744) +4(2711 2759 2760 2712) +4(2743 2744 2760 2759) +4(2697 2713 2761 2745) +4(2712 2760 2761 2713) +4(2744 2745 2761 2760) +4(2698 2714 2762 2746) +4(2713 2761 2762 2714) +4(2745 2746 2762 2761) +4(2699 2715 2763 2747) +4(2714 2762 2763 2715) +4(2746 2747 2763 2762) +4(2700 2716 2764 2748) +4(2715 2763 2764 2716) +4(2747 2748 2764 2763) +4(2716 2764 2765 2717) +4(2748 2749 2765 2764) +4(2701 2717 2765 2749) +4(2703 2719 2767 2751) +4(2750 2751 2767 2766) +4(2718 2766 2767 2719) +4(2704 2720 2768 2752) +4(2751 2752 2768 2767) +4(2719 2767 2768 2720) +4(2705 2721 2769 2753) +4(2752 2753 2769 2768) +4(2720 2768 2769 2721) +4(2706 2722 2770 2754) +4(2753 2754 2770 2769) +4(2721 2769 2770 2722) +4(2707 2723 2771 2755) +4(2754 2755 2771 2770) +4(2722 2770 2771 2723) +4(2708 2724 2772 2756) +4(2755 2756 2772 2771) +4(2723 2771 2772 2724) +4(2709 2725 2773 2757) +4(2756 2757 2773 2772) +4(2724 2772 2773 2725) +4(2710 2726 2774 2758) +4(2757 2758 2774 2773) +4(2725 2773 2774 2726) +4(2711 2727 2775 2759) +4(2758 2759 2775 2774) +4(2726 2774 2775 2727) +4(2712 2728 2776 2760) +4(2759 2760 2776 2775) +4(2727 2775 2776 2728) +4(2713 2729 2777 2761) +4(2760 2761 2777 2776) +4(2728 2776 2777 2729) +4(2714 2730 2778 2762) +4(2761 2762 2778 2777) +4(2729 2777 2778 2730) +4(2715 2731 2779 2763) +4(2762 2763 2779 2778) +4(2730 2778 2779 2731) +4(2716 2732 2780 2764) +4(2763 2764 2780 2779) +4(2731 2779 2780 2732) +4(2764 2765 2781 2780) +4(2732 2780 2781 2733) +4(2717 2733 2781 2765) +4(2143 2735 2783 2287) +4(2734 2782 2783 2735) +4(2286 2287 2783 2782) +4(2144 2736 2784 2288) +4(2735 2783 2784 2736) +4(2287 2288 2784 2783) +4(2145 2737 2785 2289) +4(2736 2784 2785 2737) +4(2288 2289 2785 2784) +4(2146 2738 2786 2290) +4(2737 2785 2786 2738) +4(2289 2290 2786 2785) +4(2147 2739 2787 2291) +4(2738 2786 2787 2739) +4(2290 2291 2787 2786) +4(2148 2740 2788 2292) +4(2739 2787 2788 2740) +4(2291 2292 2788 2787) +4(2149 2741 2789 2293) +4(2740 2788 2789 2741) +4(2292 2293 2789 2788) +4(2150 2742 2790 2294) +4(2741 2789 2790 2742) +4(2293 2294 2790 2789) +4(2151 2743 2791 2295) +4(2742 2790 2791 2743) +4(2294 2295 2791 2790) +4(2152 2744 2792 2296) +4(2743 2791 2792 2744) +4(2295 2296 2792 2791) +4(2153 2745 2793 2297) +4(2744 2792 2793 2745) +4(2296 2297 2793 2792) +4(2154 2746 2794 2298) +4(2745 2793 2794 2746) +4(2297 2298 2794 2793) +4(2155 2747 2795 2299) +4(2746 2794 2795 2747) +4(2298 2299 2795 2794) +4(2156 2748 2796 2300) +4(2747 2795 2796 2748) +4(2299 2300 2796 2795) +4(2748 2796 2797 2749) +4(2300 2301 2797 2796) +4(2157 2749 2797 2301) +4(2735 2751 2799 2783) +4(2750 2798 2799 2751) +4(2782 2783 2799 2798) +4(2736 2752 2800 2784) +4(2751 2799 2800 2752) +4(2783 2784 2800 2799) +4(2737 2753 2801 2785) +4(2752 2800 2801 2753) +4(2784 2785 2801 2800) +4(2738 2754 2802 2786) +4(2753 2801 2802 2754) +4(2785 2786 2802 2801) +4(2739 2755 2803 2787) +4(2754 2802 2803 2755) +4(2786 2787 2803 2802) +4(2740 2756 2804 2788) +4(2755 2803 2804 2756) +4(2787 2788 2804 2803) +4(2741 2757 2805 2789) +4(2756 2804 2805 2757) +4(2788 2789 2805 2804) +4(2742 2758 2806 2790) +4(2757 2805 2806 2758) +4(2789 2790 2806 2805) +4(2743 2759 2807 2791) +4(2758 2806 2807 2759) +4(2790 2791 2807 2806) +4(2744 2760 2808 2792) +4(2759 2807 2808 2760) +4(2791 2792 2808 2807) +4(2745 2761 2809 2793) +4(2760 2808 2809 2761) +4(2792 2793 2809 2808) +4(2746 2762 2810 2794) +4(2761 2809 2810 2762) +4(2793 2794 2810 2809) +4(2747 2763 2811 2795) +4(2762 2810 2811 2763) +4(2794 2795 2811 2810) +4(2748 2764 2812 2796) +4(2763 2811 2812 2764) +4(2795 2796 2812 2811) +4(2764 2812 2813 2765) +4(2796 2797 2813 2812) +4(2749 2765 2813 2797) +4(2751 2767 2815 2799) +4(2798 2799 2815 2814) +4(2766 2814 2815 2767) +4(2752 2768 2816 2800) +4(2799 2800 2816 2815) +4(2767 2815 2816 2768) +4(2753 2769 2817 2801) +4(2800 2801 2817 2816) +4(2768 2816 2817 2769) +4(2754 2770 2818 2802) +4(2801 2802 2818 2817) +4(2769 2817 2818 2770) +4(2755 2771 2819 2803) +4(2802 2803 2819 2818) +4(2770 2818 2819 2771) +4(2756 2772 2820 2804) +4(2803 2804 2820 2819) +4(2771 2819 2820 2772) +4(2757 2773 2821 2805) +4(2804 2805 2821 2820) +4(2772 2820 2821 2773) +4(2758 2774 2822 2806) +4(2805 2806 2822 2821) +4(2773 2821 2822 2774) +4(2759 2775 2823 2807) +4(2806 2807 2823 2822) +4(2774 2822 2823 2775) +4(2760 2776 2824 2808) +4(2807 2808 2824 2823) +4(2775 2823 2824 2776) +4(2761 2777 2825 2809) +4(2808 2809 2825 2824) +4(2776 2824 2825 2777) +4(2762 2778 2826 2810) +4(2809 2810 2826 2825) +4(2777 2825 2826 2778) +4(2763 2779 2827 2811) +4(2810 2811 2827 2826) +4(2778 2826 2827 2779) +4(2764 2780 2828 2812) +4(2811 2812 2828 2827) +4(2779 2827 2828 2780) +4(2812 2813 2829 2828) +4(2780 2828 2829 2781) +4(2765 2781 2829 2813) +4(2287 2783 2831 2431) +4(2782 2830 2831 2783) +4(2430 2431 2831 2830) +4(2288 2784 2832 2432) +4(2783 2831 2832 2784) +4(2431 2432 2832 2831) +4(2289 2785 2833 2433) +4(2784 2832 2833 2785) +4(2432 2433 2833 2832) +4(2290 2786 2834 2434) +4(2785 2833 2834 2786) +4(2433 2434 2834 2833) +4(2291 2787 2835 2435) +4(2786 2834 2835 2787) +4(2434 2435 2835 2834) +4(2292 2788 2836 2436) +4(2787 2835 2836 2788) +4(2435 2436 2836 2835) +4(2293 2789 2837 2437) +4(2788 2836 2837 2789) +4(2436 2437 2837 2836) +4(2294 2790 2838 2438) +4(2789 2837 2838 2790) +4(2437 2438 2838 2837) +4(2295 2791 2839 2439) +4(2790 2838 2839 2791) +4(2438 2439 2839 2838) +4(2296 2792 2840 2440) +4(2791 2839 2840 2792) +4(2439 2440 2840 2839) +4(2297 2793 2841 2441) +4(2792 2840 2841 2793) +4(2440 2441 2841 2840) +4(2298 2794 2842 2442) +4(2793 2841 2842 2794) +4(2441 2442 2842 2841) +4(2299 2795 2843 2443) +4(2794 2842 2843 2795) +4(2442 2443 2843 2842) +4(2300 2796 2844 2444) +4(2795 2843 2844 2796) +4(2443 2444 2844 2843) +4(2796 2844 2845 2797) +4(2444 2445 2845 2844) +4(2301 2797 2845 2445) +4(2783 2799 2847 2831) +4(2798 2846 2847 2799) +4(2830 2831 2847 2846) +4(2784 2800 2848 2832) +4(2799 2847 2848 2800) +4(2831 2832 2848 2847) +4(2785 2801 2849 2833) +4(2800 2848 2849 2801) +4(2832 2833 2849 2848) +4(2786 2802 2850 2834) +4(2801 2849 2850 2802) +4(2833 2834 2850 2849) +4(2787 2803 2851 2835) +4(2802 2850 2851 2803) +4(2834 2835 2851 2850) +4(2788 2804 2852 2836) +4(2803 2851 2852 2804) +4(2835 2836 2852 2851) +4(2789 2805 2853 2837) +4(2804 2852 2853 2805) +4(2836 2837 2853 2852) +4(2790 2806 2854 2838) +4(2805 2853 2854 2806) +4(2837 2838 2854 2853) +4(2791 2807 2855 2839) +4(2806 2854 2855 2807) +4(2838 2839 2855 2854) +4(2792 2808 2856 2840) +4(2807 2855 2856 2808) +4(2839 2840 2856 2855) +4(2793 2809 2857 2841) +4(2808 2856 2857 2809) +4(2840 2841 2857 2856) +4(2794 2810 2858 2842) +4(2809 2857 2858 2810) +4(2841 2842 2858 2857) +4(2795 2811 2859 2843) +4(2810 2858 2859 2811) +4(2842 2843 2859 2858) +4(2796 2812 2860 2844) +4(2811 2859 2860 2812) +4(2843 2844 2860 2859) +4(2812 2860 2861 2813) +4(2844 2845 2861 2860) +4(2797 2813 2861 2845) +4(2799 2815 2863 2847) +4(2846 2847 2863 2862) +4(2814 2862 2863 2815) +4(2800 2816 2864 2848) +4(2847 2848 2864 2863) +4(2815 2863 2864 2816) +4(2801 2817 2865 2849) +4(2848 2849 2865 2864) +4(2816 2864 2865 2817) +4(2802 2818 2866 2850) +4(2849 2850 2866 2865) +4(2817 2865 2866 2818) +4(2803 2819 2867 2851) +4(2850 2851 2867 2866) +4(2818 2866 2867 2819) +4(2804 2820 2868 2852) +4(2851 2852 2868 2867) +4(2819 2867 2868 2820) +4(2805 2821 2869 2853) +4(2852 2853 2869 2868) +4(2820 2868 2869 2821) +4(2806 2822 2870 2854) +4(2853 2854 2870 2869) +4(2821 2869 2870 2822) +4(2807 2823 2871 2855) +4(2854 2855 2871 2870) +4(2822 2870 2871 2823) +4(2808 2824 2872 2856) +4(2855 2856 2872 2871) +4(2823 2871 2872 2824) +4(2809 2825 2873 2857) +4(2856 2857 2873 2872) +4(2824 2872 2873 2825) +4(2810 2826 2874 2858) +4(2857 2858 2874 2873) +4(2825 2873 2874 2826) +4(2811 2827 2875 2859) +4(2858 2859 2875 2874) +4(2826 2874 2875 2827) +4(2812 2828 2876 2860) +4(2859 2860 2876 2875) +4(2827 2875 2876 2828) +4(2860 2861 2877 2876) +4(2828 2876 2877 2829) +4(2813 2829 2877 2861) +4(2431 2831 2879 2575) +4(2830 2878 2879 2831) +4(2432 2832 2880 2576) +4(2831 2879 2880 2832) +4(2433 2833 2881 2577) +4(2832 2880 2881 2833) +4(2434 2834 2882 2578) +4(2833 2881 2882 2834) +4(2435 2835 2883 2579) +4(2834 2882 2883 2835) +4(2436 2836 2884 2580) +4(2835 2883 2884 2836) +4(2437 2837 2885 2581) +4(2836 2884 2885 2837) +4(2438 2838 2886 2582) +4(2837 2885 2886 2838) +4(2439 2839 2887 2583) +4(2838 2886 2887 2839) +4(2440 2840 2888 2584) +4(2839 2887 2888 2840) +4(2441 2841 2889 2585) +4(2840 2888 2889 2841) +4(2442 2842 2890 2586) +4(2841 2889 2890 2842) +4(2443 2843 2891 2587) +4(2842 2890 2891 2843) +4(2444 2844 2892 2588) +4(2843 2891 2892 2844) +4(2844 2892 2893 2845) +4(2445 2845 2893 2589) +4(2831 2847 2895 2879) +4(2846 2894 2895 2847) +4(2832 2848 2896 2880) +4(2847 2895 2896 2848) +4(2833 2849 2897 2881) +4(2848 2896 2897 2849) +4(2834 2850 2898 2882) +4(2849 2897 2898 2850) +4(2835 2851 2899 2883) +4(2850 2898 2899 2851) +4(2836 2852 2900 2884) +4(2851 2899 2900 2852) +4(2837 2853 2901 2885) +4(2852 2900 2901 2853) +4(2838 2854 2902 2886) +4(2853 2901 2902 2854) +4(2839 2855 2903 2887) +4(2854 2902 2903 2855) +4(2840 2856 2904 2888) +4(2855 2903 2904 2856) +4(2841 2857 2905 2889) +4(2856 2904 2905 2857) +4(2842 2858 2906 2890) +4(2857 2905 2906 2858) +4(2843 2859 2907 2891) +4(2858 2906 2907 2859) +4(2844 2860 2908 2892) +4(2859 2907 2908 2860) +4(2860 2908 2909 2861) +4(2845 2861 2909 2893) +4(2847 2863 2911 2895) +4(2862 2910 2911 2863) +4(2848 2864 2912 2896) +4(2863 2911 2912 2864) +4(2849 2865 2913 2897) +4(2864 2912 2913 2865) +4(2850 2866 2914 2898) +4(2865 2913 2914 2866) +4(2851 2867 2915 2899) +4(2866 2914 2915 2867) +4(2852 2868 2916 2900) +4(2867 2915 2916 2868) +4(2853 2869 2917 2901) +4(2868 2916 2917 2869) +4(2854 2870 2918 2902) +4(2869 2917 2918 2870) +4(2855 2871 2919 2903) +4(2870 2918 2919 2871) +4(2856 2872 2920 2904) +4(2871 2919 2920 2872) +4(2857 2873 2921 2905) +4(2872 2920 2921 2873) +4(2858 2874 2922 2906) +4(2873 2921 2922 2874) +4(2859 2875 2923 2907) +4(2874 2922 2923 2875) +4(2860 2876 2924 2908) +4(2875 2923 2924 2876) +4(2876 2924 2925 2877) +4(2861 2877 2925 2909) +4(553 2926 2953 577) +4(1597 1741 2953 2926) +4(576 577 2953 1741) +4(554 2927 2954 578) +4(2926 2953 2954 2927) +4(577 578 2954 2953) +4(2927 2954 2955 2928) +4(578 579 2955 2954) +4(555 2928 2955 579) +4(2926 2929 2956 2953) +4(1613 1757 2956 2929) +4(1741 2953 2956 1757) +4(2927 2930 2957 2954) +4(2929 2956 2957 2930) +4(2953 2954 2957 2956) +4(2930 2957 2958 2931) +4(2954 2955 2958 2957) +4(2928 2931 2958 2955) +4(2929 2932 2959 2956) +4(1629 1773 2959 2932) +4(1757 2956 2959 1773) +4(2930 2933 2960 2957) +4(2932 2959 2960 2933) +4(2956 2957 2960 2959) +4(2933 2960 2961 2934) +4(2957 2958 2961 2960) +4(2931 2934 2961 2958) +4(2932 2935 2962 2959) +4(1645 1789 2962 2935) +4(1773 2959 2962 1789) +4(2933 2936 2963 2960) +4(2935 2962 2963 2936) +4(2959 2960 2963 2962) +4(2936 2963 2964 2937) +4(2960 2961 2964 2963) +4(2934 2937 2964 2961) +4(2935 2938 2965 2962) +4(1661 1805 2965 2938) +4(1789 2962 2965 1805) +4(2936 2939 2966 2963) +4(2938 2965 2966 2939) +4(2962 2963 2966 2965) +4(2939 2966 2967 2940) +4(2963 2964 2967 2966) +4(2937 2940 2967 2964) +4(2938 2941 2968 2965) +4(1677 1821 2968 2941) +4(1805 2965 2968 1821) +4(2939 2942 2969 2966) +4(2941 2968 2969 2942) +4(2965 2966 2969 2968) +4(2942 2969 2970 2943) +4(2966 2967 2970 2969) +4(2940 2943 2970 2967) +4(2941 2944 2971 2968) +4(1693 1837 2971 2944) +4(1821 2968 2971 1837) +4(2942 2945 2972 2969) +4(2944 2971 2972 2945) +4(2968 2969 2972 2971) +4(2945 2972 2973 2946) +4(2969 2970 2973 2972) +4(2943 2946 2973 2970) +4(2944 2947 2974 2971) +4(1709 1853 2974 2947) +4(1837 2971 2974 1853) +4(2945 2948 2975 2972) +4(2947 2974 2975 2948) +4(2971 2972 2975 2974) +4(2948 2975 2976 2949) +4(2972 2973 2976 2975) +4(2946 2949 2976 2973) +4(2947 2950 2977 2974) +4(1853 2974 2977 1869) +4(1725 1869 2977 2950) +4(2948 2951 2978 2975) +4(2974 2975 2978 2977) +4(2950 2977 2978 2951) +4(2975 2976 2979 2978) +4(2949 2952 2979 2976) +4(2951 2978 2979 2952) +4(577 2953 2980 601) +4(1741 1885 2980 2953) +4(600 601 2980 1885) +4(578 2954 2981 602) +4(2953 2980 2981 2954) +4(601 602 2981 2980) +4(2954 2981 2982 2955) +4(602 603 2982 2981) +4(579 2955 2982 603) +4(2953 2956 2983 2980) +4(1757 1901 2983 2956) +4(1885 2980 2983 1901) +4(2954 2957 2984 2981) +4(2956 2983 2984 2957) +4(2980 2981 2984 2983) +4(2957 2984 2985 2958) +4(2981 2982 2985 2984) +4(2955 2958 2985 2982) +4(2956 2959 2986 2983) +4(1773 1917 2986 2959) +4(1901 2983 2986 1917) +4(2957 2960 2987 2984) +4(2959 2986 2987 2960) +4(2983 2984 2987 2986) +4(2960 2987 2988 2961) +4(2984 2985 2988 2987) +4(2958 2961 2988 2985) +4(2959 2962 2989 2986) +4(1789 1933 2989 2962) +4(1917 2986 2989 1933) +4(2960 2963 2990 2987) +4(2962 2989 2990 2963) +4(2986 2987 2990 2989) +4(2963 2990 2991 2964) +4(2987 2988 2991 2990) +4(2961 2964 2991 2988) +4(2962 2965 2992 2989) +4(1805 1949 2992 2965) +4(1933 2989 2992 1949) +4(2963 2966 2993 2990) +4(2965 2992 2993 2966) +4(2989 2990 2993 2992) +4(2966 2993 2994 2967) +4(2990 2991 2994 2993) +4(2964 2967 2994 2991) +4(2965 2968 2995 2992) +4(1821 1965 2995 2968) +4(1949 2992 2995 1965) +4(2966 2969 2996 2993) +4(2968 2995 2996 2969) +4(2992 2993 2996 2995) +4(2969 2996 2997 2970) +4(2993 2994 2997 2996) +4(2967 2970 2997 2994) +4(2968 2971 2998 2995) +4(1837 1981 2998 2971) +4(1965 2995 2998 1981) +4(2969 2972 2999 2996) +4(2971 2998 2999 2972) +4(2995 2996 2999 2998) +4(2972 2999 3000 2973) +4(2996 2997 3000 2999) +4(2970 2973 3000 2997) +4(2971 2974 3001 2998) +4(1853 1997 3001 2974) +4(1981 2998 3001 1997) +4(2972 2975 3002 2999) +4(2974 3001 3002 2975) +4(2998 2999 3002 3001) +4(2975 3002 3003 2976) +4(2999 3000 3003 3002) +4(2973 2976 3003 3000) +4(2974 2977 3004 3001) +4(1997 3001 3004 2013) +4(1869 2013 3004 2977) +4(2975 2978 3005 3002) +4(3001 3002 3005 3004) +4(2977 3004 3005 2978) +4(3002 3003 3006 3005) +4(2976 2979 3006 3003) +4(2978 3005 3006 2979) +4(601 2980 3007 625) +4(1885 2029 3007 2980) +4(624 625 3007 2029) +4(602 2981 3008 626) +4(2980 3007 3008 2981) +4(625 626 3008 3007) +4(2981 3008 3009 2982) +4(626 627 3009 3008) +4(603 2982 3009 627) +4(2980 2983 3010 3007) +4(1901 2045 3010 2983) +4(2029 3007 3010 2045) +4(2981 2984 3011 3008) +4(2983 3010 3011 2984) +4(3007 3008 3011 3010) +4(2984 3011 3012 2985) +4(3008 3009 3012 3011) +4(2982 2985 3012 3009) +4(2983 2986 3013 3010) +4(1917 2061 3013 2986) +4(2045 3010 3013 2061) +4(2984 2987 3014 3011) +4(2986 3013 3014 2987) +4(3010 3011 3014 3013) +4(2987 3014 3015 2988) +4(3011 3012 3015 3014) +4(2985 2988 3015 3012) +4(2986 2989 3016 3013) +4(1933 2077 3016 2989) +4(2061 3013 3016 2077) +4(2987 2990 3017 3014) +4(2989 3016 3017 2990) +4(3013 3014 3017 3016) +4(2990 3017 3018 2991) +4(3014 3015 3018 3017) +4(2988 2991 3018 3015) +4(2989 2992 3019 3016) +4(1949 2093 3019 2992) +4(2077 3016 3019 2093) +4(2990 2993 3020 3017) +4(2992 3019 3020 2993) +4(3016 3017 3020 3019) +4(2993 3020 3021 2994) +4(3017 3018 3021 3020) +4(2991 2994 3021 3018) +4(2992 2995 3022 3019) +4(1965 2109 3022 2995) +4(2093 3019 3022 2109) +4(2993 2996 3023 3020) +4(2995 3022 3023 2996) +4(3019 3020 3023 3022) +4(2996 3023 3024 2997) +4(3020 3021 3024 3023) +4(2994 2997 3024 3021) +4(2995 2998 3025 3022) +4(1981 2125 3025 2998) +4(2109 3022 3025 2125) +4(2996 2999 3026 3023) +4(2998 3025 3026 2999) +4(3022 3023 3026 3025) +4(2999 3026 3027 3000) +4(3023 3024 3027 3026) +4(2997 3000 3027 3024) +4(2998 3001 3028 3025) +4(1997 2141 3028 3001) +4(2125 3025 3028 2141) +4(2999 3002 3029 3026) +4(3001 3028 3029 3002) +4(3025 3026 3029 3028) +4(3002 3029 3030 3003) +4(3026 3027 3030 3029) +4(3000 3003 3030 3027) +4(3001 3004 3031 3028) +4(2141 3028 3031 2157) +4(2013 2157 3031 3004) +4(3002 3005 3032 3029) +4(3028 3029 3032 3031) +4(3004 3031 3032 3005) +4(3029 3030 3033 3032) +4(3003 3006 3033 3030) +4(3005 3032 3033 3006) +4(625 3007 3034 649) +4(2029 2173 3034 3007) +4(648 649 3034 2173) +4(626 3008 3035 650) +4(3007 3034 3035 3008) +4(649 650 3035 3034) +4(3008 3035 3036 3009) +4(650 651 3036 3035) +4(627 3009 3036 651) +4(3007 3010 3037 3034) +4(2045 2189 3037 3010) +4(2173 3034 3037 2189) +4(3008 3011 3038 3035) +4(3010 3037 3038 3011) +4(3034 3035 3038 3037) +4(3011 3038 3039 3012) +4(3035 3036 3039 3038) +4(3009 3012 3039 3036) +4(3010 3013 3040 3037) +4(2061 2205 3040 3013) +4(2189 3037 3040 2205) +4(3011 3014 3041 3038) +4(3013 3040 3041 3014) +4(3037 3038 3041 3040) +4(3014 3041 3042 3015) +4(3038 3039 3042 3041) +4(3012 3015 3042 3039) +4(3013 3016 3043 3040) +4(2077 2221 3043 3016) +4(2205 3040 3043 2221) +4(3014 3017 3044 3041) +4(3016 3043 3044 3017) +4(3040 3041 3044 3043) +4(3017 3044 3045 3018) +4(3041 3042 3045 3044) +4(3015 3018 3045 3042) +4(3016 3019 3046 3043) +4(2093 2237 3046 3019) +4(2221 3043 3046 2237) +4(3017 3020 3047 3044) +4(3019 3046 3047 3020) +4(3043 3044 3047 3046) +4(3020 3047 3048 3021) +4(3044 3045 3048 3047) +4(3018 3021 3048 3045) +4(3019 3022 3049 3046) +4(2109 2253 3049 3022) +4(2237 3046 3049 2253) +4(3020 3023 3050 3047) +4(3022 3049 3050 3023) +4(3046 3047 3050 3049) +4(3023 3050 3051 3024) +4(3047 3048 3051 3050) +4(3021 3024 3051 3048) +4(3022 3025 3052 3049) +4(2125 2269 3052 3025) +4(2253 3049 3052 2269) +4(3023 3026 3053 3050) +4(3025 3052 3053 3026) +4(3049 3050 3053 3052) +4(3026 3053 3054 3027) +4(3050 3051 3054 3053) +4(3024 3027 3054 3051) +4(3025 3028 3055 3052) +4(2141 2285 3055 3028) +4(2269 3052 3055 2285) +4(3026 3029 3056 3053) +4(3028 3055 3056 3029) +4(3052 3053 3056 3055) +4(3029 3056 3057 3030) +4(3053 3054 3057 3056) +4(3027 3030 3057 3054) +4(3028 3031 3058 3055) +4(2285 3055 3058 2301) +4(2157 2301 3058 3031) +4(3029 3032 3059 3056) +4(3055 3056 3059 3058) +4(3031 3058 3059 3032) +4(3056 3057 3060 3059) +4(3030 3033 3060 3057) +4(3032 3059 3060 3033) +4(649 3034 3061 673) +4(2173 2317 3061 3034) +4(672 673 3061 2317) +4(650 3035 3062 674) +4(3034 3061 3062 3035) +4(673 674 3062 3061) +4(3035 3062 3063 3036) +4(674 675 3063 3062) +4(651 3036 3063 675) +4(3034 3037 3064 3061) +4(2189 2333 3064 3037) +4(2317 3061 3064 2333) +4(3035 3038 3065 3062) +4(3037 3064 3065 3038) +4(3061 3062 3065 3064) +4(3038 3065 3066 3039) +4(3062 3063 3066 3065) +4(3036 3039 3066 3063) +4(3037 3040 3067 3064) +4(2205 2349 3067 3040) +4(2333 3064 3067 2349) +4(3038 3041 3068 3065) +4(3040 3067 3068 3041) +4(3064 3065 3068 3067) +4(3041 3068 3069 3042) +4(3065 3066 3069 3068) +4(3039 3042 3069 3066) +4(3040 3043 3070 3067) +4(2221 2365 3070 3043) +4(2349 3067 3070 2365) +4(3041 3044 3071 3068) +4(3043 3070 3071 3044) +4(3067 3068 3071 3070) +4(3044 3071 3072 3045) +4(3068 3069 3072 3071) +4(3042 3045 3072 3069) +4(3043 3046 3073 3070) +4(2237 2381 3073 3046) +4(2365 3070 3073 2381) +4(3044 3047 3074 3071) +4(3046 3073 3074 3047) +4(3070 3071 3074 3073) +4(3047 3074 3075 3048) +4(3071 3072 3075 3074) +4(3045 3048 3075 3072) +4(3046 3049 3076 3073) +4(2253 2397 3076 3049) +4(2381 3073 3076 2397) +4(3047 3050 3077 3074) +4(3049 3076 3077 3050) +4(3073 3074 3077 3076) +4(3050 3077 3078 3051) +4(3074 3075 3078 3077) +4(3048 3051 3078 3075) +4(3049 3052 3079 3076) +4(2269 2413 3079 3052) +4(2397 3076 3079 2413) +4(3050 3053 3080 3077) +4(3052 3079 3080 3053) +4(3076 3077 3080 3079) +4(3053 3080 3081 3054) +4(3077 3078 3081 3080) +4(3051 3054 3081 3078) +4(3052 3055 3082 3079) +4(2285 2429 3082 3055) +4(2413 3079 3082 2429) +4(3053 3056 3083 3080) +4(3055 3082 3083 3056) +4(3079 3080 3083 3082) +4(3056 3083 3084 3057) +4(3080 3081 3084 3083) +4(3054 3057 3084 3081) +4(3055 3058 3085 3082) +4(2429 3082 3085 2445) +4(2301 2445 3085 3058) +4(3056 3059 3086 3083) +4(3082 3083 3086 3085) +4(3058 3085 3086 3059) +4(3083 3084 3087 3086) +4(3057 3060 3087 3084) +4(3059 3086 3087 3060) +4(673 3061 3088 697) +4(2317 2461 3088 3061) +4(674 3062 3089 698) +4(3061 3088 3089 3062) +4(3062 3089 3090 3063) +4(675 3063 3090 699) +4(3061 3064 3091 3088) +4(2333 2477 3091 3064) +4(3062 3065 3092 3089) +4(3064 3091 3092 3065) +4(3065 3092 3093 3066) +4(3063 3066 3093 3090) +4(3064 3067 3094 3091) +4(2349 2493 3094 3067) +4(3065 3068 3095 3092) +4(3067 3094 3095 3068) +4(3068 3095 3096 3069) +4(3066 3069 3096 3093) +4(3067 3070 3097 3094) +4(2365 2509 3097 3070) +4(3068 3071 3098 3095) +4(3070 3097 3098 3071) +4(3071 3098 3099 3072) +4(3069 3072 3099 3096) +4(3070 3073 3100 3097) +4(2381 2525 3100 3073) +4(3071 3074 3101 3098) +4(3073 3100 3101 3074) +4(3074 3101 3102 3075) +4(3072 3075 3102 3099) +4(3073 3076 3103 3100) +4(2397 2541 3103 3076) +4(3074 3077 3104 3101) +4(3076 3103 3104 3077) +4(3077 3104 3105 3078) +4(3075 3078 3105 3102) +4(3076 3079 3106 3103) +4(2413 2557 3106 3079) +4(3077 3080 3107 3104) +4(3079 3106 3107 3080) +4(3080 3107 3108 3081) +4(3078 3081 3108 3105) +4(3079 3082 3109 3106) +4(2429 2573 3109 3082) +4(3080 3083 3110 3107) +4(3082 3109 3110 3083) +4(3083 3110 3111 3084) +4(3081 3084 3111 3108) +4(3082 3085 3112 3109) +4(2445 2589 3112 3085) +4(3083 3086 3113 3110) +4(3085 3112 3113 3086) +4(3084 3087 3114 3111) +4(3086 3113 3114 3087) +4(3115 3124 3214 3205) +4(2928 2955 3214 3124) +4(579 3205 3214 2955) +4(555 3115 3205 579) +4(3116 3125 3215 3206) +4(3124 3214 3215 3125) +4(3205 3206 3215 3214) +4(3115 3116 3206 3205) +4(3117 3126 3216 3207) +4(3125 3215 3216 3126) +4(3206 3207 3216 3215) +4(3116 3117 3207 3206) +4(3118 3127 3217 3208) +4(3126 3216 3217 3127) +4(3207 3208 3217 3216) +4(3117 3118 3208 3207) +4(3119 3128 3218 3209) +4(3127 3217 3218 3128) +4(3208 3209 3218 3217) +4(3118 3119 3209 3208) +4(3120 3129 3219 3210) +4(3128 3218 3219 3129) +4(3209 3210 3219 3218) +4(3119 3120 3210 3209) +4(3121 3130 3220 3211) +4(3129 3219 3220 3130) +4(3210 3211 3220 3219) +4(3120 3121 3211 3210) +4(3122 3131 3221 3212) +4(3130 3220 3221 3131) +4(3211 3212 3221 3220) +4(3121 3122 3212 3211) +4(3131 3221 3222 3132) +4(3212 3213 3222 3221) +4(3122 3123 3213 3212) +4(3124 3133 3223 3214) +4(2931 2958 3223 3133) +4(2955 3214 3223 2958) +4(3125 3134 3224 3215) +4(3133 3223 3224 3134) +4(3214 3215 3224 3223) +4(3126 3135 3225 3216) +4(3134 3224 3225 3135) +4(3215 3216 3225 3224) +4(3127 3136 3226 3217) +4(3135 3225 3226 3136) +4(3216 3217 3226 3225) +4(3128 3137 3227 3218) +4(3136 3226 3227 3137) +4(3217 3218 3227 3226) +4(3129 3138 3228 3219) +4(3137 3227 3228 3138) +4(3218 3219 3228 3227) +4(3130 3139 3229 3220) +4(3138 3228 3229 3139) +4(3219 3220 3229 3228) +4(3131 3140 3230 3221) +4(3139 3229 3230 3140) +4(3220 3221 3230 3229) +4(3140 3230 3231 3141) +4(3221 3222 3231 3230) +4(3133 3142 3232 3223) +4(2934 2961 3232 3142) +4(2958 3223 3232 2961) +4(3134 3143 3233 3224) +4(3142 3232 3233 3143) +4(3223 3224 3233 3232) +4(3135 3144 3234 3225) +4(3143 3233 3234 3144) +4(3224 3225 3234 3233) +4(3136 3145 3235 3226) +4(3144 3234 3235 3145) +4(3225 3226 3235 3234) +4(3137 3146 3236 3227) +4(3145 3235 3236 3146) +4(3226 3227 3236 3235) +4(3138 3147 3237 3228) +4(3146 3236 3237 3147) +4(3227 3228 3237 3236) +4(3139 3148 3238 3229) +4(3147 3237 3238 3148) +4(3228 3229 3238 3237) +4(3140 3149 3239 3230) +4(3148 3238 3239 3149) +4(3229 3230 3239 3238) +4(3149 3239 3240 3150) +4(3230 3231 3240 3239) +4(3142 3151 3241 3232) +4(2937 2964 3241 3151) +4(2961 3232 3241 2964) +4(3143 3152 3242 3233) +4(3151 3241 3242 3152) +4(3232 3233 3242 3241) +4(3144 3153 3243 3234) +4(3152 3242 3243 3153) +4(3233 3234 3243 3242) +4(3145 3154 3244 3235) +4(3153 3243 3244 3154) +4(3234 3235 3244 3243) +4(3146 3155 3245 3236) +4(3154 3244 3245 3155) +4(3235 3236 3245 3244) +4(3147 3156 3246 3237) +4(3155 3245 3246 3156) +4(3236 3237 3246 3245) +4(3148 3157 3247 3238) +4(3156 3246 3247 3157) +4(3237 3238 3247 3246) +4(3149 3158 3248 3239) +4(3157 3247 3248 3158) +4(3238 3239 3248 3247) +4(3158 3248 3249 3159) +4(3239 3240 3249 3248) +4(3151 3160 3250 3241) +4(2940 2967 3250 3160) +4(2964 3241 3250 2967) +4(3152 3161 3251 3242) +4(3160 3250 3251 3161) +4(3241 3242 3251 3250) +4(3153 3162 3252 3243) +4(3161 3251 3252 3162) +4(3242 3243 3252 3251) +4(3154 3163 3253 3244) +4(3162 3252 3253 3163) +4(3243 3244 3253 3252) +4(3155 3164 3254 3245) +4(3163 3253 3254 3164) +4(3244 3245 3254 3253) +4(3156 3165 3255 3246) +4(3164 3254 3255 3165) +4(3245 3246 3255 3254) +4(3157 3166 3256 3247) +4(3165 3255 3256 3166) +4(3246 3247 3256 3255) +4(3158 3167 3257 3248) +4(3166 3256 3257 3167) +4(3247 3248 3257 3256) +4(3167 3257 3258 3168) +4(3248 3249 3258 3257) +4(3160 3169 3259 3250) +4(2943 2970 3259 3169) +4(2967 3250 3259 2970) +4(3161 3170 3260 3251) +4(3169 3259 3260 3170) +4(3250 3251 3260 3259) +4(3162 3171 3261 3252) +4(3170 3260 3261 3171) +4(3251 3252 3261 3260) +4(3163 3172 3262 3253) +4(3171 3261 3262 3172) +4(3252 3253 3262 3261) +4(3164 3173 3263 3254) +4(3172 3262 3263 3173) +4(3253 3254 3263 3262) +4(3165 3174 3264 3255) +4(3173 3263 3264 3174) +4(3254 3255 3264 3263) +4(3166 3175 3265 3256) +4(3174 3264 3265 3175) +4(3255 3256 3265 3264) +4(3167 3176 3266 3257) +4(3175 3265 3266 3176) +4(3256 3257 3266 3265) +4(3176 3266 3267 3177) +4(3257 3258 3267 3266) +4(3169 3178 3268 3259) +4(2946 2973 3268 3178) +4(2970 3259 3268 2973) +4(3170 3179 3269 3260) +4(3178 3268 3269 3179) +4(3259 3260 3269 3268) +4(3171 3180 3270 3261) +4(3179 3269 3270 3180) +4(3260 3261 3270 3269) +4(3172 3181 3271 3262) +4(3180 3270 3271 3181) +4(3261 3262 3271 3270) +4(3173 3182 3272 3263) +4(3181 3271 3272 3182) +4(3262 3263 3272 3271) +4(3174 3183 3273 3264) +4(3182 3272 3273 3183) +4(3263 3264 3273 3272) +4(3175 3184 3274 3265) +4(3183 3273 3274 3184) +4(3264 3265 3274 3273) +4(3176 3185 3275 3266) +4(3184 3274 3275 3185) +4(3265 3266 3275 3274) +4(3185 3275 3276 3186) +4(3266 3267 3276 3275) +4(3178 3187 3277 3268) +4(2949 2976 3277 3187) +4(2973 3268 3277 2976) +4(3179 3188 3278 3269) +4(3187 3277 3278 3188) +4(3268 3269 3278 3277) +4(3180 3189 3279 3270) +4(3188 3278 3279 3189) +4(3269 3270 3279 3278) +4(3181 3190 3280 3271) +4(3189 3279 3280 3190) +4(3270 3271 3280 3279) +4(3182 3191 3281 3272) +4(3190 3280 3281 3191) +4(3271 3272 3281 3280) +4(3183 3192 3282 3273) +4(3191 3281 3282 3192) +4(3272 3273 3282 3281) +4(3184 3193 3283 3274) +4(3192 3282 3283 3193) +4(3273 3274 3283 3282) +4(3185 3194 3284 3275) +4(3193 3283 3284 3194) +4(3274 3275 3284 3283) +4(3194 3284 3285 3195) +4(3275 3276 3285 3284) +4(3187 3196 3286 3277) +4(2976 3277 3286 2979) +4(2952 2979 3286 3196) +4(3188 3197 3287 3278) +4(3277 3278 3287 3286) +4(3196 3286 3287 3197) +4(3189 3198 3288 3279) +4(3278 3279 3288 3287) +4(3197 3287 3288 3198) +4(3190 3199 3289 3280) +4(3279 3280 3289 3288) +4(3198 3288 3289 3199) +4(3191 3200 3290 3281) +4(3280 3281 3290 3289) +4(3199 3289 3290 3200) +4(3192 3201 3291 3282) +4(3281 3282 3291 3290) +4(3200 3290 3291 3201) +4(3193 3202 3292 3283) +4(3282 3283 3292 3291) +4(3201 3291 3292 3202) +4(3194 3203 3293 3284) +4(3283 3284 3293 3292) +4(3202 3292 3293 3203) +4(3284 3285 3294 3293) +4(3203 3293 3294 3204) +4(3205 3214 3304 3295) +4(2955 2982 3304 3214) +4(603 3295 3304 2982) +4(579 3205 3295 603) +4(3206 3215 3305 3296) +4(3214 3304 3305 3215) +4(3295 3296 3305 3304) +4(3205 3206 3296 3295) +4(3207 3216 3306 3297) +4(3215 3305 3306 3216) +4(3296 3297 3306 3305) +4(3206 3207 3297 3296) +4(3208 3217 3307 3298) +4(3216 3306 3307 3217) +4(3297 3298 3307 3306) +4(3207 3208 3298 3297) +4(3209 3218 3308 3299) +4(3217 3307 3308 3218) +4(3298 3299 3308 3307) +4(3208 3209 3299 3298) +4(3210 3219 3309 3300) +4(3218 3308 3309 3219) +4(3299 3300 3309 3308) +4(3209 3210 3300 3299) +4(3211 3220 3310 3301) +4(3219 3309 3310 3220) +4(3300 3301 3310 3309) +4(3210 3211 3301 3300) +4(3212 3221 3311 3302) +4(3220 3310 3311 3221) +4(3301 3302 3311 3310) +4(3211 3212 3302 3301) +4(3221 3311 3312 3222) +4(3302 3303 3312 3311) +4(3212 3213 3303 3302) +4(3214 3223 3313 3304) +4(2958 2985 3313 3223) +4(2982 3304 3313 2985) +4(3215 3224 3314 3305) +4(3223 3313 3314 3224) +4(3304 3305 3314 3313) +4(3216 3225 3315 3306) +4(3224 3314 3315 3225) +4(3305 3306 3315 3314) +4(3217 3226 3316 3307) +4(3225 3315 3316 3226) +4(3306 3307 3316 3315) +4(3218 3227 3317 3308) +4(3226 3316 3317 3227) +4(3307 3308 3317 3316) +4(3219 3228 3318 3309) +4(3227 3317 3318 3228) +4(3308 3309 3318 3317) +4(3220 3229 3319 3310) +4(3228 3318 3319 3229) +4(3309 3310 3319 3318) +4(3221 3230 3320 3311) +4(3229 3319 3320 3230) +4(3310 3311 3320 3319) +4(3230 3320 3321 3231) +4(3311 3312 3321 3320) +4(3223 3232 3322 3313) +4(2961 2988 3322 3232) +4(2985 3313 3322 2988) +4(3224 3233 3323 3314) +4(3232 3322 3323 3233) +4(3313 3314 3323 3322) +4(3225 3234 3324 3315) +4(3233 3323 3324 3234) +4(3314 3315 3324 3323) +4(3226 3235 3325 3316) +4(3234 3324 3325 3235) +4(3315 3316 3325 3324) +4(3227 3236 3326 3317) +4(3235 3325 3326 3236) +4(3316 3317 3326 3325) +4(3228 3237 3327 3318) +4(3236 3326 3327 3237) +4(3317 3318 3327 3326) +4(3229 3238 3328 3319) +4(3237 3327 3328 3238) +4(3318 3319 3328 3327) +4(3230 3239 3329 3320) +4(3238 3328 3329 3239) +4(3319 3320 3329 3328) +4(3239 3329 3330 3240) +4(3320 3321 3330 3329) +4(3232 3241 3331 3322) +4(2964 2991 3331 3241) +4(2988 3322 3331 2991) +4(3233 3242 3332 3323) +4(3241 3331 3332 3242) +4(3322 3323 3332 3331) +4(3234 3243 3333 3324) +4(3242 3332 3333 3243) +4(3323 3324 3333 3332) +4(3235 3244 3334 3325) +4(3243 3333 3334 3244) +4(3324 3325 3334 3333) +4(3236 3245 3335 3326) +4(3244 3334 3335 3245) +4(3325 3326 3335 3334) +4(3237 3246 3336 3327) +4(3245 3335 3336 3246) +4(3326 3327 3336 3335) +4(3238 3247 3337 3328) +4(3246 3336 3337 3247) +4(3327 3328 3337 3336) +4(3239 3248 3338 3329) +4(3247 3337 3338 3248) +4(3328 3329 3338 3337) +4(3248 3338 3339 3249) +4(3329 3330 3339 3338) +4(3241 3250 3340 3331) +4(2967 2994 3340 3250) +4(2991 3331 3340 2994) +4(3242 3251 3341 3332) +4(3250 3340 3341 3251) +4(3331 3332 3341 3340) +4(3243 3252 3342 3333) +4(3251 3341 3342 3252) +4(3332 3333 3342 3341) +4(3244 3253 3343 3334) +4(3252 3342 3343 3253) +4(3333 3334 3343 3342) +4(3245 3254 3344 3335) +4(3253 3343 3344 3254) +4(3334 3335 3344 3343) +4(3246 3255 3345 3336) +4(3254 3344 3345 3255) +4(3335 3336 3345 3344) +4(3247 3256 3346 3337) +4(3255 3345 3346 3256) +4(3336 3337 3346 3345) +4(3248 3257 3347 3338) +4(3256 3346 3347 3257) +4(3337 3338 3347 3346) +4(3257 3347 3348 3258) +4(3338 3339 3348 3347) +4(3250 3259 3349 3340) +4(2970 2997 3349 3259) +4(2994 3340 3349 2997) +4(3251 3260 3350 3341) +4(3259 3349 3350 3260) +4(3340 3341 3350 3349) +4(3252 3261 3351 3342) +4(3260 3350 3351 3261) +4(3341 3342 3351 3350) +4(3253 3262 3352 3343) +4(3261 3351 3352 3262) +4(3342 3343 3352 3351) +4(3254 3263 3353 3344) +4(3262 3352 3353 3263) +4(3343 3344 3353 3352) +4(3255 3264 3354 3345) +4(3263 3353 3354 3264) +4(3344 3345 3354 3353) +4(3256 3265 3355 3346) +4(3264 3354 3355 3265) +4(3345 3346 3355 3354) +4(3257 3266 3356 3347) +4(3265 3355 3356 3266) +4(3346 3347 3356 3355) +4(3266 3356 3357 3267) +4(3347 3348 3357 3356) +4(3259 3268 3358 3349) +4(2973 3000 3358 3268) +4(2997 3349 3358 3000) +4(3260 3269 3359 3350) +4(3268 3358 3359 3269) +4(3349 3350 3359 3358) +4(3261 3270 3360 3351) +4(3269 3359 3360 3270) +4(3350 3351 3360 3359) +4(3262 3271 3361 3352) +4(3270 3360 3361 3271) +4(3351 3352 3361 3360) +4(3263 3272 3362 3353) +4(3271 3361 3362 3272) +4(3352 3353 3362 3361) +4(3264 3273 3363 3354) +4(3272 3362 3363 3273) +4(3353 3354 3363 3362) +4(3265 3274 3364 3355) +4(3273 3363 3364 3274) +4(3354 3355 3364 3363) +4(3266 3275 3365 3356) +4(3274 3364 3365 3275) +4(3355 3356 3365 3364) +4(3275 3365 3366 3276) +4(3356 3357 3366 3365) +4(3268 3277 3367 3358) +4(2976 3003 3367 3277) +4(3000 3358 3367 3003) +4(3269 3278 3368 3359) +4(3277 3367 3368 3278) +4(3358 3359 3368 3367) +4(3270 3279 3369 3360) +4(3278 3368 3369 3279) +4(3359 3360 3369 3368) +4(3271 3280 3370 3361) +4(3279 3369 3370 3280) +4(3360 3361 3370 3369) +4(3272 3281 3371 3362) +4(3280 3370 3371 3281) +4(3361 3362 3371 3370) +4(3273 3282 3372 3363) +4(3281 3371 3372 3282) +4(3362 3363 3372 3371) +4(3274 3283 3373 3364) +4(3282 3372 3373 3283) +4(3363 3364 3373 3372) +4(3275 3284 3374 3365) +4(3283 3373 3374 3284) +4(3364 3365 3374 3373) +4(3284 3374 3375 3285) +4(3365 3366 3375 3374) +4(3277 3286 3376 3367) +4(3003 3367 3376 3006) +4(2979 3006 3376 3286) +4(3278 3287 3377 3368) +4(3367 3368 3377 3376) +4(3286 3376 3377 3287) +4(3279 3288 3378 3369) +4(3368 3369 3378 3377) +4(3287 3377 3378 3288) +4(3280 3289 3379 3370) +4(3369 3370 3379 3378) +4(3288 3378 3379 3289) +4(3281 3290 3380 3371) +4(3370 3371 3380 3379) +4(3289 3379 3380 3290) +4(3282 3291 3381 3372) +4(3371 3372 3381 3380) +4(3290 3380 3381 3291) +4(3283 3292 3382 3373) +4(3372 3373 3382 3381) +4(3291 3381 3382 3292) +4(3284 3293 3383 3374) +4(3373 3374 3383 3382) +4(3292 3382 3383 3293) +4(3374 3375 3384 3383) +4(3293 3383 3384 3294) +4(3295 3304 3394 3385) +4(2982 3009 3394 3304) +4(627 3385 3394 3009) +4(603 3295 3385 627) +4(3296 3305 3395 3386) +4(3304 3394 3395 3305) +4(3385 3386 3395 3394) +4(3295 3296 3386 3385) +4(3297 3306 3396 3387) +4(3305 3395 3396 3306) +4(3386 3387 3396 3395) +4(3296 3297 3387 3386) +4(3298 3307 3397 3388) +4(3306 3396 3397 3307) +4(3387 3388 3397 3396) +4(3297 3298 3388 3387) +4(3299 3308 3398 3389) +4(3307 3397 3398 3308) +4(3388 3389 3398 3397) +4(3298 3299 3389 3388) +4(3300 3309 3399 3390) +4(3308 3398 3399 3309) +4(3389 3390 3399 3398) +4(3299 3300 3390 3389) +4(3301 3310 3400 3391) +4(3309 3399 3400 3310) +4(3390 3391 3400 3399) +4(3300 3301 3391 3390) +4(3302 3311 3401 3392) +4(3310 3400 3401 3311) +4(3391 3392 3401 3400) +4(3301 3302 3392 3391) +4(3311 3401 3402 3312) +4(3392 3393 3402 3401) +4(3302 3303 3393 3392) +4(3304 3313 3403 3394) +4(2985 3012 3403 3313) +4(3009 3394 3403 3012) +4(3305 3314 3404 3395) +4(3313 3403 3404 3314) +4(3394 3395 3404 3403) +4(3306 3315 3405 3396) +4(3314 3404 3405 3315) +4(3395 3396 3405 3404) +4(3307 3316 3406 3397) +4(3315 3405 3406 3316) +4(3396 3397 3406 3405) +4(3308 3317 3407 3398) +4(3316 3406 3407 3317) +4(3397 3398 3407 3406) +4(3309 3318 3408 3399) +4(3317 3407 3408 3318) +4(3398 3399 3408 3407) +4(3310 3319 3409 3400) +4(3318 3408 3409 3319) +4(3399 3400 3409 3408) +4(3311 3320 3410 3401) +4(3319 3409 3410 3320) +4(3400 3401 3410 3409) +4(3320 3410 3411 3321) +4(3401 3402 3411 3410) +4(3313 3322 3412 3403) +4(2988 3015 3412 3322) +4(3012 3403 3412 3015) +4(3314 3323 3413 3404) +4(3322 3412 3413 3323) +4(3403 3404 3413 3412) +4(3315 3324 3414 3405) +4(3323 3413 3414 3324) +4(3404 3405 3414 3413) +4(3316 3325 3415 3406) +4(3324 3414 3415 3325) +4(3405 3406 3415 3414) +4(3317 3326 3416 3407) +4(3325 3415 3416 3326) +4(3406 3407 3416 3415) +4(3318 3327 3417 3408) +4(3326 3416 3417 3327) +4(3407 3408 3417 3416) +4(3319 3328 3418 3409) +4(3327 3417 3418 3328) +4(3408 3409 3418 3417) +4(3320 3329 3419 3410) +4(3328 3418 3419 3329) +4(3409 3410 3419 3418) +4(3329 3419 3420 3330) +4(3410 3411 3420 3419) +4(3322 3331 3421 3412) +4(2991 3018 3421 3331) +4(3015 3412 3421 3018) +4(3323 3332 3422 3413) +4(3331 3421 3422 3332) +4(3412 3413 3422 3421) +4(3324 3333 3423 3414) +4(3332 3422 3423 3333) +4(3413 3414 3423 3422) +4(3325 3334 3424 3415) +4(3333 3423 3424 3334) +4(3414 3415 3424 3423) +4(3326 3335 3425 3416) +4(3334 3424 3425 3335) +4(3415 3416 3425 3424) +4(3327 3336 3426 3417) +4(3335 3425 3426 3336) +4(3416 3417 3426 3425) +4(3328 3337 3427 3418) +4(3336 3426 3427 3337) +4(3417 3418 3427 3426) +4(3329 3338 3428 3419) +4(3337 3427 3428 3338) +4(3418 3419 3428 3427) +4(3338 3428 3429 3339) +4(3419 3420 3429 3428) +4(3331 3340 3430 3421) +4(2994 3021 3430 3340) +4(3018 3421 3430 3021) +4(3332 3341 3431 3422) +4(3340 3430 3431 3341) +4(3421 3422 3431 3430) +4(3333 3342 3432 3423) +4(3341 3431 3432 3342) +4(3422 3423 3432 3431) +4(3334 3343 3433 3424) +4(3342 3432 3433 3343) +4(3423 3424 3433 3432) +4(3335 3344 3434 3425) +4(3343 3433 3434 3344) +4(3424 3425 3434 3433) +4(3336 3345 3435 3426) +4(3344 3434 3435 3345) +4(3425 3426 3435 3434) +4(3337 3346 3436 3427) +4(3345 3435 3436 3346) +4(3426 3427 3436 3435) +4(3338 3347 3437 3428) +4(3346 3436 3437 3347) +4(3427 3428 3437 3436) +4(3347 3437 3438 3348) +4(3428 3429 3438 3437) +4(3340 3349 3439 3430) +4(2997 3024 3439 3349) +4(3021 3430 3439 3024) +4(3341 3350 3440 3431) +4(3349 3439 3440 3350) +4(3430 3431 3440 3439) +4(3342 3351 3441 3432) +4(3350 3440 3441 3351) +4(3431 3432 3441 3440) +4(3343 3352 3442 3433) +4(3351 3441 3442 3352) +4(3432 3433 3442 3441) +4(3344 3353 3443 3434) +4(3352 3442 3443 3353) +4(3433 3434 3443 3442) +4(3345 3354 3444 3435) +4(3353 3443 3444 3354) +4(3434 3435 3444 3443) +4(3346 3355 3445 3436) +4(3354 3444 3445 3355) +4(3435 3436 3445 3444) +4(3347 3356 3446 3437) +4(3355 3445 3446 3356) +4(3436 3437 3446 3445) +4(3356 3446 3447 3357) +4(3437 3438 3447 3446) +4(3349 3358 3448 3439) +4(3000 3027 3448 3358) +4(3024 3439 3448 3027) +4(3350 3359 3449 3440) +4(3358 3448 3449 3359) +4(3439 3440 3449 3448) +4(3351 3360 3450 3441) +4(3359 3449 3450 3360) +4(3440 3441 3450 3449) +4(3352 3361 3451 3442) +4(3360 3450 3451 3361) +4(3441 3442 3451 3450) +4(3353 3362 3452 3443) +4(3361 3451 3452 3362) +4(3442 3443 3452 3451) +4(3354 3363 3453 3444) +4(3362 3452 3453 3363) +4(3443 3444 3453 3452) +4(3355 3364 3454 3445) +4(3363 3453 3454 3364) +4(3444 3445 3454 3453) +4(3356 3365 3455 3446) +4(3364 3454 3455 3365) +4(3445 3446 3455 3454) +4(3365 3455 3456 3366) +4(3446 3447 3456 3455) +4(3358 3367 3457 3448) +4(3003 3030 3457 3367) +4(3027 3448 3457 3030) +4(3359 3368 3458 3449) +4(3367 3457 3458 3368) +4(3448 3449 3458 3457) +4(3360 3369 3459 3450) +4(3368 3458 3459 3369) +4(3449 3450 3459 3458) +4(3361 3370 3460 3451) +4(3369 3459 3460 3370) +4(3450 3451 3460 3459) +4(3362 3371 3461 3452) +4(3370 3460 3461 3371) +4(3451 3452 3461 3460) +4(3363 3372 3462 3453) +4(3371 3461 3462 3372) +4(3452 3453 3462 3461) +4(3364 3373 3463 3454) +4(3372 3462 3463 3373) +4(3453 3454 3463 3462) +4(3365 3374 3464 3455) +4(3373 3463 3464 3374) +4(3454 3455 3464 3463) +4(3374 3464 3465 3375) +4(3455 3456 3465 3464) +4(3367 3376 3466 3457) +4(3030 3457 3466 3033) +4(3006 3033 3466 3376) +4(3368 3377 3467 3458) +4(3457 3458 3467 3466) +4(3376 3466 3467 3377) +4(3369 3378 3468 3459) +4(3458 3459 3468 3467) +4(3377 3467 3468 3378) +4(3370 3379 3469 3460) +4(3459 3460 3469 3468) +4(3378 3468 3469 3379) +4(3371 3380 3470 3461) +4(3460 3461 3470 3469) +4(3379 3469 3470 3380) +4(3372 3381 3471 3462) +4(3461 3462 3471 3470) +4(3380 3470 3471 3381) +4(3373 3382 3472 3463) +4(3462 3463 3472 3471) +4(3381 3471 3472 3382) +4(3374 3383 3473 3464) +4(3463 3464 3473 3472) +4(3382 3472 3473 3383) +4(3464 3465 3474 3473) +4(3383 3473 3474 3384) +4(3385 3394 3484 3475) +4(3009 3036 3484 3394) +4(651 3475 3484 3036) +4(627 3385 3475 651) +4(3386 3395 3485 3476) +4(3394 3484 3485 3395) +4(3475 3476 3485 3484) +4(3385 3386 3476 3475) +4(3387 3396 3486 3477) +4(3395 3485 3486 3396) +4(3476 3477 3486 3485) +4(3386 3387 3477 3476) +4(3388 3397 3487 3478) +4(3396 3486 3487 3397) +4(3477 3478 3487 3486) +4(3387 3388 3478 3477) +4(3389 3398 3488 3479) +4(3397 3487 3488 3398) +4(3478 3479 3488 3487) +4(3388 3389 3479 3478) +4(3390 3399 3489 3480) +4(3398 3488 3489 3399) +4(3479 3480 3489 3488) +4(3389 3390 3480 3479) +4(3391 3400 3490 3481) +4(3399 3489 3490 3400) +4(3480 3481 3490 3489) +4(3390 3391 3481 3480) +4(3392 3401 3491 3482) +4(3400 3490 3491 3401) +4(3481 3482 3491 3490) +4(3391 3392 3482 3481) +4(3401 3491 3492 3402) +4(3482 3483 3492 3491) +4(3392 3393 3483 3482) +4(3394 3403 3493 3484) +4(3012 3039 3493 3403) +4(3036 3484 3493 3039) +4(3395 3404 3494 3485) +4(3403 3493 3494 3404) +4(3484 3485 3494 3493) +4(3396 3405 3495 3486) +4(3404 3494 3495 3405) +4(3485 3486 3495 3494) +4(3397 3406 3496 3487) +4(3405 3495 3496 3406) +4(3486 3487 3496 3495) +4(3398 3407 3497 3488) +4(3406 3496 3497 3407) +4(3487 3488 3497 3496) +4(3399 3408 3498 3489) +4(3407 3497 3498 3408) +4(3488 3489 3498 3497) +4(3400 3409 3499 3490) +4(3408 3498 3499 3409) +4(3489 3490 3499 3498) +4(3401 3410 3500 3491) +4(3409 3499 3500 3410) +4(3490 3491 3500 3499) +4(3410 3500 3501 3411) +4(3491 3492 3501 3500) +4(3403 3412 3502 3493) +4(3015 3042 3502 3412) +4(3039 3493 3502 3042) +4(3404 3413 3503 3494) +4(3412 3502 3503 3413) +4(3493 3494 3503 3502) +4(3405 3414 3504 3495) +4(3413 3503 3504 3414) +4(3494 3495 3504 3503) +4(3406 3415 3505 3496) +4(3414 3504 3505 3415) +4(3495 3496 3505 3504) +4(3407 3416 3506 3497) +4(3415 3505 3506 3416) +4(3496 3497 3506 3505) +4(3408 3417 3507 3498) +4(3416 3506 3507 3417) +4(3497 3498 3507 3506) +4(3409 3418 3508 3499) +4(3417 3507 3508 3418) +4(3498 3499 3508 3507) +4(3410 3419 3509 3500) +4(3418 3508 3509 3419) +4(3499 3500 3509 3508) +4(3419 3509 3510 3420) +4(3500 3501 3510 3509) +4(3412 3421 3511 3502) +4(3018 3045 3511 3421) +4(3042 3502 3511 3045) +4(3413 3422 3512 3503) +4(3421 3511 3512 3422) +4(3502 3503 3512 3511) +4(3414 3423 3513 3504) +4(3422 3512 3513 3423) +4(3503 3504 3513 3512) +4(3415 3424 3514 3505) +4(3423 3513 3514 3424) +4(3504 3505 3514 3513) +4(3416 3425 3515 3506) +4(3424 3514 3515 3425) +4(3505 3506 3515 3514) +4(3417 3426 3516 3507) +4(3425 3515 3516 3426) +4(3506 3507 3516 3515) +4(3418 3427 3517 3508) +4(3426 3516 3517 3427) +4(3507 3508 3517 3516) +4(3419 3428 3518 3509) +4(3427 3517 3518 3428) +4(3508 3509 3518 3517) +4(3428 3518 3519 3429) +4(3509 3510 3519 3518) +4(3421 3430 3520 3511) +4(3021 3048 3520 3430) +4(3045 3511 3520 3048) +4(3422 3431 3521 3512) +4(3430 3520 3521 3431) +4(3511 3512 3521 3520) +4(3423 3432 3522 3513) +4(3431 3521 3522 3432) +4(3512 3513 3522 3521) +4(3424 3433 3523 3514) +4(3432 3522 3523 3433) +4(3513 3514 3523 3522) +4(3425 3434 3524 3515) +4(3433 3523 3524 3434) +4(3514 3515 3524 3523) +4(3426 3435 3525 3516) +4(3434 3524 3525 3435) +4(3515 3516 3525 3524) +4(3427 3436 3526 3517) +4(3435 3525 3526 3436) +4(3516 3517 3526 3525) +4(3428 3437 3527 3518) +4(3436 3526 3527 3437) +4(3517 3518 3527 3526) +4(3437 3527 3528 3438) +4(3518 3519 3528 3527) +4(3430 3439 3529 3520) +4(3024 3051 3529 3439) +4(3048 3520 3529 3051) +4(3431 3440 3530 3521) +4(3439 3529 3530 3440) +4(3520 3521 3530 3529) +4(3432 3441 3531 3522) +4(3440 3530 3531 3441) +4(3521 3522 3531 3530) +4(3433 3442 3532 3523) +4(3441 3531 3532 3442) +4(3522 3523 3532 3531) +4(3434 3443 3533 3524) +4(3442 3532 3533 3443) +4(3523 3524 3533 3532) +4(3435 3444 3534 3525) +4(3443 3533 3534 3444) +4(3524 3525 3534 3533) +4(3436 3445 3535 3526) +4(3444 3534 3535 3445) +4(3525 3526 3535 3534) +4(3437 3446 3536 3527) +4(3445 3535 3536 3446) +4(3526 3527 3536 3535) +4(3446 3536 3537 3447) +4(3527 3528 3537 3536) +4(3439 3448 3538 3529) +4(3027 3054 3538 3448) +4(3051 3529 3538 3054) +4(3440 3449 3539 3530) +4(3448 3538 3539 3449) +4(3529 3530 3539 3538) +4(3441 3450 3540 3531) +4(3449 3539 3540 3450) +4(3530 3531 3540 3539) +4(3442 3451 3541 3532) +4(3450 3540 3541 3451) +4(3531 3532 3541 3540) +4(3443 3452 3542 3533) +4(3451 3541 3542 3452) +4(3532 3533 3542 3541) +4(3444 3453 3543 3534) +4(3452 3542 3543 3453) +4(3533 3534 3543 3542) +4(3445 3454 3544 3535) +4(3453 3543 3544 3454) +4(3534 3535 3544 3543) +4(3446 3455 3545 3536) +4(3454 3544 3545 3455) +4(3535 3536 3545 3544) +4(3455 3545 3546 3456) +4(3536 3537 3546 3545) +4(3448 3457 3547 3538) +4(3030 3057 3547 3457) +4(3054 3538 3547 3057) +4(3449 3458 3548 3539) +4(3457 3547 3548 3458) +4(3538 3539 3548 3547) +4(3450 3459 3549 3540) +4(3458 3548 3549 3459) +4(3539 3540 3549 3548) +4(3451 3460 3550 3541) +4(3459 3549 3550 3460) +4(3540 3541 3550 3549) +4(3452 3461 3551 3542) +4(3460 3550 3551 3461) +4(3541 3542 3551 3550) +4(3453 3462 3552 3543) +4(3461 3551 3552 3462) +4(3542 3543 3552 3551) +4(3454 3463 3553 3544) +4(3462 3552 3553 3463) +4(3543 3544 3553 3552) +4(3455 3464 3554 3545) +4(3463 3553 3554 3464) +4(3544 3545 3554 3553) +4(3464 3554 3555 3465) +4(3545 3546 3555 3554) +4(3457 3466 3556 3547) +4(3057 3547 3556 3060) +4(3033 3060 3556 3466) +4(3458 3467 3557 3548) +4(3547 3548 3557 3556) +4(3466 3556 3557 3467) +4(3459 3468 3558 3549) +4(3548 3549 3558 3557) +4(3467 3557 3558 3468) +4(3460 3469 3559 3550) +4(3549 3550 3559 3558) +4(3468 3558 3559 3469) +4(3461 3470 3560 3551) +4(3550 3551 3560 3559) +4(3469 3559 3560 3470) +4(3462 3471 3561 3552) +4(3551 3552 3561 3560) +4(3470 3560 3561 3471) +4(3463 3472 3562 3553) +4(3552 3553 3562 3561) +4(3471 3561 3562 3472) +4(3464 3473 3563 3554) +4(3553 3554 3563 3562) +4(3472 3562 3563 3473) +4(3554 3555 3564 3563) +4(3473 3563 3564 3474) +4(3475 3484 3574 3565) +4(3036 3063 3574 3484) +4(675 3565 3574 3063) +4(651 3475 3565 675) +4(3476 3485 3575 3566) +4(3484 3574 3575 3485) +4(3565 3566 3575 3574) +4(3475 3476 3566 3565) +4(3477 3486 3576 3567) +4(3485 3575 3576 3486) +4(3566 3567 3576 3575) +4(3476 3477 3567 3566) +4(3478 3487 3577 3568) +4(3486 3576 3577 3487) +4(3567 3568 3577 3576) +4(3477 3478 3568 3567) +4(3479 3488 3578 3569) +4(3487 3577 3578 3488) +4(3568 3569 3578 3577) +4(3478 3479 3569 3568) +4(3480 3489 3579 3570) +4(3488 3578 3579 3489) +4(3569 3570 3579 3578) +4(3479 3480 3570 3569) +4(3481 3490 3580 3571) +4(3489 3579 3580 3490) +4(3570 3571 3580 3579) +4(3480 3481 3571 3570) +4(3482 3491 3581 3572) +4(3490 3580 3581 3491) +4(3571 3572 3581 3580) +4(3481 3482 3572 3571) +4(3491 3581 3582 3492) +4(3572 3573 3582 3581) +4(3482 3483 3573 3572) +4(3484 3493 3583 3574) +4(3039 3066 3583 3493) +4(3063 3574 3583 3066) +4(3485 3494 3584 3575) +4(3493 3583 3584 3494) +4(3574 3575 3584 3583) +4(3486 3495 3585 3576) +4(3494 3584 3585 3495) +4(3575 3576 3585 3584) +4(3487 3496 3586 3577) +4(3495 3585 3586 3496) +4(3576 3577 3586 3585) +4(3488 3497 3587 3578) +4(3496 3586 3587 3497) +4(3577 3578 3587 3586) +4(3489 3498 3588 3579) +4(3497 3587 3588 3498) +4(3578 3579 3588 3587) +4(3490 3499 3589 3580) +4(3498 3588 3589 3499) +4(3579 3580 3589 3588) +4(3491 3500 3590 3581) +4(3499 3589 3590 3500) +4(3580 3581 3590 3589) +4(3500 3590 3591 3501) +4(3581 3582 3591 3590) +4(3493 3502 3592 3583) +4(3042 3069 3592 3502) +4(3066 3583 3592 3069) +4(3494 3503 3593 3584) +4(3502 3592 3593 3503) +4(3583 3584 3593 3592) +4(3495 3504 3594 3585) +4(3503 3593 3594 3504) +4(3584 3585 3594 3593) +4(3496 3505 3595 3586) +4(3504 3594 3595 3505) +4(3585 3586 3595 3594) +4(3497 3506 3596 3587) +4(3505 3595 3596 3506) +4(3586 3587 3596 3595) +4(3498 3507 3597 3588) +4(3506 3596 3597 3507) +4(3587 3588 3597 3596) +4(3499 3508 3598 3589) +4(3507 3597 3598 3508) +4(3588 3589 3598 3597) +4(3500 3509 3599 3590) +4(3508 3598 3599 3509) +4(3589 3590 3599 3598) +4(3509 3599 3600 3510) +4(3590 3591 3600 3599) +4(3502 3511 3601 3592) +4(3045 3072 3601 3511) +4(3069 3592 3601 3072) +4(3503 3512 3602 3593) +4(3511 3601 3602 3512) +4(3592 3593 3602 3601) +4(3504 3513 3603 3594) +4(3512 3602 3603 3513) +4(3593 3594 3603 3602) +4(3505 3514 3604 3595) +4(3513 3603 3604 3514) +4(3594 3595 3604 3603) +4(3506 3515 3605 3596) +4(3514 3604 3605 3515) +4(3595 3596 3605 3604) +4(3507 3516 3606 3597) +4(3515 3605 3606 3516) +4(3596 3597 3606 3605) +4(3508 3517 3607 3598) +4(3516 3606 3607 3517) +4(3597 3598 3607 3606) +4(3509 3518 3608 3599) +4(3517 3607 3608 3518) +4(3598 3599 3608 3607) +4(3518 3608 3609 3519) +4(3599 3600 3609 3608) +4(3511 3520 3610 3601) +4(3048 3075 3610 3520) +4(3072 3601 3610 3075) +4(3512 3521 3611 3602) +4(3520 3610 3611 3521) +4(3601 3602 3611 3610) +4(3513 3522 3612 3603) +4(3521 3611 3612 3522) +4(3602 3603 3612 3611) +4(3514 3523 3613 3604) +4(3522 3612 3613 3523) +4(3603 3604 3613 3612) +4(3515 3524 3614 3605) +4(3523 3613 3614 3524) +4(3604 3605 3614 3613) +4(3516 3525 3615 3606) +4(3524 3614 3615 3525) +4(3605 3606 3615 3614) +4(3517 3526 3616 3607) +4(3525 3615 3616 3526) +4(3606 3607 3616 3615) +4(3518 3527 3617 3608) +4(3526 3616 3617 3527) +4(3607 3608 3617 3616) +4(3527 3617 3618 3528) +4(3608 3609 3618 3617) +4(3520 3529 3619 3610) +4(3051 3078 3619 3529) +4(3075 3610 3619 3078) +4(3521 3530 3620 3611) +4(3529 3619 3620 3530) +4(3610 3611 3620 3619) +4(3522 3531 3621 3612) +4(3530 3620 3621 3531) +4(3611 3612 3621 3620) +4(3523 3532 3622 3613) +4(3531 3621 3622 3532) +4(3612 3613 3622 3621) +4(3524 3533 3623 3614) +4(3532 3622 3623 3533) +4(3613 3614 3623 3622) +4(3525 3534 3624 3615) +4(3533 3623 3624 3534) +4(3614 3615 3624 3623) +4(3526 3535 3625 3616) +4(3534 3624 3625 3535) +4(3615 3616 3625 3624) +4(3527 3536 3626 3617) +4(3535 3625 3626 3536) +4(3616 3617 3626 3625) +4(3536 3626 3627 3537) +4(3617 3618 3627 3626) +4(3529 3538 3628 3619) +4(3054 3081 3628 3538) +4(3078 3619 3628 3081) +4(3530 3539 3629 3620) +4(3538 3628 3629 3539) +4(3619 3620 3629 3628) +4(3531 3540 3630 3621) +4(3539 3629 3630 3540) +4(3620 3621 3630 3629) +4(3532 3541 3631 3622) +4(3540 3630 3631 3541) +4(3621 3622 3631 3630) +4(3533 3542 3632 3623) +4(3541 3631 3632 3542) +4(3622 3623 3632 3631) +4(3534 3543 3633 3624) +4(3542 3632 3633 3543) +4(3623 3624 3633 3632) +4(3535 3544 3634 3625) +4(3543 3633 3634 3544) +4(3624 3625 3634 3633) +4(3536 3545 3635 3626) +4(3544 3634 3635 3545) +4(3625 3626 3635 3634) +4(3545 3635 3636 3546) +4(3626 3627 3636 3635) +4(3538 3547 3637 3628) +4(3057 3084 3637 3547) +4(3081 3628 3637 3084) +4(3539 3548 3638 3629) +4(3547 3637 3638 3548) +4(3628 3629 3638 3637) +4(3540 3549 3639 3630) +4(3548 3638 3639 3549) +4(3629 3630 3639 3638) +4(3541 3550 3640 3631) +4(3549 3639 3640 3550) +4(3630 3631 3640 3639) +4(3542 3551 3641 3632) +4(3550 3640 3641 3551) +4(3631 3632 3641 3640) +4(3543 3552 3642 3633) +4(3551 3641 3642 3552) +4(3632 3633 3642 3641) +4(3544 3553 3643 3634) +4(3552 3642 3643 3553) +4(3633 3634 3643 3642) +4(3545 3554 3644 3635) +4(3553 3643 3644 3554) +4(3634 3635 3644 3643) +4(3554 3644 3645 3555) +4(3635 3636 3645 3644) +4(3547 3556 3646 3637) +4(3084 3637 3646 3087) +4(3060 3087 3646 3556) +4(3548 3557 3647 3638) +4(3637 3638 3647 3646) +4(3556 3646 3647 3557) +4(3549 3558 3648 3639) +4(3638 3639 3648 3647) +4(3557 3647 3648 3558) +4(3550 3559 3649 3640) +4(3639 3640 3649 3648) +4(3558 3648 3649 3559) +4(3551 3560 3650 3641) +4(3640 3641 3650 3649) +4(3559 3649 3650 3560) +4(3552 3561 3651 3642) +4(3641 3642 3651 3650) +4(3560 3650 3651 3561) +4(3553 3562 3652 3643) +4(3642 3643 3652 3651) +4(3561 3651 3652 3562) +4(3554 3563 3653 3644) +4(3643 3644 3653 3652) +4(3562 3652 3653 3563) +4(3644 3645 3654 3653) +4(3563 3653 3654 3564) +4(3565 3574 3664 3655) +4(3063 3090 3664 3574) +4(675 3565 3655 699) +4(3566 3575 3665 3656) +4(3574 3664 3665 3575) +4(3565 3566 3656 3655) +4(3567 3576 3666 3657) +4(3575 3665 3666 3576) +4(3566 3567 3657 3656) +4(3568 3577 3667 3658) +4(3576 3666 3667 3577) +4(3567 3568 3658 3657) +4(3569 3578 3668 3659) +4(3577 3667 3668 3578) +4(3568 3569 3659 3658) +4(3570 3579 3669 3660) +4(3578 3668 3669 3579) +4(3569 3570 3660 3659) +4(3571 3580 3670 3661) +4(3579 3669 3670 3580) +4(3570 3571 3661 3660) +4(3572 3581 3671 3662) +4(3580 3670 3671 3581) +4(3571 3572 3662 3661) +4(3581 3671 3672 3582) +4(3572 3573 3663 3662) +4(3574 3583 3673 3664) +4(3066 3093 3673 3583) +4(3575 3584 3674 3665) +4(3583 3673 3674 3584) +4(3576 3585 3675 3666) +4(3584 3674 3675 3585) +4(3577 3586 3676 3667) +4(3585 3675 3676 3586) +4(3578 3587 3677 3668) +4(3586 3676 3677 3587) +4(3579 3588 3678 3669) +4(3587 3677 3678 3588) +4(3580 3589 3679 3670) +4(3588 3678 3679 3589) +4(3581 3590 3680 3671) +4(3589 3679 3680 3590) +4(3590 3680 3681 3591) +4(3583 3592 3682 3673) +4(3069 3096 3682 3592) +4(3584 3593 3683 3674) +4(3592 3682 3683 3593) +4(3585 3594 3684 3675) +4(3593 3683 3684 3594) +4(3586 3595 3685 3676) +4(3594 3684 3685 3595) +4(3587 3596 3686 3677) +4(3595 3685 3686 3596) +4(3588 3597 3687 3678) +4(3596 3686 3687 3597) +4(3589 3598 3688 3679) +4(3597 3687 3688 3598) +4(3590 3599 3689 3680) +4(3598 3688 3689 3599) +4(3599 3689 3690 3600) +4(3592 3601 3691 3682) +4(3072 3099 3691 3601) +4(3593 3602 3692 3683) +4(3601 3691 3692 3602) +4(3594 3603 3693 3684) +4(3602 3692 3693 3603) +4(3595 3604 3694 3685) +4(3603 3693 3694 3604) +4(3596 3605 3695 3686) +4(3604 3694 3695 3605) +4(3597 3606 3696 3687) +4(3605 3695 3696 3606) +4(3598 3607 3697 3688) +4(3606 3696 3697 3607) +4(3599 3608 3698 3689) +4(3607 3697 3698 3608) +4(3608 3698 3699 3609) +4(3601 3610 3700 3691) +4(3075 3102 3700 3610) +4(3602 3611 3701 3692) +4(3610 3700 3701 3611) +4(3603 3612 3702 3693) +4(3611 3701 3702 3612) +4(3604 3613 3703 3694) +4(3612 3702 3703 3613) +4(3605 3614 3704 3695) +4(3613 3703 3704 3614) +4(3606 3615 3705 3696) +4(3614 3704 3705 3615) +4(3607 3616 3706 3697) +4(3615 3705 3706 3616) +4(3608 3617 3707 3698) +4(3616 3706 3707 3617) +4(3617 3707 3708 3618) +4(3610 3619 3709 3700) +4(3078 3105 3709 3619) +4(3611 3620 3710 3701) +4(3619 3709 3710 3620) +4(3612 3621 3711 3702) +4(3620 3710 3711 3621) +4(3613 3622 3712 3703) +4(3621 3711 3712 3622) +4(3614 3623 3713 3704) +4(3622 3712 3713 3623) +4(3615 3624 3714 3705) +4(3623 3713 3714 3624) +4(3616 3625 3715 3706) +4(3624 3714 3715 3625) +4(3617 3626 3716 3707) +4(3625 3715 3716 3626) +4(3626 3716 3717 3627) +4(3619 3628 3718 3709) +4(3081 3108 3718 3628) +4(3620 3629 3719 3710) +4(3628 3718 3719 3629) +4(3621 3630 3720 3711) +4(3629 3719 3720 3630) +4(3622 3631 3721 3712) +4(3630 3720 3721 3631) +4(3623 3632 3722 3713) +4(3631 3721 3722 3632) +4(3624 3633 3723 3714) +4(3632 3722 3723 3633) +4(3625 3634 3724 3715) +4(3633 3723 3724 3634) +4(3626 3635 3725 3716) +4(3634 3724 3725 3635) +4(3635 3725 3726 3636) +4(3628 3637 3727 3718) +4(3084 3111 3727 3637) +4(3629 3638 3728 3719) +4(3637 3727 3728 3638) +4(3630 3639 3729 3720) +4(3638 3728 3729 3639) +4(3631 3640 3730 3721) +4(3639 3729 3730 3640) +4(3632 3641 3731 3722) +4(3640 3730 3731 3641) +4(3633 3642 3732 3723) +4(3641 3731 3732 3642) +4(3634 3643 3733 3724) +4(3642 3732 3733 3643) +4(3635 3644 3734 3725) +4(3643 3733 3734 3644) +4(3644 3734 3735 3645) +4(3637 3646 3736 3727) +4(3087 3114 3736 3646) +4(3638 3647 3737 3728) +4(3646 3736 3737 3647) +4(3639 3648 3738 3729) +4(3647 3737 3738 3648) +4(3640 3649 3739 3730) +4(3648 3738 3739 3649) +4(3641 3650 3740 3731) +4(3649 3739 3740 3650) +4(3642 3651 3741 3732) +4(3650 3740 3741 3651) +4(3643 3652 3742 3733) +4(3651 3741 3742 3652) +4(3644 3653 3743 3734) +4(3652 3742 3743 3653) +4(3653 3743 3744 3654) +4(3196 3746 3776 3286) +4(3745 3775 3776 3746) +4(2979 3286 3776 3775) +4(2952 2979 3775 3745) +4(3197 3747 3777 3287) +4(3746 3776 3777 3747) +4(3286 3287 3777 3776) +4(3198 3748 3778 3288) +4(3747 3777 3778 3748) +4(3287 3288 3778 3777) +4(3199 3749 3779 3289) +4(3748 3778 3779 3749) +4(3288 3289 3779 3778) +4(3200 3750 3780 3290) +4(3749 3779 3780 3750) +4(3289 3290 3780 3779) +4(3201 3751 3781 3291) +4(3750 3780 3781 3751) +4(3290 3291 3781 3780) +4(3202 3752 3782 3292) +4(3751 3781 3782 3752) +4(3291 3292 3782 3781) +4(3203 3753 3783 3293) +4(3752 3782 3783 3753) +4(3292 3293 3783 3782) +4(3753 3783 3784 3754) +4(3293 3294 3784 3783) +4(3746 3756 3786 3776) +4(3755 3785 3786 3756) +4(3775 3776 3786 3785) +4(3745 3775 3785 3755) +4(3747 3757 3787 3777) +4(3756 3786 3787 3757) +4(3776 3777 3787 3786) +4(3748 3758 3788 3778) +4(3757 3787 3788 3758) +4(3777 3778 3788 3787) +4(3749 3759 3789 3779) +4(3758 3788 3789 3759) +4(3778 3779 3789 3788) +4(3750 3760 3790 3780) +4(3759 3789 3790 3760) +4(3779 3780 3790 3789) +4(3751 3761 3791 3781) +4(3760 3790 3791 3761) +4(3780 3781 3791 3790) +4(3752 3762 3792 3782) +4(3761 3791 3792 3762) +4(3781 3782 3792 3791) +4(3753 3763 3793 3783) +4(3762 3792 3793 3763) +4(3782 3783 3793 3792) +4(3763 3793 3794 3764) +4(3783 3784 3794 3793) +4(3756 3766 3796 3786) +4(3785 3786 3796 3795) +4(3755 3785 3795 3765) +4(3765 3795 3796 3766) +4(3757 3767 3797 3787) +4(3786 3787 3797 3796) +4(3766 3796 3797 3767) +4(3758 3768 3798 3788) +4(3787 3788 3798 3797) +4(3767 3797 3798 3768) +4(3759 3769 3799 3789) +4(3788 3789 3799 3798) +4(3768 3798 3799 3769) +4(3760 3770 3800 3790) +4(3789 3790 3800 3799) +4(3769 3799 3800 3770) +4(3761 3771 3801 3791) +4(3790 3791 3801 3800) +4(3770 3800 3801 3771) +4(3762 3772 3802 3792) +4(3791 3792 3802 3801) +4(3771 3801 3802 3772) +4(3763 3773 3803 3793) +4(3792 3793 3803 3802) +4(3772 3802 3803 3773) +4(3793 3794 3804 3803) +4(3773 3803 3804 3774) +4(3286 3776 3806 3376) +4(3775 3805 3806 3776) +4(3006 3376 3806 3805) +4(2979 3006 3805 3775) +4(3287 3777 3807 3377) +4(3776 3806 3807 3777) +4(3376 3377 3807 3806) +4(3288 3778 3808 3378) +4(3777 3807 3808 3778) +4(3377 3378 3808 3807) +4(3289 3779 3809 3379) +4(3778 3808 3809 3779) +4(3378 3379 3809 3808) +4(3290 3780 3810 3380) +4(3779 3809 3810 3780) +4(3379 3380 3810 3809) +4(3291 3781 3811 3381) +4(3780 3810 3811 3781) +4(3380 3381 3811 3810) +4(3292 3782 3812 3382) +4(3781 3811 3812 3782) +4(3381 3382 3812 3811) +4(3293 3783 3813 3383) +4(3782 3812 3813 3783) +4(3382 3383 3813 3812) +4(3783 3813 3814 3784) +4(3383 3384 3814 3813) +4(3776 3786 3816 3806) +4(3785 3815 3816 3786) +4(3805 3806 3816 3815) +4(3775 3805 3815 3785) +4(3777 3787 3817 3807) +4(3786 3816 3817 3787) +4(3806 3807 3817 3816) +4(3778 3788 3818 3808) +4(3787 3817 3818 3788) +4(3807 3808 3818 3817) +4(3779 3789 3819 3809) +4(3788 3818 3819 3789) +4(3808 3809 3819 3818) +4(3780 3790 3820 3810) +4(3789 3819 3820 3790) +4(3809 3810 3820 3819) +4(3781 3791 3821 3811) +4(3790 3820 3821 3791) +4(3810 3811 3821 3820) +4(3782 3792 3822 3812) +4(3791 3821 3822 3792) +4(3811 3812 3822 3821) +4(3783 3793 3823 3813) +4(3792 3822 3823 3793) +4(3812 3813 3823 3822) +4(3793 3823 3824 3794) +4(3813 3814 3824 3823) +4(3786 3796 3826 3816) +4(3815 3816 3826 3825) +4(3785 3815 3825 3795) +4(3795 3825 3826 3796) +4(3787 3797 3827 3817) +4(3816 3817 3827 3826) +4(3796 3826 3827 3797) +4(3788 3798 3828 3818) +4(3817 3818 3828 3827) +4(3797 3827 3828 3798) +4(3789 3799 3829 3819) +4(3818 3819 3829 3828) +4(3798 3828 3829 3799) +4(3790 3800 3830 3820) +4(3819 3820 3830 3829) +4(3799 3829 3830 3800) +4(3791 3801 3831 3821) +4(3820 3821 3831 3830) +4(3800 3830 3831 3801) +4(3792 3802 3832 3822) +4(3821 3822 3832 3831) +4(3801 3831 3832 3802) +4(3793 3803 3833 3823) +4(3822 3823 3833 3832) +4(3802 3832 3833 3803) +4(3823 3824 3834 3833) +4(3803 3833 3834 3804) +4(3376 3806 3836 3466) +4(3805 3835 3836 3806) +4(3033 3466 3836 3835) +4(3006 3033 3835 3805) +4(3377 3807 3837 3467) +4(3806 3836 3837 3807) +4(3466 3467 3837 3836) +4(3378 3808 3838 3468) +4(3807 3837 3838 3808) +4(3467 3468 3838 3837) +4(3379 3809 3839 3469) +4(3808 3838 3839 3809) +4(3468 3469 3839 3838) +4(3380 3810 3840 3470) +4(3809 3839 3840 3810) +4(3469 3470 3840 3839) +4(3381 3811 3841 3471) +4(3810 3840 3841 3811) +4(3470 3471 3841 3840) +4(3382 3812 3842 3472) +4(3811 3841 3842 3812) +4(3471 3472 3842 3841) +4(3383 3813 3843 3473) +4(3812 3842 3843 3813) +4(3472 3473 3843 3842) +4(3813 3843 3844 3814) +4(3473 3474 3844 3843) +4(3806 3816 3846 3836) +4(3815 3845 3846 3816) +4(3835 3836 3846 3845) +4(3805 3835 3845 3815) +4(3807 3817 3847 3837) +4(3816 3846 3847 3817) +4(3836 3837 3847 3846) +4(3808 3818 3848 3838) +4(3817 3847 3848 3818) +4(3837 3838 3848 3847) +4(3809 3819 3849 3839) +4(3818 3848 3849 3819) +4(3838 3839 3849 3848) +4(3810 3820 3850 3840) +4(3819 3849 3850 3820) +4(3839 3840 3850 3849) +4(3811 3821 3851 3841) +4(3820 3850 3851 3821) +4(3840 3841 3851 3850) +4(3812 3822 3852 3842) +4(3821 3851 3852 3822) +4(3841 3842 3852 3851) +4(3813 3823 3853 3843) +4(3822 3852 3853 3823) +4(3842 3843 3853 3852) +4(3823 3853 3854 3824) +4(3843 3844 3854 3853) +4(3816 3826 3856 3846) +4(3845 3846 3856 3855) +4(3815 3845 3855 3825) +4(3825 3855 3856 3826) +4(3817 3827 3857 3847) +4(3846 3847 3857 3856) +4(3826 3856 3857 3827) +4(3818 3828 3858 3848) +4(3847 3848 3858 3857) +4(3827 3857 3858 3828) +4(3819 3829 3859 3849) +4(3848 3849 3859 3858) +4(3828 3858 3859 3829) +4(3820 3830 3860 3850) +4(3849 3850 3860 3859) +4(3829 3859 3860 3830) +4(3821 3831 3861 3851) +4(3850 3851 3861 3860) +4(3830 3860 3861 3831) +4(3822 3832 3862 3852) +4(3851 3852 3862 3861) +4(3831 3861 3862 3832) +4(3823 3833 3863 3853) +4(3852 3853 3863 3862) +4(3832 3862 3863 3833) +4(3853 3854 3864 3863) +4(3833 3863 3864 3834) +4(3466 3836 3866 3556) +4(3835 3865 3866 3836) +4(3060 3556 3866 3865) +4(3033 3060 3865 3835) +4(3467 3837 3867 3557) +4(3836 3866 3867 3837) +4(3556 3557 3867 3866) +4(3468 3838 3868 3558) +4(3837 3867 3868 3838) +4(3557 3558 3868 3867) +4(3469 3839 3869 3559) +4(3838 3868 3869 3839) +4(3558 3559 3869 3868) +4(3470 3840 3870 3560) +4(3839 3869 3870 3840) +4(3559 3560 3870 3869) +4(3471 3841 3871 3561) +4(3840 3870 3871 3841) +4(3560 3561 3871 3870) +4(3472 3842 3872 3562) +4(3841 3871 3872 3842) +4(3561 3562 3872 3871) +4(3473 3843 3873 3563) +4(3842 3872 3873 3843) +4(3562 3563 3873 3872) +4(3843 3873 3874 3844) +4(3563 3564 3874 3873) +4(3836 3846 3876 3866) +4(3845 3875 3876 3846) +4(3865 3866 3876 3875) +4(3835 3865 3875 3845) +4(3837 3847 3877 3867) +4(3846 3876 3877 3847) +4(3866 3867 3877 3876) +4(3838 3848 3878 3868) +4(3847 3877 3878 3848) +4(3867 3868 3878 3877) +4(3839 3849 3879 3869) +4(3848 3878 3879 3849) +4(3868 3869 3879 3878) +4(3840 3850 3880 3870) +4(3849 3879 3880 3850) +4(3869 3870 3880 3879) +4(3841 3851 3881 3871) +4(3850 3880 3881 3851) +4(3870 3871 3881 3880) +4(3842 3852 3882 3872) +4(3851 3881 3882 3852) +4(3871 3872 3882 3881) +4(3843 3853 3883 3873) +4(3852 3882 3883 3853) +4(3872 3873 3883 3882) +4(3853 3883 3884 3854) +4(3873 3874 3884 3883) +4(3846 3856 3886 3876) +4(3875 3876 3886 3885) +4(3845 3875 3885 3855) +4(3855 3885 3886 3856) +4(3847 3857 3887 3877) +4(3876 3877 3887 3886) +4(3856 3886 3887 3857) +4(3848 3858 3888 3878) +4(3877 3878 3888 3887) +4(3857 3887 3888 3858) +4(3849 3859 3889 3879) +4(3878 3879 3889 3888) +4(3858 3888 3889 3859) +4(3850 3860 3890 3880) +4(3879 3880 3890 3889) +4(3859 3889 3890 3860) +4(3851 3861 3891 3881) +4(3880 3881 3891 3890) +4(3860 3890 3891 3861) +4(3852 3862 3892 3882) +4(3881 3882 3892 3891) +4(3861 3891 3892 3862) +4(3853 3863 3893 3883) +4(3882 3883 3893 3892) +4(3862 3892 3893 3863) +4(3883 3884 3894 3893) +4(3863 3893 3894 3864) +4(3556 3866 3896 3646) +4(3865 3895 3896 3866) +4(3087 3646 3896 3895) +4(3060 3087 3895 3865) +4(3557 3867 3897 3647) +4(3866 3896 3897 3867) +4(3646 3647 3897 3896) +4(3558 3868 3898 3648) +4(3867 3897 3898 3868) +4(3647 3648 3898 3897) +4(3559 3869 3899 3649) +4(3868 3898 3899 3869) +4(3648 3649 3899 3898) +4(3560 3870 3900 3650) +4(3869 3899 3900 3870) +4(3649 3650 3900 3899) +4(3561 3871 3901 3651) +4(3870 3900 3901 3871) +4(3650 3651 3901 3900) +4(3562 3872 3902 3652) +4(3871 3901 3902 3872) +4(3651 3652 3902 3901) +4(3563 3873 3903 3653) +4(3872 3902 3903 3873) +4(3652 3653 3903 3902) +4(3873 3903 3904 3874) +4(3653 3654 3904 3903) +4(3866 3876 3906 3896) +4(3875 3905 3906 3876) +4(3895 3896 3906 3905) +4(3865 3895 3905 3875) +4(3867 3877 3907 3897) +4(3876 3906 3907 3877) +4(3896 3897 3907 3906) +4(3868 3878 3908 3898) +4(3877 3907 3908 3878) +4(3897 3898 3908 3907) +4(3869 3879 3909 3899) +4(3878 3908 3909 3879) +4(3898 3899 3909 3908) +4(3870 3880 3910 3900) +4(3879 3909 3910 3880) +4(3899 3900 3910 3909) +4(3871 3881 3911 3901) +4(3880 3910 3911 3881) +4(3900 3901 3911 3910) +4(3872 3882 3912 3902) +4(3881 3911 3912 3882) +4(3901 3902 3912 3911) +4(3873 3883 3913 3903) +4(3882 3912 3913 3883) +4(3902 3903 3913 3912) +4(3883 3913 3914 3884) +4(3903 3904 3914 3913) +4(3876 3886 3916 3906) +4(3905 3906 3916 3915) +4(3875 3905 3915 3885) +4(3885 3915 3916 3886) +4(3877 3887 3917 3907) +4(3906 3907 3917 3916) +4(3886 3916 3917 3887) +4(3878 3888 3918 3908) +4(3907 3908 3918 3917) +4(3887 3917 3918 3888) +4(3879 3889 3919 3909) +4(3908 3909 3919 3918) +4(3888 3918 3919 3889) +4(3880 3890 3920 3910) +4(3909 3910 3920 3919) +4(3889 3919 3920 3890) +4(3881 3891 3921 3911) +4(3910 3911 3921 3920) +4(3890 3920 3921 3891) +4(3882 3892 3922 3912) +4(3911 3912 3922 3921) +4(3891 3921 3922 3892) +4(3883 3893 3923 3913) +4(3912 3913 3923 3922) +4(3892 3922 3923 3893) +4(3913 3914 3924 3923) +4(3893 3923 3924 3894) +4(3646 3896 3926 3736) +4(3895 3925 3926 3896) +4(3087 3114 3925 3895) +4(3647 3897 3927 3737) +4(3896 3926 3927 3897) +4(3648 3898 3928 3738) +4(3897 3927 3928 3898) +4(3649 3899 3929 3739) +4(3898 3928 3929 3899) +4(3650 3900 3930 3740) +4(3899 3929 3930 3900) +4(3651 3901 3931 3741) +4(3900 3930 3931 3901) +4(3652 3902 3932 3742) +4(3901 3931 3932 3902) +4(3653 3903 3933 3743) +4(3902 3932 3933 3903) +4(3903 3933 3934 3904) +4(3896 3906 3936 3926) +4(3905 3935 3936 3906) +4(3895 3925 3935 3905) +4(3897 3907 3937 3927) +4(3906 3936 3937 3907) +4(3898 3908 3938 3928) +4(3907 3937 3938 3908) +4(3899 3909 3939 3929) +4(3908 3938 3939 3909) +4(3900 3910 3940 3930) +4(3909 3939 3940 3910) +4(3901 3911 3941 3931) +4(3910 3940 3941 3911) +4(3902 3912 3942 3932) +4(3911 3941 3942 3912) +4(3903 3913 3943 3933) +4(3912 3942 3943 3913) +4(3913 3943 3944 3914) +4(3906 3916 3946 3936) +4(3905 3935 3945 3915) +4(3915 3945 3946 3916) +4(3907 3917 3947 3937) +4(3916 3946 3947 3917) +4(3908 3918 3948 3938) +4(3917 3947 3948 3918) +4(3909 3919 3949 3939) +4(3918 3948 3949 3919) +4(3910 3920 3950 3940) +4(3919 3949 3950 3920) +4(3911 3921 3951 3941) +4(3920 3950 3951 3921) +4(3912 3922 3952 3942) +4(3921 3951 3952 3922) +4(3913 3923 3953 3943) +4(3922 3952 3953 3923) +4(3923 3953 3954 3924) +4(727 3955 4000 763) +4(535 559 4000 3955) +4(471 763 4000 559) +4(728 3956 4001 764) +4(3955 4000 4001 3956) +4(763 764 4001 4000) +4(729 3957 4002 765) +4(3956 4001 4002 3957) +4(764 765 4002 4001) +4(730 3958 4003 766) +4(3957 4002 4003 3958) +4(765 766 4003 4002) +4(731 3959 4004 767) +4(3958 4003 4004 3959) +4(766 767 4004 4003) +4(732 3960 4005 768) +4(3959 4004 4005 3960) +4(767 768 4005 4004) +4(733 3961 4006 769) +4(3960 4005 4006 3961) +4(768 769 4006 4005) +4(734 3962 4007 770) +4(3961 4006 4007 3962) +4(769 770 4007 4006) +4(3962 4007 4008 3963) +4(770 771 4008 4007) +4(3955 3964 4009 4000) +4(539 563 4009 3964) +4(559 4000 4009 563) +4(3956 3965 4010 4001) +4(3964 4009 4010 3965) +4(4000 4001 4010 4009) +4(3957 3966 4011 4002) +4(3965 4010 4011 3966) +4(4001 4002 4011 4010) +4(3958 3967 4012 4003) +4(3966 4011 4012 3967) +4(4002 4003 4012 4011) +4(3959 3968 4013 4004) +4(3967 4012 4013 3968) +4(4003 4004 4013 4012) +4(3960 3969 4014 4005) +4(3968 4013 4014 3969) +4(4004 4005 4014 4013) +4(3961 3970 4015 4006) +4(3969 4014 4015 3970) +4(4005 4006 4015 4014) +4(3962 3971 4016 4007) +4(3970 4015 4016 3971) +4(4006 4007 4016 4015) +4(3971 4016 4017 3972) +4(4007 4008 4017 4016) +4(3964 3973 4018 4009) +4(543 567 4018 3973) +4(563 4009 4018 567) +4(3965 3974 4019 4010) +4(3973 4018 4019 3974) +4(4009 4010 4019 4018) +4(3966 3975 4020 4011) +4(3974 4019 4020 3975) +4(4010 4011 4020 4019) +4(3967 3976 4021 4012) +4(3975 4020 4021 3976) +4(4011 4012 4021 4020) +4(3968 3977 4022 4013) +4(3976 4021 4022 3977) +4(4012 4013 4022 4021) +4(3969 3978 4023 4014) +4(3977 4022 4023 3978) +4(4013 4014 4023 4022) +4(3970 3979 4024 4015) +4(3978 4023 4024 3979) +4(4014 4015 4024 4023) +4(3971 3980 4025 4016) +4(3979 4024 4025 3980) +4(4015 4016 4025 4024) +4(3980 4025 4026 3981) +4(4016 4017 4026 4025) +4(3973 3982 4027 4018) +4(547 571 4027 3982) +4(567 4018 4027 571) +4(3974 3983 4028 4019) +4(3982 4027 4028 3983) +4(4018 4019 4028 4027) +4(3975 3984 4029 4020) +4(3983 4028 4029 3984) +4(4019 4020 4029 4028) +4(3976 3985 4030 4021) +4(3984 4029 4030 3985) +4(4020 4021 4030 4029) +4(3977 3986 4031 4022) +4(3985 4030 4031 3986) +4(4021 4022 4031 4030) +4(3978 3987 4032 4023) +4(3986 4031 4032 3987) +4(4022 4023 4032 4031) +4(3979 3988 4033 4024) +4(3987 4032 4033 3988) +4(4023 4024 4033 4032) +4(3980 3989 4034 4025) +4(3988 4033 4034 3989) +4(4024 4025 4034 4033) +4(3989 4034 4035 3990) +4(4025 4026 4035 4034) +4(3982 3991 4036 4027) +4(551 575 4036 3991) +4(571 4027 4036 575) +4(3983 3992 4037 4028) +4(3991 4036 4037 3992) +4(4027 4028 4037 4036) +4(3984 3993 4038 4029) +4(3992 4037 4038 3993) +4(4028 4029 4038 4037) +4(3985 3994 4039 4030) +4(3993 4038 4039 3994) +4(4029 4030 4039 4038) +4(3986 3995 4040 4031) +4(3994 4039 4040 3995) +4(4030 4031 4040 4039) +4(3987 3996 4041 4032) +4(3995 4040 4041 3996) +4(4031 4032 4041 4040) +4(3988 3997 4042 4033) +4(3996 4041 4042 3997) +4(4032 4033 4042 4041) +4(3989 3998 4043 4034) +4(3997 4042 4043 3998) +4(4033 4034 4043 4042) +4(3998 4043 4044 3999) +4(4034 4035 4044 4043) +4(3991 3115 3205 4036) +4(575 4036 3205 579) +4(3992 3116 3206 4037) +4(4036 4037 3206 3205) +4(3993 3117 3207 4038) +4(4037 4038 3207 3206) +4(3994 3118 3208 4039) +4(4038 4039 3208 3207) +4(3995 3119 3209 4040) +4(4039 4040 3209 3208) +4(3996 3120 3210 4041) +4(4040 4041 3210 3209) +4(3997 3121 3211 4042) +4(4041 4042 3211 3210) +4(3998 3122 3212 4043) +4(4042 4043 3212 3211) +4(4043 4044 3213 3212) +4(763 4000 4045 799) +4(559 583 4045 4000) +4(483 799 4045 583) +4(764 4001 4046 800) +4(4000 4045 4046 4001) +4(799 800 4046 4045) +4(765 4002 4047 801) +4(4001 4046 4047 4002) +4(800 801 4047 4046) +4(766 4003 4048 802) +4(4002 4047 4048 4003) +4(801 802 4048 4047) +4(767 4004 4049 803) +4(4003 4048 4049 4004) +4(802 803 4049 4048) +4(768 4005 4050 804) +4(4004 4049 4050 4005) +4(803 804 4050 4049) +4(769 4006 4051 805) +4(4005 4050 4051 4006) +4(804 805 4051 4050) +4(770 4007 4052 806) +4(4006 4051 4052 4007) +4(805 806 4052 4051) +4(4007 4052 4053 4008) +4(806 807 4053 4052) +4(4000 4009 4054 4045) +4(563 587 4054 4009) +4(583 4045 4054 587) +4(4001 4010 4055 4046) +4(4009 4054 4055 4010) +4(4045 4046 4055 4054) +4(4002 4011 4056 4047) +4(4010 4055 4056 4011) +4(4046 4047 4056 4055) +4(4003 4012 4057 4048) +4(4011 4056 4057 4012) +4(4047 4048 4057 4056) +4(4004 4013 4058 4049) +4(4012 4057 4058 4013) +4(4048 4049 4058 4057) +4(4005 4014 4059 4050) +4(4013 4058 4059 4014) +4(4049 4050 4059 4058) +4(4006 4015 4060 4051) +4(4014 4059 4060 4015) +4(4050 4051 4060 4059) +4(4007 4016 4061 4052) +4(4015 4060 4061 4016) +4(4051 4052 4061 4060) +4(4016 4061 4062 4017) +4(4052 4053 4062 4061) +4(4009 4018 4063 4054) +4(567 591 4063 4018) +4(587 4054 4063 591) +4(4010 4019 4064 4055) +4(4018 4063 4064 4019) +4(4054 4055 4064 4063) +4(4011 4020 4065 4056) +4(4019 4064 4065 4020) +4(4055 4056 4065 4064) +4(4012 4021 4066 4057) +4(4020 4065 4066 4021) +4(4056 4057 4066 4065) +4(4013 4022 4067 4058) +4(4021 4066 4067 4022) +4(4057 4058 4067 4066) +4(4014 4023 4068 4059) +4(4022 4067 4068 4023) +4(4058 4059 4068 4067) +4(4015 4024 4069 4060) +4(4023 4068 4069 4024) +4(4059 4060 4069 4068) +4(4016 4025 4070 4061) +4(4024 4069 4070 4025) +4(4060 4061 4070 4069) +4(4025 4070 4071 4026) +4(4061 4062 4071 4070) +4(4018 4027 4072 4063) +4(571 595 4072 4027) +4(591 4063 4072 595) +4(4019 4028 4073 4064) +4(4027 4072 4073 4028) +4(4063 4064 4073 4072) +4(4020 4029 4074 4065) +4(4028 4073 4074 4029) +4(4064 4065 4074 4073) +4(4021 4030 4075 4066) +4(4029 4074 4075 4030) +4(4065 4066 4075 4074) +4(4022 4031 4076 4067) +4(4030 4075 4076 4031) +4(4066 4067 4076 4075) +4(4023 4032 4077 4068) +4(4031 4076 4077 4032) +4(4067 4068 4077 4076) +4(4024 4033 4078 4069) +4(4032 4077 4078 4033) +4(4068 4069 4078 4077) +4(4025 4034 4079 4070) +4(4033 4078 4079 4034) +4(4069 4070 4079 4078) +4(4034 4079 4080 4035) +4(4070 4071 4080 4079) +4(4027 4036 4081 4072) +4(575 599 4081 4036) +4(595 4072 4081 599) +4(4028 4037 4082 4073) +4(4036 4081 4082 4037) +4(4072 4073 4082 4081) +4(4029 4038 4083 4074) +4(4037 4082 4083 4038) +4(4073 4074 4083 4082) +4(4030 4039 4084 4075) +4(4038 4083 4084 4039) +4(4074 4075 4084 4083) +4(4031 4040 4085 4076) +4(4039 4084 4085 4040) +4(4075 4076 4085 4084) +4(4032 4041 4086 4077) +4(4040 4085 4086 4041) +4(4076 4077 4086 4085) +4(4033 4042 4087 4078) +4(4041 4086 4087 4042) +4(4077 4078 4087 4086) +4(4034 4043 4088 4079) +4(4042 4087 4088 4043) +4(4078 4079 4088 4087) +4(4043 4088 4089 4044) +4(4079 4080 4089 4088) +4(4036 3205 3295 4081) +4(599 4081 3295 603) +4(4037 3206 3296 4082) +4(4081 4082 3296 3295) +4(4038 3207 3297 4083) +4(4082 4083 3297 3296) +4(4039 3208 3298 4084) +4(4083 4084 3298 3297) +4(4040 3209 3299 4085) +4(4084 4085 3299 3298) +4(4041 3210 3300 4086) +4(4085 4086 3300 3299) +4(4042 3211 3301 4087) +4(4086 4087 3301 3300) +4(4043 3212 3302 4088) +4(4087 4088 3302 3301) +4(4088 4089 3303 3302) +4(799 4045 4090 835) +4(583 607 4090 4045) +4(495 835 4090 607) +4(800 4046 4091 836) +4(4045 4090 4091 4046) +4(835 836 4091 4090) +4(801 4047 4092 837) +4(4046 4091 4092 4047) +4(836 837 4092 4091) +4(802 4048 4093 838) +4(4047 4092 4093 4048) +4(837 838 4093 4092) +4(803 4049 4094 839) +4(4048 4093 4094 4049) +4(838 839 4094 4093) +4(804 4050 4095 840) +4(4049 4094 4095 4050) +4(839 840 4095 4094) +4(805 4051 4096 841) +4(4050 4095 4096 4051) +4(840 841 4096 4095) +4(806 4052 4097 842) +4(4051 4096 4097 4052) +4(841 842 4097 4096) +4(4052 4097 4098 4053) +4(842 843 4098 4097) +4(4045 4054 4099 4090) +4(587 611 4099 4054) +4(607 4090 4099 611) +4(4046 4055 4100 4091) +4(4054 4099 4100 4055) +4(4090 4091 4100 4099) +4(4047 4056 4101 4092) +4(4055 4100 4101 4056) +4(4091 4092 4101 4100) +4(4048 4057 4102 4093) +4(4056 4101 4102 4057) +4(4092 4093 4102 4101) +4(4049 4058 4103 4094) +4(4057 4102 4103 4058) +4(4093 4094 4103 4102) +4(4050 4059 4104 4095) +4(4058 4103 4104 4059) +4(4094 4095 4104 4103) +4(4051 4060 4105 4096) +4(4059 4104 4105 4060) +4(4095 4096 4105 4104) +4(4052 4061 4106 4097) +4(4060 4105 4106 4061) +4(4096 4097 4106 4105) +4(4061 4106 4107 4062) +4(4097 4098 4107 4106) +4(4054 4063 4108 4099) +4(591 615 4108 4063) +4(611 4099 4108 615) +4(4055 4064 4109 4100) +4(4063 4108 4109 4064) +4(4099 4100 4109 4108) +4(4056 4065 4110 4101) +4(4064 4109 4110 4065) +4(4100 4101 4110 4109) +4(4057 4066 4111 4102) +4(4065 4110 4111 4066) +4(4101 4102 4111 4110) +4(4058 4067 4112 4103) +4(4066 4111 4112 4067) +4(4102 4103 4112 4111) +4(4059 4068 4113 4104) +4(4067 4112 4113 4068) +4(4103 4104 4113 4112) +4(4060 4069 4114 4105) +4(4068 4113 4114 4069) +4(4104 4105 4114 4113) +4(4061 4070 4115 4106) +4(4069 4114 4115 4070) +4(4105 4106 4115 4114) +4(4070 4115 4116 4071) +4(4106 4107 4116 4115) +4(4063 4072 4117 4108) +4(595 619 4117 4072) +4(615 4108 4117 619) +4(4064 4073 4118 4109) +4(4072 4117 4118 4073) +4(4108 4109 4118 4117) +4(4065 4074 4119 4110) +4(4073 4118 4119 4074) +4(4109 4110 4119 4118) +4(4066 4075 4120 4111) +4(4074 4119 4120 4075) +4(4110 4111 4120 4119) +4(4067 4076 4121 4112) +4(4075 4120 4121 4076) +4(4111 4112 4121 4120) +4(4068 4077 4122 4113) +4(4076 4121 4122 4077) +4(4112 4113 4122 4121) +4(4069 4078 4123 4114) +4(4077 4122 4123 4078) +4(4113 4114 4123 4122) +4(4070 4079 4124 4115) +4(4078 4123 4124 4079) +4(4114 4115 4124 4123) +4(4079 4124 4125 4080) +4(4115 4116 4125 4124) +4(4072 4081 4126 4117) +4(599 623 4126 4081) +4(619 4117 4126 623) +4(4073 4082 4127 4118) +4(4081 4126 4127 4082) +4(4117 4118 4127 4126) +4(4074 4083 4128 4119) +4(4082 4127 4128 4083) +4(4118 4119 4128 4127) +4(4075 4084 4129 4120) +4(4083 4128 4129 4084) +4(4119 4120 4129 4128) +4(4076 4085 4130 4121) +4(4084 4129 4130 4085) +4(4120 4121 4130 4129) +4(4077 4086 4131 4122) +4(4085 4130 4131 4086) +4(4121 4122 4131 4130) +4(4078 4087 4132 4123) +4(4086 4131 4132 4087) +4(4122 4123 4132 4131) +4(4079 4088 4133 4124) +4(4087 4132 4133 4088) +4(4123 4124 4133 4132) +4(4088 4133 4134 4089) +4(4124 4125 4134 4133) +4(4081 3295 3385 4126) +4(623 4126 3385 627) +4(4082 3296 3386 4127) +4(4126 4127 3386 3385) +4(4083 3297 3387 4128) +4(4127 4128 3387 3386) +4(4084 3298 3388 4129) +4(4128 4129 3388 3387) +4(4085 3299 3389 4130) +4(4129 4130 3389 3388) +4(4086 3300 3390 4131) +4(4130 4131 3390 3389) +4(4087 3301 3391 4132) +4(4131 4132 3391 3390) +4(4088 3302 3392 4133) +4(4132 4133 3392 3391) +4(4133 4134 3393 3392) +4(835 4090 4135 871) +4(607 631 4135 4090) +4(507 871 4135 631) +4(836 4091 4136 872) +4(4090 4135 4136 4091) +4(871 872 4136 4135) +4(837 4092 4137 873) +4(4091 4136 4137 4092) +4(872 873 4137 4136) +4(838 4093 4138 874) +4(4092 4137 4138 4093) +4(873 874 4138 4137) +4(839 4094 4139 875) +4(4093 4138 4139 4094) +4(874 875 4139 4138) +4(840 4095 4140 876) +4(4094 4139 4140 4095) +4(875 876 4140 4139) +4(841 4096 4141 877) +4(4095 4140 4141 4096) +4(876 877 4141 4140) +4(842 4097 4142 878) +4(4096 4141 4142 4097) +4(877 878 4142 4141) +4(4097 4142 4143 4098) +4(878 879 4143 4142) +4(4090 4099 4144 4135) +4(611 635 4144 4099) +4(631 4135 4144 635) +4(4091 4100 4145 4136) +4(4099 4144 4145 4100) +4(4135 4136 4145 4144) +4(4092 4101 4146 4137) +4(4100 4145 4146 4101) +4(4136 4137 4146 4145) +4(4093 4102 4147 4138) +4(4101 4146 4147 4102) +4(4137 4138 4147 4146) +4(4094 4103 4148 4139) +4(4102 4147 4148 4103) +4(4138 4139 4148 4147) +4(4095 4104 4149 4140) +4(4103 4148 4149 4104) +4(4139 4140 4149 4148) +4(4096 4105 4150 4141) +4(4104 4149 4150 4105) +4(4140 4141 4150 4149) +4(4097 4106 4151 4142) +4(4105 4150 4151 4106) +4(4141 4142 4151 4150) +4(4106 4151 4152 4107) +4(4142 4143 4152 4151) +4(4099 4108 4153 4144) +4(615 639 4153 4108) +4(635 4144 4153 639) +4(4100 4109 4154 4145) +4(4108 4153 4154 4109) +4(4144 4145 4154 4153) +4(4101 4110 4155 4146) +4(4109 4154 4155 4110) +4(4145 4146 4155 4154) +4(4102 4111 4156 4147) +4(4110 4155 4156 4111) +4(4146 4147 4156 4155) +4(4103 4112 4157 4148) +4(4111 4156 4157 4112) +4(4147 4148 4157 4156) +4(4104 4113 4158 4149) +4(4112 4157 4158 4113) +4(4148 4149 4158 4157) +4(4105 4114 4159 4150) +4(4113 4158 4159 4114) +4(4149 4150 4159 4158) +4(4106 4115 4160 4151) +4(4114 4159 4160 4115) +4(4150 4151 4160 4159) +4(4115 4160 4161 4116) +4(4151 4152 4161 4160) +4(4108 4117 4162 4153) +4(619 643 4162 4117) +4(639 4153 4162 643) +4(4109 4118 4163 4154) +4(4117 4162 4163 4118) +4(4153 4154 4163 4162) +4(4110 4119 4164 4155) +4(4118 4163 4164 4119) +4(4154 4155 4164 4163) +4(4111 4120 4165 4156) +4(4119 4164 4165 4120) +4(4155 4156 4165 4164) +4(4112 4121 4166 4157) +4(4120 4165 4166 4121) +4(4156 4157 4166 4165) +4(4113 4122 4167 4158) +4(4121 4166 4167 4122) +4(4157 4158 4167 4166) +4(4114 4123 4168 4159) +4(4122 4167 4168 4123) +4(4158 4159 4168 4167) +4(4115 4124 4169 4160) +4(4123 4168 4169 4124) +4(4159 4160 4169 4168) +4(4124 4169 4170 4125) +4(4160 4161 4170 4169) +4(4117 4126 4171 4162) +4(623 647 4171 4126) +4(643 4162 4171 647) +4(4118 4127 4172 4163) +4(4126 4171 4172 4127) +4(4162 4163 4172 4171) +4(4119 4128 4173 4164) +4(4127 4172 4173 4128) +4(4163 4164 4173 4172) +4(4120 4129 4174 4165) +4(4128 4173 4174 4129) +4(4164 4165 4174 4173) +4(4121 4130 4175 4166) +4(4129 4174 4175 4130) +4(4165 4166 4175 4174) +4(4122 4131 4176 4167) +4(4130 4175 4176 4131) +4(4166 4167 4176 4175) +4(4123 4132 4177 4168) +4(4131 4176 4177 4132) +4(4167 4168 4177 4176) +4(4124 4133 4178 4169) +4(4132 4177 4178 4133) +4(4168 4169 4178 4177) +4(4133 4178 4179 4134) +4(4169 4170 4179 4178) +4(4126 3385 3475 4171) +4(647 4171 3475 651) +4(4127 3386 3476 4172) +4(4171 4172 3476 3475) +4(4128 3387 3477 4173) +4(4172 4173 3477 3476) +4(4129 3388 3478 4174) +4(4173 4174 3478 3477) +4(4130 3389 3479 4175) +4(4174 4175 3479 3478) +4(4131 3390 3480 4176) +4(4175 4176 3480 3479) +4(4132 3391 3481 4177) +4(4176 4177 3481 3480) +4(4133 3392 3482 4178) +4(4177 4178 3482 3481) +4(4178 4179 3483 3482) +4(871 4135 4180 907) +4(631 655 4180 4135) +4(519 907 4180 655) +4(872 4136 4181 908) +4(4135 4180 4181 4136) +4(907 908 4181 4180) +4(873 4137 4182 909) +4(4136 4181 4182 4137) +4(908 909 4182 4181) +4(874 4138 4183 910) +4(4137 4182 4183 4138) +4(909 910 4183 4182) +4(875 4139 4184 911) +4(4138 4183 4184 4139) +4(910 911 4184 4183) +4(876 4140 4185 912) +4(4139 4184 4185 4140) +4(911 912 4185 4184) +4(877 4141 4186 913) +4(4140 4185 4186 4141) +4(912 913 4186 4185) +4(878 4142 4187 914) +4(4141 4186 4187 4142) +4(913 914 4187 4186) +4(4142 4187 4188 4143) +4(914 915 4188 4187) +4(4135 4144 4189 4180) +4(635 659 4189 4144) +4(655 4180 4189 659) +4(4136 4145 4190 4181) +4(4144 4189 4190 4145) +4(4180 4181 4190 4189) +4(4137 4146 4191 4182) +4(4145 4190 4191 4146) +4(4181 4182 4191 4190) +4(4138 4147 4192 4183) +4(4146 4191 4192 4147) +4(4182 4183 4192 4191) +4(4139 4148 4193 4184) +4(4147 4192 4193 4148) +4(4183 4184 4193 4192) +4(4140 4149 4194 4185) +4(4148 4193 4194 4149) +4(4184 4185 4194 4193) +4(4141 4150 4195 4186) +4(4149 4194 4195 4150) +4(4185 4186 4195 4194) +4(4142 4151 4196 4187) +4(4150 4195 4196 4151) +4(4186 4187 4196 4195) +4(4151 4196 4197 4152) +4(4187 4188 4197 4196) +4(4144 4153 4198 4189) +4(639 663 4198 4153) +4(659 4189 4198 663) +4(4145 4154 4199 4190) +4(4153 4198 4199 4154) +4(4189 4190 4199 4198) +4(4146 4155 4200 4191) +4(4154 4199 4200 4155) +4(4190 4191 4200 4199) +4(4147 4156 4201 4192) +4(4155 4200 4201 4156) +4(4191 4192 4201 4200) +4(4148 4157 4202 4193) +4(4156 4201 4202 4157) +4(4192 4193 4202 4201) +4(4149 4158 4203 4194) +4(4157 4202 4203 4158) +4(4193 4194 4203 4202) +4(4150 4159 4204 4195) +4(4158 4203 4204 4159) +4(4194 4195 4204 4203) +4(4151 4160 4205 4196) +4(4159 4204 4205 4160) +4(4195 4196 4205 4204) +4(4160 4205 4206 4161) +4(4196 4197 4206 4205) +4(4153 4162 4207 4198) +4(643 667 4207 4162) +4(663 4198 4207 667) +4(4154 4163 4208 4199) +4(4162 4207 4208 4163) +4(4198 4199 4208 4207) +4(4155 4164 4209 4200) +4(4163 4208 4209 4164) +4(4199 4200 4209 4208) +4(4156 4165 4210 4201) +4(4164 4209 4210 4165) +4(4200 4201 4210 4209) +4(4157 4166 4211 4202) +4(4165 4210 4211 4166) +4(4201 4202 4211 4210) +4(4158 4167 4212 4203) +4(4166 4211 4212 4167) +4(4202 4203 4212 4211) +4(4159 4168 4213 4204) +4(4167 4212 4213 4168) +4(4203 4204 4213 4212) +4(4160 4169 4214 4205) +4(4168 4213 4214 4169) +4(4204 4205 4214 4213) +4(4169 4214 4215 4170) +4(4205 4206 4215 4214) +4(4162 4171 4216 4207) +4(647 671 4216 4171) +4(667 4207 4216 671) +4(4163 4172 4217 4208) +4(4171 4216 4217 4172) +4(4207 4208 4217 4216) +4(4164 4173 4218 4209) +4(4172 4217 4218 4173) +4(4208 4209 4218 4217) +4(4165 4174 4219 4210) +4(4173 4218 4219 4174) +4(4209 4210 4219 4218) +4(4166 4175 4220 4211) +4(4174 4219 4220 4175) +4(4210 4211 4220 4219) +4(4167 4176 4221 4212) +4(4175 4220 4221 4176) +4(4211 4212 4221 4220) +4(4168 4177 4222 4213) +4(4176 4221 4222 4177) +4(4212 4213 4222 4221) +4(4169 4178 4223 4214) +4(4177 4222 4223 4178) +4(4213 4214 4223 4222) +4(4178 4223 4224 4179) +4(4214 4215 4224 4223) +4(4171 3475 3565 4216) +4(671 4216 3565 675) +4(4172 3476 3566 4217) +4(4216 4217 3566 3565) +4(4173 3477 3567 4218) +4(4217 4218 3567 3566) +4(4174 3478 3568 4219) +4(4218 4219 3568 3567) +4(4175 3479 3569 4220) +4(4219 4220 3569 3568) +4(4176 3480 3570 4221) +4(4220 4221 3570 3569) +4(4177 3481 3571 4222) +4(4221 4222 3571 3570) +4(4178 3482 3572 4223) +4(4222 4223 3572 3571) +4(4223 4224 3573 3572) +4(907 4180 4225 943) +4(655 679 4225 4180) +4(908 4181 4226 944) +4(4180 4225 4226 4181) +4(909 4182 4227 945) +4(4181 4226 4227 4182) +4(910 4183 4228 946) +4(4182 4227 4228 4183) +4(911 4184 4229 947) +4(4183 4228 4229 4184) +4(912 4185 4230 948) +4(4184 4229 4230 4185) +4(913 4186 4231 949) +4(4185 4230 4231 4186) +4(914 4187 4232 950) +4(4186 4231 4232 4187) +4(4187 4232 4233 4188) +4(4180 4189 4234 4225) +4(659 683 4234 4189) +4(4181 4190 4235 4226) +4(4189 4234 4235 4190) +4(4182 4191 4236 4227) +4(4190 4235 4236 4191) +4(4183 4192 4237 4228) +4(4191 4236 4237 4192) +4(4184 4193 4238 4229) +4(4192 4237 4238 4193) +4(4185 4194 4239 4230) +4(4193 4238 4239 4194) +4(4186 4195 4240 4231) +4(4194 4239 4240 4195) +4(4187 4196 4241 4232) +4(4195 4240 4241 4196) +4(4196 4241 4242 4197) +4(4189 4198 4243 4234) +4(663 687 4243 4198) +4(4190 4199 4244 4235) +4(4198 4243 4244 4199) +4(4191 4200 4245 4236) +4(4199 4244 4245 4200) +4(4192 4201 4246 4237) +4(4200 4245 4246 4201) +4(4193 4202 4247 4238) +4(4201 4246 4247 4202) +4(4194 4203 4248 4239) +4(4202 4247 4248 4203) +4(4195 4204 4249 4240) +4(4203 4248 4249 4204) +4(4196 4205 4250 4241) +4(4204 4249 4250 4205) +4(4205 4250 4251 4206) +4(4198 4207 4252 4243) +4(667 691 4252 4207) +4(4199 4208 4253 4244) +4(4207 4252 4253 4208) +4(4200 4209 4254 4245) +4(4208 4253 4254 4209) +4(4201 4210 4255 4246) +4(4209 4254 4255 4210) +4(4202 4211 4256 4247) +4(4210 4255 4256 4211) +4(4203 4212 4257 4248) +4(4211 4256 4257 4212) +4(4204 4213 4258 4249) +4(4212 4257 4258 4213) +4(4205 4214 4259 4250) +4(4213 4258 4259 4214) +4(4214 4259 4260 4215) +4(4207 4216 4261 4252) +4(671 695 4261 4216) +4(4208 4217 4262 4253) +4(4216 4261 4262 4217) +4(4209 4218 4263 4254) +4(4217 4262 4263 4218) +4(4210 4219 4264 4255) +4(4218 4263 4264 4219) +4(4211 4220 4265 4256) +4(4219 4264 4265 4220) +4(4212 4221 4266 4257) +4(4220 4265 4266 4221) +4(4213 4222 4267 4258) +4(4221 4266 4267 4222) +4(4214 4223 4268 4259) +4(4222 4267 4268 4223) +4(4223 4268 4269 4224) +4(4216 3565 3655 4261) +4(4217 3566 3656 4262) +4(4218 3567 3657 4263) +4(4219 3568 3658 4264) +4(4220 3569 3659 4265) +4(4221 3570 3660 4266) +4(4222 3571 3661 4267) +4(4223 3572 3662 4268) +4(2623 4271 4319 2671) +4(4270 4318 4319 4271) +4(2670 2671 4319 4318) +4(2624 4272 4320 2672) +4(4271 4319 4320 4272) +4(2671 2672 4320 4319) +4(2625 4273 4321 2673) +4(4272 4320 4321 4273) +4(2672 2673 4321 4320) +4(2626 4274 4322 2674) +4(4273 4321 4322 4274) +4(2673 2674 4322 4321) +4(2627 4275 4323 2675) +4(4274 4322 4323 4275) +4(2674 2675 4323 4322) +4(2628 4276 4324 2676) +4(4275 4323 4324 4276) +4(2675 2676 4324 4323) +4(2629 4277 4325 2677) +4(4276 4324 4325 4277) +4(2676 2677 4325 4324) +4(2630 4278 4326 2678) +4(4277 4325 4326 4278) +4(2677 2678 4326 4325) +4(2631 4279 4327 2679) +4(4278 4326 4327 4279) +4(2678 2679 4327 4326) +4(2632 4280 4328 2680) +4(4279 4327 4328 4280) +4(2679 2680 4328 4327) +4(2633 4281 4329 2681) +4(4280 4328 4329 4281) +4(2680 2681 4329 4328) +4(2634 4282 4330 2682) +4(4281 4329 4330 4282) +4(2681 2682 4330 4329) +4(2635 4283 4331 2683) +4(4282 4330 4331 4283) +4(2682 2683 4331 4330) +4(2636 4284 4332 2684) +4(4283 4331 4332 4284) +4(2683 2684 4332 4331) +4(4284 4332 4333 4285) +4(2684 2685 4333 4332) +4(2637 4285 4333 2685) +4(4271 4287 4335 4319) +4(4286 4334 4335 4287) +4(4318 4319 4335 4334) +4(4272 4288 4336 4320) +4(4287 4335 4336 4288) +4(4319 4320 4336 4335) +4(4273 4289 4337 4321) +4(4288 4336 4337 4289) +4(4320 4321 4337 4336) +4(4274 4290 4338 4322) +4(4289 4337 4338 4290) +4(4321 4322 4338 4337) +4(4275 4291 4339 4323) +4(4290 4338 4339 4291) +4(4322 4323 4339 4338) +4(4276 4292 4340 4324) +4(4291 4339 4340 4292) +4(4323 4324 4340 4339) +4(4277 4293 4341 4325) +4(4292 4340 4341 4293) +4(4324 4325 4341 4340) +4(4278 4294 4342 4326) +4(4293 4341 4342 4294) +4(4325 4326 4342 4341) +4(4279 4295 4343 4327) +4(4294 4342 4343 4295) +4(4326 4327 4343 4342) +4(4280 4296 4344 4328) +4(4295 4343 4344 4296) +4(4327 4328 4344 4343) +4(4281 4297 4345 4329) +4(4296 4344 4345 4297) +4(4328 4329 4345 4344) +4(4282 4298 4346 4330) +4(4297 4345 4346 4298) +4(4329 4330 4346 4345) +4(4283 4299 4347 4331) +4(4298 4346 4347 4299) +4(4330 4331 4347 4346) +4(4284 4300 4348 4332) +4(4299 4347 4348 4300) +4(4331 4332 4348 4347) +4(4300 4348 4349 4301) +4(4332 4333 4349 4348) +4(4285 4301 4349 4333) +4(4287 4303 4351 4335) +4(4334 4335 4351 4350) +4(4288 4304 4352 4336) +4(4335 4336 4352 4351) +4(4289 4305 4353 4337) +4(4336 4337 4353 4352) +4(4290 4306 4354 4338) +4(4337 4338 4354 4353) +4(4291 4307 4355 4339) +4(4338 4339 4355 4354) +4(4292 4308 4356 4340) +4(4339 4340 4356 4355) +4(4293 4309 4357 4341) +4(4340 4341 4357 4356) +4(4294 4310 4358 4342) +4(4341 4342 4358 4357) +4(4295 4311 4359 4343) +4(4342 4343 4359 4358) +4(4296 4312 4360 4344) +4(4343 4344 4360 4359) +4(4297 4313 4361 4345) +4(4344 4345 4361 4360) +4(4298 4314 4362 4346) +4(4345 4346 4362 4361) +4(4299 4315 4363 4347) +4(4346 4347 4363 4362) +4(4300 4316 4364 4348) +4(4347 4348 4364 4363) +4(4348 4349 4365 4364) +4(4301 4317 4365 4349) +4(2671 4319 4367 2719) +4(4318 4366 4367 4319) +4(2718 2719 4367 4366) +4(2672 4320 4368 2720) +4(4319 4367 4368 4320) +4(2719 2720 4368 4367) +4(2673 4321 4369 2721) +4(4320 4368 4369 4321) +4(2720 2721 4369 4368) +4(2674 4322 4370 2722) +4(4321 4369 4370 4322) +4(2721 2722 4370 4369) +4(2675 4323 4371 2723) +4(4322 4370 4371 4323) +4(2722 2723 4371 4370) +4(2676 4324 4372 2724) +4(4323 4371 4372 4324) +4(2723 2724 4372 4371) +4(2677 4325 4373 2725) +4(4324 4372 4373 4325) +4(2724 2725 4373 4372) +4(2678 4326 4374 2726) +4(4325 4373 4374 4326) +4(2725 2726 4374 4373) +4(2679 4327 4375 2727) +4(4326 4374 4375 4327) +4(2726 2727 4375 4374) +4(2680 4328 4376 2728) +4(4327 4375 4376 4328) +4(2727 2728 4376 4375) +4(2681 4329 4377 2729) +4(4328 4376 4377 4329) +4(2728 2729 4377 4376) +4(2682 4330 4378 2730) +4(4329 4377 4378 4330) +4(2729 2730 4378 4377) +4(2683 4331 4379 2731) +4(4330 4378 4379 4331) +4(2730 2731 4379 4378) +4(2684 4332 4380 2732) +4(4331 4379 4380 4332) +4(2731 2732 4380 4379) +4(4332 4380 4381 4333) +4(2732 2733 4381 4380) +4(2685 4333 4381 2733) +4(4319 4335 4383 4367) +4(4334 4382 4383 4335) +4(4366 4367 4383 4382) +4(4320 4336 4384 4368) +4(4335 4383 4384 4336) +4(4367 4368 4384 4383) +4(4321 4337 4385 4369) +4(4336 4384 4385 4337) +4(4368 4369 4385 4384) +4(4322 4338 4386 4370) +4(4337 4385 4386 4338) +4(4369 4370 4386 4385) +4(4323 4339 4387 4371) +4(4338 4386 4387 4339) +4(4370 4371 4387 4386) +4(4324 4340 4388 4372) +4(4339 4387 4388 4340) +4(4371 4372 4388 4387) +4(4325 4341 4389 4373) +4(4340 4388 4389 4341) +4(4372 4373 4389 4388) +4(4326 4342 4390 4374) +4(4341 4389 4390 4342) +4(4373 4374 4390 4389) +4(4327 4343 4391 4375) +4(4342 4390 4391 4343) +4(4374 4375 4391 4390) +4(4328 4344 4392 4376) +4(4343 4391 4392 4344) +4(4375 4376 4392 4391) +4(4329 4345 4393 4377) +4(4344 4392 4393 4345) +4(4376 4377 4393 4392) +4(4330 4346 4394 4378) +4(4345 4393 4394 4346) +4(4377 4378 4394 4393) +4(4331 4347 4395 4379) +4(4346 4394 4395 4347) +4(4378 4379 4395 4394) +4(4332 4348 4396 4380) +4(4347 4395 4396 4348) +4(4379 4380 4396 4395) +4(4348 4396 4397 4349) +4(4380 4381 4397 4396) +4(4333 4349 4397 4381) +4(4335 4351 4399 4383) +4(4382 4383 4399 4398) +4(4336 4352 4400 4384) +4(4383 4384 4400 4399) +4(4337 4353 4401 4385) +4(4384 4385 4401 4400) +4(4338 4354 4402 4386) +4(4385 4386 4402 4401) +4(4339 4355 4403 4387) +4(4386 4387 4403 4402) +4(4340 4356 4404 4388) +4(4387 4388 4404 4403) +4(4341 4357 4405 4389) +4(4388 4389 4405 4404) +4(4342 4358 4406 4390) +4(4389 4390 4406 4405) +4(4343 4359 4407 4391) +4(4390 4391 4407 4406) +4(4344 4360 4408 4392) +4(4391 4392 4408 4407) +4(4345 4361 4409 4393) +4(4392 4393 4409 4408) +4(4346 4362 4410 4394) +4(4393 4394 4410 4409) +4(4347 4363 4411 4395) +4(4394 4395 4411 4410) +4(4348 4364 4412 4396) +4(4395 4396 4412 4411) +4(4396 4397 4413 4412) +4(4349 4365 4413 4397) +4(2719 4367 4415 2767) +4(4366 4414 4415 4367) +4(2766 2767 4415 4414) +4(2720 4368 4416 2768) +4(4367 4415 4416 4368) +4(2767 2768 4416 4415) +4(2721 4369 4417 2769) +4(4368 4416 4417 4369) +4(2768 2769 4417 4416) +4(2722 4370 4418 2770) +4(4369 4417 4418 4370) +4(2769 2770 4418 4417) +4(2723 4371 4419 2771) +4(4370 4418 4419 4371) +4(2770 2771 4419 4418) +4(2724 4372 4420 2772) +4(4371 4419 4420 4372) +4(2771 2772 4420 4419) +4(2725 4373 4421 2773) +4(4372 4420 4421 4373) +4(2772 2773 4421 4420) +4(2726 4374 4422 2774) +4(4373 4421 4422 4374) +4(2773 2774 4422 4421) +4(2727 4375 4423 2775) +4(4374 4422 4423 4375) +4(2774 2775 4423 4422) +4(2728 4376 4424 2776) +4(4375 4423 4424 4376) +4(2775 2776 4424 4423) +4(2729 4377 4425 2777) +4(4376 4424 4425 4377) +4(2776 2777 4425 4424) +4(2730 4378 4426 2778) +4(4377 4425 4426 4378) +4(2777 2778 4426 4425) +4(2731 4379 4427 2779) +4(4378 4426 4427 4379) +4(2778 2779 4427 4426) +4(2732 4380 4428 2780) +4(4379 4427 4428 4380) +4(2779 2780 4428 4427) +4(4380 4428 4429 4381) +4(2780 2781 4429 4428) +4(2733 4381 4429 2781) +4(4367 4383 4431 4415) +4(4382 4430 4431 4383) +4(4414 4415 4431 4430) +4(4368 4384 4432 4416) +4(4383 4431 4432 4384) +4(4415 4416 4432 4431) +4(4369 4385 4433 4417) +4(4384 4432 4433 4385) +4(4416 4417 4433 4432) +4(4370 4386 4434 4418) +4(4385 4433 4434 4386) +4(4417 4418 4434 4433) +4(4371 4387 4435 4419) +4(4386 4434 4435 4387) +4(4418 4419 4435 4434) +4(4372 4388 4436 4420) +4(4387 4435 4436 4388) +4(4419 4420 4436 4435) +4(4373 4389 4437 4421) +4(4388 4436 4437 4389) +4(4420 4421 4437 4436) +4(4374 4390 4438 4422) +4(4389 4437 4438 4390) +4(4421 4422 4438 4437) +4(4375 4391 4439 4423) +4(4390 4438 4439 4391) +4(4422 4423 4439 4438) +4(4376 4392 4440 4424) +4(4391 4439 4440 4392) +4(4423 4424 4440 4439) +4(4377 4393 4441 4425) +4(4392 4440 4441 4393) +4(4424 4425 4441 4440) +4(4378 4394 4442 4426) +4(4393 4441 4442 4394) +4(4425 4426 4442 4441) +4(4379 4395 4443 4427) +4(4394 4442 4443 4395) +4(4426 4427 4443 4442) +4(4380 4396 4444 4428) +4(4395 4443 4444 4396) +4(4427 4428 4444 4443) +4(4396 4444 4445 4397) +4(4428 4429 4445 4444) +4(4381 4397 4445 4429) +4(4383 4399 4447 4431) +4(4430 4431 4447 4446) +4(4384 4400 4448 4432) +4(4431 4432 4448 4447) +4(4385 4401 4449 4433) +4(4432 4433 4449 4448) +4(4386 4402 4450 4434) +4(4433 4434 4450 4449) +4(4387 4403 4451 4435) +4(4434 4435 4451 4450) +4(4388 4404 4452 4436) +4(4435 4436 4452 4451) +4(4389 4405 4453 4437) +4(4436 4437 4453 4452) +4(4390 4406 4454 4438) +4(4437 4438 4454 4453) +4(4391 4407 4455 4439) +4(4438 4439 4455 4454) +4(4392 4408 4456 4440) +4(4439 4440 4456 4455) +4(4393 4409 4457 4441) +4(4440 4441 4457 4456) +4(4394 4410 4458 4442) +4(4441 4442 4458 4457) +4(4395 4411 4459 4443) +4(4442 4443 4459 4458) +4(4396 4412 4460 4444) +4(4443 4444 4460 4459) +4(4444 4445 4461 4460) +4(4397 4413 4461 4445) +4(2767 4415 4463 2815) +4(4414 4462 4463 4415) +4(2814 2815 4463 4462) +4(2768 4416 4464 2816) +4(4415 4463 4464 4416) +4(2815 2816 4464 4463) +4(2769 4417 4465 2817) +4(4416 4464 4465 4417) +4(2816 2817 4465 4464) +4(2770 4418 4466 2818) +4(4417 4465 4466 4418) +4(2817 2818 4466 4465) +4(2771 4419 4467 2819) +4(4418 4466 4467 4419) +4(2818 2819 4467 4466) +4(2772 4420 4468 2820) +4(4419 4467 4468 4420) +4(2819 2820 4468 4467) +4(2773 4421 4469 2821) +4(4420 4468 4469 4421) +4(2820 2821 4469 4468) +4(2774 4422 4470 2822) +4(4421 4469 4470 4422) +4(2821 2822 4470 4469) +4(2775 4423 4471 2823) +4(4422 4470 4471 4423) +4(2822 2823 4471 4470) +4(2776 4424 4472 2824) +4(4423 4471 4472 4424) +4(2823 2824 4472 4471) +4(2777 4425 4473 2825) +4(4424 4472 4473 4425) +4(2824 2825 4473 4472) +4(2778 4426 4474 2826) +4(4425 4473 4474 4426) +4(2825 2826 4474 4473) +4(2779 4427 4475 2827) +4(4426 4474 4475 4427) +4(2826 2827 4475 4474) +4(2780 4428 4476 2828) +4(4427 4475 4476 4428) +4(2827 2828 4476 4475) +4(4428 4476 4477 4429) +4(2828 2829 4477 4476) +4(2781 4429 4477 2829) +4(4415 4431 4479 4463) +4(4430 4478 4479 4431) +4(4462 4463 4479 4478) +4(4416 4432 4480 4464) +4(4431 4479 4480 4432) +4(4463 4464 4480 4479) +4(4417 4433 4481 4465) +4(4432 4480 4481 4433) +4(4464 4465 4481 4480) +4(4418 4434 4482 4466) +4(4433 4481 4482 4434) +4(4465 4466 4482 4481) +4(4419 4435 4483 4467) +4(4434 4482 4483 4435) +4(4466 4467 4483 4482) +4(4420 4436 4484 4468) +4(4435 4483 4484 4436) +4(4467 4468 4484 4483) +4(4421 4437 4485 4469) +4(4436 4484 4485 4437) +4(4468 4469 4485 4484) +4(4422 4438 4486 4470) +4(4437 4485 4486 4438) +4(4469 4470 4486 4485) +4(4423 4439 4487 4471) +4(4438 4486 4487 4439) +4(4470 4471 4487 4486) +4(4424 4440 4488 4472) +4(4439 4487 4488 4440) +4(4471 4472 4488 4487) +4(4425 4441 4489 4473) +4(4440 4488 4489 4441) +4(4472 4473 4489 4488) +4(4426 4442 4490 4474) +4(4441 4489 4490 4442) +4(4473 4474 4490 4489) +4(4427 4443 4491 4475) +4(4442 4490 4491 4443) +4(4474 4475 4491 4490) +4(4428 4444 4492 4476) +4(4443 4491 4492 4444) +4(4475 4476 4492 4491) +4(4444 4492 4493 4445) +4(4476 4477 4493 4492) +4(4429 4445 4493 4477) +4(4431 4447 4495 4479) +4(4478 4479 4495 4494) +4(4432 4448 4496 4480) +4(4479 4480 4496 4495) +4(4433 4449 4497 4481) +4(4480 4481 4497 4496) +4(4434 4450 4498 4482) +4(4481 4482 4498 4497) +4(4435 4451 4499 4483) +4(4482 4483 4499 4498) +4(4436 4452 4500 4484) +4(4483 4484 4500 4499) +4(4437 4453 4501 4485) +4(4484 4485 4501 4500) +4(4438 4454 4502 4486) +4(4485 4486 4502 4501) +4(4439 4455 4503 4487) +4(4486 4487 4503 4502) +4(4440 4456 4504 4488) +4(4487 4488 4504 4503) +4(4441 4457 4505 4489) +4(4488 4489 4505 4504) +4(4442 4458 4506 4490) +4(4489 4490 4506 4505) +4(4443 4459 4507 4491) +4(4490 4491 4507 4506) +4(4444 4460 4508 4492) +4(4491 4492 4508 4507) +4(4492 4493 4509 4508) +4(4445 4461 4509 4493) +4(2815 4463 4511 2863) +4(4462 4510 4511 4463) +4(2862 2863 4511 4510) +4(2816 4464 4512 2864) +4(4463 4511 4512 4464) +4(2863 2864 4512 4511) +4(2817 4465 4513 2865) +4(4464 4512 4513 4465) +4(2864 2865 4513 4512) +4(2818 4466 4514 2866) +4(4465 4513 4514 4466) +4(2865 2866 4514 4513) +4(2819 4467 4515 2867) +4(4466 4514 4515 4467) +4(2866 2867 4515 4514) +4(2820 4468 4516 2868) +4(4467 4515 4516 4468) +4(2867 2868 4516 4515) +4(2821 4469 4517 2869) +4(4468 4516 4517 4469) +4(2868 2869 4517 4516) +4(2822 4470 4518 2870) +4(4469 4517 4518 4470) +4(2869 2870 4518 4517) +4(2823 4471 4519 2871) +4(4470 4518 4519 4471) +4(2870 2871 4519 4518) +4(2824 4472 4520 2872) +4(4471 4519 4520 4472) +4(2871 2872 4520 4519) +4(2825 4473 4521 2873) +4(4472 4520 4521 4473) +4(2872 2873 4521 4520) +4(2826 4474 4522 2874) +4(4473 4521 4522 4474) +4(2873 2874 4522 4521) +4(2827 4475 4523 2875) +4(4474 4522 4523 4475) +4(2874 2875 4523 4522) +4(2828 4476 4524 2876) +4(4475 4523 4524 4476) +4(2875 2876 4524 4523) +4(4476 4524 4525 4477) +4(2876 2877 4525 4524) +4(2829 4477 4525 2877) +4(4463 4479 4527 4511) +4(4478 4526 4527 4479) +4(4510 4511 4527 4526) +4(4464 4480 4528 4512) +4(4479 4527 4528 4480) +4(4511 4512 4528 4527) +4(4465 4481 4529 4513) +4(4480 4528 4529 4481) +4(4512 4513 4529 4528) +4(4466 4482 4530 4514) +4(4481 4529 4530 4482) +4(4513 4514 4530 4529) +4(4467 4483 4531 4515) +4(4482 4530 4531 4483) +4(4514 4515 4531 4530) +4(4468 4484 4532 4516) +4(4483 4531 4532 4484) +4(4515 4516 4532 4531) +4(4469 4485 4533 4517) +4(4484 4532 4533 4485) +4(4516 4517 4533 4532) +4(4470 4486 4534 4518) +4(4485 4533 4534 4486) +4(4517 4518 4534 4533) +4(4471 4487 4535 4519) +4(4486 4534 4535 4487) +4(4518 4519 4535 4534) +4(4472 4488 4536 4520) +4(4487 4535 4536 4488) +4(4519 4520 4536 4535) +4(4473 4489 4537 4521) +4(4488 4536 4537 4489) +4(4520 4521 4537 4536) +4(4474 4490 4538 4522) +4(4489 4537 4538 4490) +4(4521 4522 4538 4537) +4(4475 4491 4539 4523) +4(4490 4538 4539 4491) +4(4522 4523 4539 4538) +4(4476 4492 4540 4524) +4(4491 4539 4540 4492) +4(4523 4524 4540 4539) +4(4492 4540 4541 4493) +4(4524 4525 4541 4540) +4(4477 4493 4541 4525) +4(4479 4495 4543 4527) +4(4526 4527 4543 4542) +4(4480 4496 4544 4528) +4(4527 4528 4544 4543) +4(4481 4497 4545 4529) +4(4528 4529 4545 4544) +4(4482 4498 4546 4530) +4(4529 4530 4546 4545) +4(4483 4499 4547 4531) +4(4530 4531 4547 4546) +4(4484 4500 4548 4532) +4(4531 4532 4548 4547) +4(4485 4501 4549 4533) +4(4532 4533 4549 4548) +4(4486 4502 4550 4534) +4(4533 4534 4550 4549) +4(4487 4503 4551 4535) +4(4534 4535 4551 4550) +4(4488 4504 4552 4536) +4(4535 4536 4552 4551) +4(4489 4505 4553 4537) +4(4536 4537 4553 4552) +4(4490 4506 4554 4538) +4(4537 4538 4554 4553) +4(4491 4507 4555 4539) +4(4538 4539 4555 4554) +4(4492 4508 4556 4540) +4(4539 4540 4556 4555) +4(4540 4541 4557 4556) +4(4493 4509 4557 4541) +4(2863 4511 4559 2911) +4(4510 4558 4559 4511) +4(2864 4512 4560 2912) +4(4511 4559 4560 4512) +4(2865 4513 4561 2913) +4(4512 4560 4561 4513) +4(2866 4514 4562 2914) +4(4513 4561 4562 4514) +4(2867 4515 4563 2915) +4(4514 4562 4563 4515) +4(2868 4516 4564 2916) +4(4515 4563 4564 4516) +4(2869 4517 4565 2917) +4(4516 4564 4565 4517) +4(2870 4518 4566 2918) +4(4517 4565 4566 4518) +4(2871 4519 4567 2919) +4(4518 4566 4567 4519) +4(2872 4520 4568 2920) +4(4519 4567 4568 4520) +4(2873 4521 4569 2921) +4(4520 4568 4569 4521) +4(2874 4522 4570 2922) +4(4521 4569 4570 4522) +4(2875 4523 4571 2923) +4(4522 4570 4571 4523) +4(2876 4524 4572 2924) +4(4523 4571 4572 4524) +4(4524 4572 4573 4525) +4(2877 4525 4573 2925) +4(4511 4527 4575 4559) +4(4526 4574 4575 4527) +4(4512 4528 4576 4560) +4(4527 4575 4576 4528) +4(4513 4529 4577 4561) +4(4528 4576 4577 4529) +4(4514 4530 4578 4562) +4(4529 4577 4578 4530) +4(4515 4531 4579 4563) +4(4530 4578 4579 4531) +4(4516 4532 4580 4564) +4(4531 4579 4580 4532) +4(4517 4533 4581 4565) +4(4532 4580 4581 4533) +4(4518 4534 4582 4566) +4(4533 4581 4582 4534) +4(4519 4535 4583 4567) +4(4534 4582 4583 4535) +4(4520 4536 4584 4568) +4(4535 4583 4584 4536) +4(4521 4537 4585 4569) +4(4536 4584 4585 4537) +4(4522 4538 4586 4570) +4(4537 4585 4586 4538) +4(4523 4539 4587 4571) +4(4538 4586 4587 4539) +4(4524 4540 4588 4572) +4(4539 4587 4588 4540) +4(4540 4588 4589 4541) +4(4525 4541 4589 4573) +4(4527 4543 4591 4575) +4(4528 4544 4592 4576) +4(4529 4545 4593 4577) +4(4530 4546 4594 4578) +4(4531 4547 4595 4579) +4(4532 4548 4596 4580) +4(4533 4549 4597 4581) +4(4534 4550 4598 4582) +4(4535 4551 4599 4583) +4(4536 4552 4600 4584) +4(4537 4553 4601 4585) +4(4538 4554 4602 4586) +4(4539 4555 4603 4587) +4(4540 4556 4604 4588) +4(4541 4557 4605 4589) +4(4606 4608 4619 4617) +4(4285 4333 4619 4608) +4(2685 4617 4619 4333) +4(2637 4606 4617 2685) +4(4607 4609 4620 4618) +4(4608 4619 4620 4609) +4(4617 4618 4620 4619) +4(4606 4607 4618 4617) +4(4609 4620 4621 4610) +4(4618 3795 4621 4620) +4(4607 3765 3795 4618) +4(3765 4610 4621 3795) +4(4608 4611 4622 4619) +4(4301 4349 4622 4611) +4(4333 4619 4622 4349) +4(4609 4612 4623 4620) +4(4611 4622 4623 4612) +4(4619 4620 4623 4622) +4(4612 4623 4624 4613) +4(4620 4621 4624 4623) +4(4610 4613 4624 4621) +4(4611 4614 4625 4622) +4(4349 4622 4625 4365) +4(4612 4615 4626 4623) +4(4622 4623 4626 4625) +4(4623 4624 4627 4626) +4(4613 4616 4627 4624) +4(4617 4619 4630 4628) +4(4333 4381 4630 4619) +4(2733 4628 4630 4381) +4(2685 4617 4628 2733) +4(4618 4620 4631 4629) +4(4619 4630 4631 4620) +4(4628 4629 4631 4630) +4(4617 4618 4629 4628) +4(4620 4631 4632 4621) +4(4629 3825 4632 4631) +4(4618 3795 3825 4629) +4(3795 4621 4632 3825) +4(4619 4622 4633 4630) +4(4349 4397 4633 4622) +4(4381 4630 4633 4397) +4(4620 4623 4634 4631) +4(4622 4633 4634 4623) +4(4630 4631 4634 4633) +4(4623 4634 4635 4624) +4(4631 4632 4635 4634) +4(4621 4624 4635 4632) +4(4622 4625 4636 4633) +4(4397 4633 4636 4413) +4(4623 4626 4637 4634) +4(4633 4634 4637 4636) +4(4634 4635 4638 4637) +4(4624 4627 4638 4635) +4(4628 4630 4641 4639) +4(4381 4429 4641 4630) +4(2781 4639 4641 4429) +4(2733 4628 4639 2781) +4(4629 4631 4642 4640) +4(4630 4641 4642 4631) +4(4639 4640 4642 4641) +4(4628 4629 4640 4639) +4(4631 4642 4643 4632) +4(4640 3855 4643 4642) +4(4629 3825 3855 4640) +4(3825 4632 4643 3855) +4(4630 4633 4644 4641) +4(4397 4445 4644 4633) +4(4429 4641 4644 4445) +4(4631 4634 4645 4642) +4(4633 4644 4645 4634) +4(4641 4642 4645 4644) +4(4634 4645 4646 4635) +4(4642 4643 4646 4645) +4(4632 4635 4646 4643) +4(4633 4636 4647 4644) +4(4445 4644 4647 4461) +4(4634 4637 4648 4645) +4(4644 4645 4648 4647) +4(4645 4646 4649 4648) +4(4635 4638 4649 4646) +4(4639 4641 4652 4650) +4(4429 4477 4652 4641) +4(2829 4650 4652 4477) +4(2781 4639 4650 2829) +4(4640 4642 4653 4651) +4(4641 4652 4653 4642) +4(4650 4651 4653 4652) +4(4639 4640 4651 4650) +4(4642 4653 4654 4643) +4(4651 3885 4654 4653) +4(4640 3855 3885 4651) +4(3855 4643 4654 3885) +4(4641 4644 4655 4652) +4(4445 4493 4655 4644) +4(4477 4652 4655 4493) +4(4642 4645 4656 4653) +4(4644 4655 4656 4645) +4(4652 4653 4656 4655) +4(4645 4656 4657 4646) +4(4653 4654 4657 4656) +4(4643 4646 4657 4654) +4(4644 4647 4658 4655) +4(4493 4655 4658 4509) +4(4645 4648 4659 4656) +4(4655 4656 4659 4658) +4(4656 4657 4660 4659) +4(4646 4649 4660 4657) +4(4650 4652 4663 4661) +4(4477 4525 4663 4652) +4(2877 4661 4663 4525) +4(2829 4650 4661 2877) +4(4651 4653 4664 4662) +4(4652 4663 4664 4653) +4(4661 4662 4664 4663) +4(4650 4651 4662 4661) +4(4653 4664 4665 4654) +4(4662 3915 4665 4664) +4(4651 3885 3915 4662) +4(3885 4654 4665 3915) +4(4652 4655 4666 4663) +4(4493 4541 4666 4655) +4(4525 4663 4666 4541) +4(4653 4656 4667 4664) +4(4655 4666 4667 4656) +4(4663 4664 4667 4666) +4(4656 4667 4668 4657) +4(4664 4665 4668 4667) +4(4654 4657 4668 4665) +4(4655 4658 4669 4666) +4(4541 4666 4669 4557) +4(4656 4659 4670 4667) +4(4666 4667 4670 4669) +4(4667 4668 4671 4670) +4(4657 4660 4671 4668) +4(4661 4663 4674 4672) +4(4525 4573 4674 4663) +4(2877 4661 4672 2925) +4(4662 4664 4675 4673) +4(4663 4674 4675 4664) +4(4661 4662 4673 4672) +4(4664 4675 4676 4665) +4(4662 3915 3945 4673) +4(3915 4665 4676 3945) +4(4663 4666 4677 4674) +4(4541 4589 4677 4666) +4(4664 4667 4678 4675) +4(4666 4677 4678 4667) +4(4667 4678 4679 4668) +4(4665 4668 4679 4676) +4(4666 4669 4680 4677) +4(4667 4670 4681 4678) +4(4668 4671 4682 4679) +4(2950 4683 4687 2977) +4(2605 2653 4687 4683) +4(1869 2977 4687 2653) +4(2951 4684 4688 2978) +4(4683 4687 4688 4684) +4(2977 2978 4688 4687) +4(4684 4688 3775 3745) +4(2978 2979 3775 4688) +4(4683 4685 4689 4687) +4(2621 2669 4689 4685) +4(2653 4687 4689 2669) +4(4684 4686 4690 4688) +4(4685 4689 4690 4686) +4(4687 4688 4690 4689) +4(4686 4690 3785 3755) +4(4688 3775 3785 4690) +4(4685 4606 4617 4689) +4(2669 4689 4617 2685) +4(4686 4607 4618 4690) +4(4689 4690 4618 4617) +4(4690 3785 3795 4618) +4(2977 4687 4691 3004) +4(2653 2701 4691 4687) +4(2013 3004 4691 2701) +4(2978 4688 4692 3005) +4(4687 4691 4692 4688) +4(3004 3005 4692 4691) +4(4688 4692 3805 3775) +4(3005 3006 3805 4692) +4(4687 4689 4693 4691) +4(2669 2717 4693 4689) +4(2701 4691 4693 2717) +4(4688 4690 4694 4692) +4(4689 4693 4694 4690) +4(4691 4692 4694 4693) +4(4690 4694 3815 3785) +4(4692 3805 3815 4694) +4(4689 4617 4628 4693) +4(2717 4693 4628 2733) +4(4690 4618 4629 4694) +4(4693 4694 4629 4628) +4(4694 3815 3825 4629) +4(3004 4691 4695 3031) +4(2701 2749 4695 4691) +4(2157 3031 4695 2749) +4(3005 4692 4696 3032) +4(4691 4695 4696 4692) +4(3031 3032 4696 4695) +4(4692 4696 3835 3805) +4(3032 3033 3835 4696) +4(4691 4693 4697 4695) +4(2717 2765 4697 4693) +4(2749 4695 4697 2765) +4(4692 4694 4698 4696) +4(4693 4697 4698 4694) +4(4695 4696 4698 4697) +4(4694 4698 3845 3815) +4(4696 3835 3845 4698) +4(4693 4628 4639 4697) +4(2765 4697 4639 2781) +4(4694 4629 4640 4698) +4(4697 4698 4640 4639) +4(4698 3845 3855 4640) +4(3031 4695 4699 3058) +4(2749 2797 4699 4695) +4(2301 3058 4699 2797) +4(3032 4696 4700 3059) +4(4695 4699 4700 4696) +4(3058 3059 4700 4699) +4(4696 4700 3865 3835) +4(3059 3060 3865 4700) +4(4695 4697 4701 4699) +4(2765 2813 4701 4697) +4(2797 4699 4701 2813) +4(4696 4698 4702 4700) +4(4697 4701 4702 4698) +4(4699 4700 4702 4701) +4(4698 4702 3875 3845) +4(4700 3865 3875 4702) +4(4697 4639 4650 4701) +4(2813 4701 4650 2829) +4(4698 4640 4651 4702) +4(4701 4702 4651 4650) +4(4702 3875 3885 4651) +4(3058 4699 4703 3085) +4(2797 2845 4703 4699) +4(2445 3085 4703 2845) +4(3059 4700 4704 3086) +4(4699 4703 4704 4700) +4(3085 3086 4704 4703) +4(4700 4704 3895 3865) +4(3086 3087 3895 4704) +4(4699 4701 4705 4703) +4(2813 2861 4705 4701) +4(2845 4703 4705 2861) +4(4700 4702 4706 4704) +4(4701 4705 4706 4702) +4(4703 4704 4706 4705) +4(4702 4706 3905 3875) +4(4704 3895 3905 4706) +4(4701 4650 4661 4705) +4(2861 4705 4661 2877) +4(4702 4651 4662 4706) +4(4705 4706 4662 4661) +4(4706 3905 3915 4662) +4(3085 4703 4707 3112) +4(2845 2893 4707 4703) +4(3086 4704 4708 3113) +4(4703 4707 4708 4704) +4(4704 4708 3925 3895) +4(4703 4705 4709 4707) +4(2861 2909 4709 4705) +4(4704 4706 4710 4708) +4(4705 4709 4710 4706) +4(4706 4710 3935 3905) +4(4705 4661 4672 4709) +4(4706 4662 4673 4710) +4(3766 4711 4738 3796) +4(4610 4621 4738 4711) +4(3795 3796 4738 4621) +4(3767 4712 4739 3797) +4(4711 4738 4739 4712) +4(3796 3797 4739 4738) +4(3768 4713 4740 3798) +4(4712 4739 4740 4713) +4(3797 3798 4740 4739) +4(3769 4714 4741 3799) +4(4713 4740 4741 4714) +4(3798 3799 4741 4740) +4(3770 4715 4742 3800) +4(4714 4741 4742 4715) +4(3799 3800 4742 4741) +4(3771 4716 4743 3801) +4(4715 4742 4743 4716) +4(3800 3801 4743 4742) +4(3772 4717 4744 3802) +4(4716 4743 4744 4717) +4(3801 3802 4744 4743) +4(3773 4718 4745 3803) +4(4717 4744 4745 4718) +4(3802 3803 4745 4744) +4(4718 4745 4746 4719) +4(3803 3804 4746 4745) +4(4711 4720 4747 4738) +4(4613 4624 4747 4720) +4(4621 4738 4747 4624) +4(4712 4721 4748 4739) +4(4720 4747 4748 4721) +4(4738 4739 4748 4747) +4(4713 4722 4749 4740) +4(4721 4748 4749 4722) +4(4739 4740 4749 4748) +4(4714 4723 4750 4741) +4(4722 4749 4750 4723) +4(4740 4741 4750 4749) +4(4715 4724 4751 4742) +4(4723 4750 4751 4724) +4(4741 4742 4751 4750) +4(4716 4725 4752 4743) +4(4724 4751 4752 4725) +4(4742 4743 4752 4751) +4(4717 4726 4753 4744) +4(4725 4752 4753 4726) +4(4743 4744 4753 4752) +4(4718 4727 4754 4745) +4(4726 4753 4754 4727) +4(4744 4745 4754 4753) +4(4727 4754 4755 4728) +4(4745 4746 4755 4754) +4(4720 4729 4756 4747) +4(4624 4747 4756 4627) +4(4721 4730 4757 4748) +4(4747 4748 4757 4756) +4(4722 4731 4758 4749) +4(4748 4749 4758 4757) +4(4723 4732 4759 4750) +4(4749 4750 4759 4758) +4(4724 4733 4760 4751) +4(4750 4751 4760 4759) +4(4725 4734 4761 4752) +4(4751 4752 4761 4760) +4(4726 4735 4762 4753) +4(4752 4753 4762 4761) +4(4727 4736 4763 4754) +4(4753 4754 4763 4762) +4(4754 4755 4764 4763) +4(3796 4738 4765 3826) +4(4621 4632 4765 4738) +4(3825 3826 4765 4632) +4(3797 4739 4766 3827) +4(4738 4765 4766 4739) +4(3826 3827 4766 4765) +4(3798 4740 4767 3828) +4(4739 4766 4767 4740) +4(3827 3828 4767 4766) +4(3799 4741 4768 3829) +4(4740 4767 4768 4741) +4(3828 3829 4768 4767) +4(3800 4742 4769 3830) +4(4741 4768 4769 4742) +4(3829 3830 4769 4768) +4(3801 4743 4770 3831) +4(4742 4769 4770 4743) +4(3830 3831 4770 4769) +4(3802 4744 4771 3832) +4(4743 4770 4771 4744) +4(3831 3832 4771 4770) +4(3803 4745 4772 3833) +4(4744 4771 4772 4745) +4(3832 3833 4772 4771) +4(4745 4772 4773 4746) +4(3833 3834 4773 4772) +4(4738 4747 4774 4765) +4(4624 4635 4774 4747) +4(4632 4765 4774 4635) +4(4739 4748 4775 4766) +4(4747 4774 4775 4748) +4(4765 4766 4775 4774) +4(4740 4749 4776 4767) +4(4748 4775 4776 4749) +4(4766 4767 4776 4775) +4(4741 4750 4777 4768) +4(4749 4776 4777 4750) +4(4767 4768 4777 4776) +4(4742 4751 4778 4769) +4(4750 4777 4778 4751) +4(4768 4769 4778 4777) +4(4743 4752 4779 4770) +4(4751 4778 4779 4752) +4(4769 4770 4779 4778) +4(4744 4753 4780 4771) +4(4752 4779 4780 4753) +4(4770 4771 4780 4779) +4(4745 4754 4781 4772) +4(4753 4780 4781 4754) +4(4771 4772 4781 4780) +4(4754 4781 4782 4755) +4(4772 4773 4782 4781) +4(4747 4756 4783 4774) +4(4635 4774 4783 4638) +4(4748 4757 4784 4775) +4(4774 4775 4784 4783) +4(4749 4758 4785 4776) +4(4775 4776 4785 4784) +4(4750 4759 4786 4777) +4(4776 4777 4786 4785) +4(4751 4760 4787 4778) +4(4777 4778 4787 4786) +4(4752 4761 4788 4779) +4(4778 4779 4788 4787) +4(4753 4762 4789 4780) +4(4779 4780 4789 4788) +4(4754 4763 4790 4781) +4(4780 4781 4790 4789) +4(4781 4782 4791 4790) +4(3826 4765 4792 3856) +4(4632 4643 4792 4765) +4(3855 3856 4792 4643) +4(3827 4766 4793 3857) +4(4765 4792 4793 4766) +4(3856 3857 4793 4792) +4(3828 4767 4794 3858) +4(4766 4793 4794 4767) +4(3857 3858 4794 4793) +4(3829 4768 4795 3859) +4(4767 4794 4795 4768) +4(3858 3859 4795 4794) +4(3830 4769 4796 3860) +4(4768 4795 4796 4769) +4(3859 3860 4796 4795) +4(3831 4770 4797 3861) +4(4769 4796 4797 4770) +4(3860 3861 4797 4796) +4(3832 4771 4798 3862) +4(4770 4797 4798 4771) +4(3861 3862 4798 4797) +4(3833 4772 4799 3863) +4(4771 4798 4799 4772) +4(3862 3863 4799 4798) +4(4772 4799 4800 4773) +4(3863 3864 4800 4799) +4(4765 4774 4801 4792) +4(4635 4646 4801 4774) +4(4643 4792 4801 4646) +4(4766 4775 4802 4793) +4(4774 4801 4802 4775) +4(4792 4793 4802 4801) +4(4767 4776 4803 4794) +4(4775 4802 4803 4776) +4(4793 4794 4803 4802) +4(4768 4777 4804 4795) +4(4776 4803 4804 4777) +4(4794 4795 4804 4803) +4(4769 4778 4805 4796) +4(4777 4804 4805 4778) +4(4795 4796 4805 4804) +4(4770 4779 4806 4797) +4(4778 4805 4806 4779) +4(4796 4797 4806 4805) +4(4771 4780 4807 4798) +4(4779 4806 4807 4780) +4(4797 4798 4807 4806) +4(4772 4781 4808 4799) +4(4780 4807 4808 4781) +4(4798 4799 4808 4807) +4(4781 4808 4809 4782) +4(4799 4800 4809 4808) +4(4774 4783 4810 4801) +4(4646 4801 4810 4649) +4(4775 4784 4811 4802) +4(4801 4802 4811 4810) +4(4776 4785 4812 4803) +4(4802 4803 4812 4811) +4(4777 4786 4813 4804) +4(4803 4804 4813 4812) +4(4778 4787 4814 4805) +4(4804 4805 4814 4813) +4(4779 4788 4815 4806) +4(4805 4806 4815 4814) +4(4780 4789 4816 4807) +4(4806 4807 4816 4815) +4(4781 4790 4817 4808) +4(4807 4808 4817 4816) +4(4808 4809 4818 4817) +4(3856 4792 4819 3886) +4(4643 4654 4819 4792) +4(3885 3886 4819 4654) +4(3857 4793 4820 3887) +4(4792 4819 4820 4793) +4(3886 3887 4820 4819) +4(3858 4794 4821 3888) +4(4793 4820 4821 4794) +4(3887 3888 4821 4820) +4(3859 4795 4822 3889) +4(4794 4821 4822 4795) +4(3888 3889 4822 4821) +4(3860 4796 4823 3890) +4(4795 4822 4823 4796) +4(3889 3890 4823 4822) +4(3861 4797 4824 3891) +4(4796 4823 4824 4797) +4(3890 3891 4824 4823) +4(3862 4798 4825 3892) +4(4797 4824 4825 4798) +4(3891 3892 4825 4824) +4(3863 4799 4826 3893) +4(4798 4825 4826 4799) +4(3892 3893 4826 4825) +4(4799 4826 4827 4800) +4(3893 3894 4827 4826) +4(4792 4801 4828 4819) +4(4646 4657 4828 4801) +4(4654 4819 4828 4657) +4(4793 4802 4829 4820) +4(4801 4828 4829 4802) +4(4819 4820 4829 4828) +4(4794 4803 4830 4821) +4(4802 4829 4830 4803) +4(4820 4821 4830 4829) +4(4795 4804 4831 4822) +4(4803 4830 4831 4804) +4(4821 4822 4831 4830) +4(4796 4805 4832 4823) +4(4804 4831 4832 4805) +4(4822 4823 4832 4831) +4(4797 4806 4833 4824) +4(4805 4832 4833 4806) +4(4823 4824 4833 4832) +4(4798 4807 4834 4825) +4(4806 4833 4834 4807) +4(4824 4825 4834 4833) +4(4799 4808 4835 4826) +4(4807 4834 4835 4808) +4(4825 4826 4835 4834) +4(4808 4835 4836 4809) +4(4826 4827 4836 4835) +4(4801 4810 4837 4828) +4(4657 4828 4837 4660) +4(4802 4811 4838 4829) +4(4828 4829 4838 4837) +4(4803 4812 4839 4830) +4(4829 4830 4839 4838) +4(4804 4813 4840 4831) +4(4830 4831 4840 4839) +4(4805 4814 4841 4832) +4(4831 4832 4841 4840) +4(4806 4815 4842 4833) +4(4832 4833 4842 4841) +4(4807 4816 4843 4834) +4(4833 4834 4843 4842) +4(4808 4817 4844 4835) +4(4834 4835 4844 4843) +4(4835 4836 4845 4844) +4(3886 4819 4846 3916) +4(4654 4665 4846 4819) +4(3915 3916 4846 4665) +4(3887 4820 4847 3917) +4(4819 4846 4847 4820) +4(3916 3917 4847 4846) +4(3888 4821 4848 3918) +4(4820 4847 4848 4821) +4(3917 3918 4848 4847) +4(3889 4822 4849 3919) +4(4821 4848 4849 4822) +4(3918 3919 4849 4848) +4(3890 4823 4850 3920) +4(4822 4849 4850 4823) +4(3919 3920 4850 4849) +4(3891 4824 4851 3921) +4(4823 4850 4851 4824) +4(3920 3921 4851 4850) +4(3892 4825 4852 3922) +4(4824 4851 4852 4825) +4(3921 3922 4852 4851) +4(3893 4826 4853 3923) +4(4825 4852 4853 4826) +4(3922 3923 4853 4852) +4(4826 4853 4854 4827) +4(3923 3924 4854 4853) +4(4819 4828 4855 4846) +4(4657 4668 4855 4828) +4(4665 4846 4855 4668) +4(4820 4829 4856 4847) +4(4828 4855 4856 4829) +4(4846 4847 4856 4855) +4(4821 4830 4857 4848) +4(4829 4856 4857 4830) +4(4847 4848 4857 4856) +4(4822 4831 4858 4849) +4(4830 4857 4858 4831) +4(4848 4849 4858 4857) +4(4823 4832 4859 4850) +4(4831 4858 4859 4832) +4(4849 4850 4859 4858) +4(4824 4833 4860 4851) +4(4832 4859 4860 4833) +4(4850 4851 4860 4859) +4(4825 4834 4861 4852) +4(4833 4860 4861 4834) +4(4851 4852 4861 4860) +4(4826 4835 4862 4853) +4(4834 4861 4862 4835) +4(4852 4853 4862 4861) +4(4835 4862 4863 4836) +4(4853 4854 4863 4862) +4(4828 4837 4864 4855) +4(4668 4855 4864 4671) +4(4829 4838 4865 4856) +4(4855 4856 4865 4864) +4(4830 4839 4866 4857) +4(4856 4857 4866 4865) +4(4831 4840 4867 4858) +4(4857 4858 4867 4866) +4(4832 4841 4868 4859) +4(4858 4859 4868 4867) +4(4833 4842 4869 4860) +4(4859 4860 4869 4868) +4(4834 4843 4870 4861) +4(4860 4861 4870 4869) +4(4835 4844 4871 4862) +4(4861 4862 4871 4870) +4(4862 4863 4872 4871) +4(3916 4846 4873 3946) +4(4665 4676 4873 4846) +4(3917 4847 4874 3947) +4(4846 4873 4874 4847) +4(3918 4848 4875 3948) +4(4847 4874 4875 4848) +4(3919 4849 4876 3949) +4(4848 4875 4876 4849) +4(3920 4850 4877 3950) +4(4849 4876 4877 4850) +4(3921 4851 4878 3951) +4(4850 4877 4878 4851) +4(3922 4852 4879 3952) +4(4851 4878 4879 4852) +4(3923 4853 4880 3953) +4(4852 4879 4880 4853) +4(4853 4880 4881 4854) +4(4846 4855 4882 4873) +4(4668 4679 4882 4855) +4(4847 4856 4883 4874) +4(4855 4882 4883 4856) +4(4848 4857 4884 4875) +4(4856 4883 4884 4857) +4(4849 4858 4885 4876) +4(4857 4884 4885 4858) +4(4850 4859 4886 4877) +4(4858 4885 4886 4859) +4(4851 4860 4887 4878) +4(4859 4886 4887 4860) +4(4852 4861 4888 4879) +4(4860 4887 4888 4861) +4(4853 4862 4889 4880) +4(4861 4888 4889 4862) +4(4862 4889 4890 4863) +4(4855 4864 4891 4882) +4(4856 4865 4892 4883) +4(4857 4866 4893 4884) +4(4858 4867 4894 4885) +4(4859 4868 4895 4886) +4(4860 4869 4896 4887) +4(4861 4870 4897 4888) +4(4862 4871 4898 4889) +4(0 64 80 16) +4(16 80 96 32) +4(32 96 112 48) +4(64 128 144 80) +4(80 144 160 96) +4(96 160 176 112) +4(128 192 208 144) +4(144 208 224 160) +4(160 224 240 176) +4(192 256 272 208) +4(208 272 288 224) +4(224 288 304 240) +4(256 320 336 272) +4(272 336 352 288) +4(288 352 368 304) +4(320 384 400 336) +4(336 400 416 352) +4(352 416 432 368) +4(48 112 1042 952) +4(952 1042 1057 967) +4(967 1057 1072 982) +4(982 1072 1087 997) +4(997 1087 1102 1012) +4(1012 1102 1117 1027) +4(112 176 1132 1042) +4(1042 1132 1147 1057) +4(1057 1147 1162 1072) +4(1072 1162 1177 1087) +4(1087 1177 1192 1102) +4(1102 1192 1207 1117) +4(176 240 1222 1132) +4(1132 1222 1237 1147) +4(1147 1237 1252 1162) +4(1162 1252 1267 1177) +4(1177 1267 1282 1192) +4(1192 1282 1297 1207) +4(240 304 1312 1222) +4(1222 1312 1327 1237) +4(1237 1327 1342 1252) +4(1252 1342 1357 1267) +4(1267 1357 1372 1282) +4(1282 1372 1387 1297) +4(304 368 1402 1312) +4(1312 1402 1417 1327) +4(1327 1417 1432 1342) +4(1342 1432 1447 1357) +4(1357 1447 1462 1372) +4(1372 1462 1477 1387) +4(368 432 1492 1402) +4(1402 1492 1507 1417) +4(1417 1507 1522 1432) +4(1432 1522 1537 1447) +4(1447 1537 1552 1462) +4(1462 1552 1567 1477) +4(1027 1117 1726 1582) +4(1582 1726 1742 1598) +4(1598 1742 1758 1614) +4(1614 1758 1774 1630) +4(1630 1774 1790 1646) +4(1646 1790 1806 1662) +4(1662 1806 1822 1678) +4(1678 1822 1838 1694) +4(1694 1838 1854 1710) +4(1117 1207 1870 1726) +4(1726 1870 1886 1742) +4(1742 1886 1902 1758) +4(1758 1902 1918 1774) +4(1774 1918 1934 1790) +4(1790 1934 1950 1806) +4(1806 1950 1966 1822) +4(1822 1966 1982 1838) +4(1838 1982 1998 1854) +4(1207 1297 2014 1870) +4(1870 2014 2030 1886) +4(1886 2030 2046 1902) +4(1902 2046 2062 1918) +4(1918 2062 2078 1934) +4(1934 2078 2094 1950) +4(1950 2094 2110 1966) +4(1966 2110 2126 1982) +4(1982 2126 2142 1998) +4(1297 1387 2158 2014) +4(2014 2158 2174 2030) +4(2030 2174 2190 2046) +4(2046 2190 2206 2062) +4(2062 2206 2222 2078) +4(2078 2222 2238 2094) +4(2094 2238 2254 2110) +4(2110 2254 2270 2126) +4(2126 2270 2286 2142) +4(1387 1477 2302 2158) +4(2158 2302 2318 2174) +4(2174 2318 2334 2190) +4(2190 2334 2350 2206) +4(2206 2350 2366 2222) +4(2222 2366 2382 2238) +4(2238 2382 2398 2254) +4(2254 2398 2414 2270) +4(2270 2414 2430 2286) +4(1477 1567 2446 2302) +4(2302 2446 2462 2318) +4(2318 2462 2478 2334) +4(2334 2478 2494 2350) +4(2350 2494 2510 2366) +4(2366 2510 2526 2382) +4(2382 2526 2542 2398) +4(2398 2542 2558 2414) +4(2414 2558 2574 2430) +4(1710 1854 2638 2590) +4(2590 2638 2654 2606) +4(2606 2654 2670 2622) +4(1854 1998 2686 2638) +4(2638 2686 2702 2654) +4(2654 2702 2718 2670) +4(1998 2142 2734 2686) +4(2686 2734 2750 2702) +4(2702 2750 2766 2718) +4(2142 2286 2782 2734) +4(2734 2782 2798 2750) +4(2750 2798 2814 2766) +4(2286 2430 2830 2782) +4(2782 2830 2846 2798) +4(2798 2846 2862 2814) +4(2430 2574 2878 2830) +4(2830 2878 2894 2846) +4(2846 2894 2910 2862) +4(2622 2670 4318 4270) +4(4270 4318 4334 4286) +4(4286 4334 4350 4302) +4(2670 2718 4366 4318) +4(4318 4366 4382 4334) +4(4334 4382 4398 4350) +4(2718 2766 4414 4366) +4(4366 4414 4430 4382) +4(4382 4430 4446 4398) +4(2766 2814 4462 4414) +4(4414 4462 4478 4430) +4(4430 4478 4494 4446) +4(2814 2862 4510 4462) +4(4462 4510 4526 4478) +4(4478 4526 4542 4494) +4(2862 2910 4558 4510) +4(4510 4558 4574 4526) +4(4526 4574 4590 4542) +4(708 717 753 744) +4(717 726 762 753) +4(726 735 771 762) +4(744 753 789 780) +4(753 762 798 789) +4(762 771 807 798) +4(780 789 825 816) +4(789 798 834 825) +4(798 807 843 834) +4(816 825 861 852) +4(825 834 870 861) +4(834 843 879 870) +4(852 861 897 888) +4(861 870 906 897) +4(870 879 915 906) +4(888 897 933 924) +4(897 906 942 933) +4(906 915 951 942) +4(735 3963 4008 771) +4(3963 3972 4017 4008) +4(3972 3981 4026 4017) +4(3981 3990 4035 4026) +4(3990 3999 4044 4035) +4(3999 3123 3213 4044) +4(771 4008 4053 807) +4(4008 4017 4062 4053) +4(4017 4026 4071 4062) +4(4026 4035 4080 4071) +4(4035 4044 4089 4080) +4(4044 3213 3303 4089) +4(807 4053 4098 843) +4(4053 4062 4107 4098) +4(4062 4071 4116 4107) +4(4071 4080 4125 4116) +4(4080 4089 4134 4125) +4(4089 3303 3393 4134) +4(843 4098 4143 879) +4(4098 4107 4152 4143) +4(4107 4116 4161 4152) +4(4116 4125 4170 4161) +4(4125 4134 4179 4170) +4(4134 3393 3483 4179) +4(879 4143 4188 915) +4(4143 4152 4197 4188) +4(4152 4161 4206 4197) +4(4161 4170 4215 4206) +4(4170 4179 4224 4215) +4(4179 3483 3573 4224) +4(915 4188 4233 951) +4(4188 4197 4242 4233) +4(4197 4206 4251 4242) +4(4206 4215 4260 4251) +4(4215 4224 4269 4260) +4(4224 3573 3663 4269) +4(3123 3132 3222 3213) +4(3132 3141 3231 3222) +4(3141 3150 3240 3231) +4(3150 3159 3249 3240) +4(3159 3168 3258 3249) +4(3168 3177 3267 3258) +4(3177 3186 3276 3267) +4(3186 3195 3285 3276) +4(3195 3204 3294 3285) +4(3213 3222 3312 3303) +4(3222 3231 3321 3312) +4(3231 3240 3330 3321) +4(3240 3249 3339 3330) +4(3249 3258 3348 3339) +4(3258 3267 3357 3348) +4(3267 3276 3366 3357) +4(3276 3285 3375 3366) +4(3285 3294 3384 3375) +4(3303 3312 3402 3393) +4(3312 3321 3411 3402) +4(3321 3330 3420 3411) +4(3330 3339 3429 3420) +4(3339 3348 3438 3429) +4(3348 3357 3447 3438) +4(3357 3366 3456 3447) +4(3366 3375 3465 3456) +4(3375 3384 3474 3465) +4(3393 3402 3492 3483) +4(3402 3411 3501 3492) +4(3411 3420 3510 3501) +4(3420 3429 3519 3510) +4(3429 3438 3528 3519) +4(3438 3447 3537 3528) +4(3447 3456 3546 3537) +4(3456 3465 3555 3546) +4(3465 3474 3564 3555) +4(3483 3492 3582 3573) +4(3492 3501 3591 3582) +4(3501 3510 3600 3591) +4(3510 3519 3609 3600) +4(3519 3528 3618 3609) +4(3528 3537 3627 3618) +4(3537 3546 3636 3627) +4(3546 3555 3645 3636) +4(3555 3564 3654 3645) +4(3573 3582 3672 3663) +4(3582 3591 3681 3672) +4(3591 3600 3690 3681) +4(3600 3609 3699 3690) +4(3609 3618 3708 3699) +4(3618 3627 3717 3708) +4(3627 3636 3726 3717) +4(3636 3645 3735 3726) +4(3645 3654 3744 3735) +4(3204 3754 3784 3294) +4(3754 3764 3794 3784) +4(3764 3774 3804 3794) +4(3294 3784 3814 3384) +4(3784 3794 3824 3814) +4(3794 3804 3834 3824) +4(3384 3814 3844 3474) +4(3814 3824 3854 3844) +4(3824 3834 3864 3854) +4(3474 3844 3874 3564) +4(3844 3854 3884 3874) +4(3854 3864 3894 3884) +4(3564 3874 3904 3654) +4(3874 3884 3914 3904) +4(3884 3894 3924 3914) +4(3654 3904 3934 3744) +4(3904 3914 3944 3934) +4(3914 3924 3954 3944) +4(3774 4719 4746 3804) +4(4719 4728 4755 4746) +4(4728 4737 4764 4755) +4(3804 4746 4773 3834) +4(4746 4755 4782 4773) +4(4755 4764 4791 4782) +4(3834 4773 4800 3864) +4(4773 4782 4809 4800) +4(4782 4791 4818 4809) +4(3864 4800 4827 3894) +4(4800 4809 4836 4827) +4(4809 4818 4845 4836) +4(3894 4827 4854 3924) +4(4827 4836 4863 4854) +4(4836 4845 4872 4863) +4(3924 4854 4881 3954) +4(4854 4863 4890 4881) +4(4863 4872 4899 4890) +4(0 16 17 1) +4(16 32 33 17) +4(32 48 49 33) +4(1 17 18 2) +4(17 33 34 18) +4(33 49 50 34) +4(2 18 19 3) +4(18 34 35 19) +4(34 50 51 35) +4(3 19 20 4) +4(19 35 36 20) +4(35 51 52 36) +4(4 20 21 5) +4(20 36 37 21) +4(36 52 53 37) +4(5 21 22 6) +4(21 37 38 22) +4(37 53 54 38) +4(6 22 23 7) +4(22 38 39 23) +4(38 54 55 39) +4(7 23 24 8) +4(23 39 40 24) +4(39 55 56 40) +4(8 24 25 9) +4(24 40 41 25) +4(40 56 57 41) +4(9 25 26 10) +4(25 41 42 26) +4(41 57 58 42) +4(10 26 27 11) +4(26 42 43 27) +4(42 58 59 43) +4(11 27 28 12) +4(27 43 44 28) +4(43 59 60 44) +4(12 28 29 13) +4(28 44 45 29) +4(44 60 61 45) +4(13 29 30 14) +4(29 45 46 30) +4(45 61 62 46) +4(14 30 31 15) +4(30 46 47 31) +4(46 62 63 47) +4(15 31 451 448) +4(31 47 454 451) +4(47 63 457 454) +4(448 451 452 449) +4(451 454 455 452) +4(454 457 458 455) +4(449 452 453 450) +4(452 455 456 453) +4(455 458 459 456) +4(450 453 709 700) +4(453 456 718 709) +4(456 459 727 718) +4(700 709 710 701) +4(709 718 719 710) +4(718 727 728 719) +4(701 710 711 702) +4(710 719 720 711) +4(719 728 729 720) +4(702 711 712 703) +4(711 720 721 712) +4(720 729 730 721) +4(703 712 713 704) +4(712 721 722 713) +4(721 730 731 722) +4(704 713 714 705) +4(713 722 723 714) +4(722 731 732 723) +4(705 714 715 706) +4(714 723 724 715) +4(723 732 733 724) +4(706 715 716 707) +4(715 724 725 716) +4(724 733 734 725) +4(707 716 717 708) +4(716 725 726 717) +4(725 734 735 726) +4(63 532 533 457) +4(532 536 537 533) +4(536 540 541 537) +4(540 544 545 541) +4(544 548 549 545) +4(548 552 553 549) +4(457 533 534 458) +4(533 537 538 534) +4(537 541 542 538) +4(541 545 546 542) +4(545 549 550 546) +4(549 553 554 550) +4(458 534 535 459) +4(534 538 539 535) +4(538 542 543 539) +4(542 546 547 543) +4(546 550 551 547) +4(550 554 555 551) +4(48 952 953 49) +4(952 967 968 953) +4(967 982 983 968) +4(982 997 998 983) +4(997 1012 1013 998) +4(1012 1027 1028 1013) +4(49 953 954 50) +4(953 968 969 954) +4(968 983 984 969) +4(983 998 999 984) +4(998 1013 1014 999) +4(1013 1028 1029 1014) +4(50 954 955 51) +4(954 969 970 955) +4(969 984 985 970) +4(984 999 1000 985) +4(999 1014 1015 1000) +4(1014 1029 1030 1015) +4(51 955 956 52) +4(955 970 971 956) +4(970 985 986 971) +4(985 1000 1001 986) +4(1000 1015 1016 1001) +4(1015 1030 1031 1016) +4(52 956 957 53) +4(956 971 972 957) +4(971 986 987 972) +4(986 1001 1002 987) +4(1001 1016 1017 1002) +4(1016 1031 1032 1017) +4(53 957 958 54) +4(957 972 973 958) +4(972 987 988 973) +4(987 1002 1003 988) +4(1002 1017 1018 1003) +4(1017 1032 1033 1018) +4(54 958 959 55) +4(958 973 974 959) +4(973 988 989 974) +4(988 1003 1004 989) +4(1003 1018 1019 1004) +4(1018 1033 1034 1019) +4(55 959 960 56) +4(959 974 975 960) +4(974 989 990 975) +4(989 1004 1005 990) +4(1004 1019 1020 1005) +4(1019 1034 1035 1020) +4(56 960 961 57) +4(960 975 976 961) +4(975 990 991 976) +4(990 1005 1006 991) +4(1005 1020 1021 1006) +4(1020 1035 1036 1021) +4(57 961 962 58) +4(961 976 977 962) +4(976 991 992 977) +4(991 1006 1007 992) +4(1006 1021 1022 1007) +4(1021 1036 1037 1022) +4(58 962 963 59) +4(962 977 978 963) +4(977 992 993 978) +4(992 1007 1008 993) +4(1007 1022 1023 1008) +4(1022 1037 1038 1023) +4(59 963 964 60) +4(963 978 979 964) +4(978 993 994 979) +4(993 1008 1009 994) +4(1008 1023 1024 1009) +4(1023 1038 1039 1024) +4(60 964 965 61) +4(964 979 980 965) +4(979 994 995 980) +4(994 1009 1010 995) +4(1009 1024 1025 1010) +4(1024 1039 1040 1025) +4(61 965 966 62) +4(965 980 981 966) +4(980 995 996 981) +4(995 1010 1011 996) +4(1010 1025 1026 1011) +4(1025 1040 1041 1026) +4(62 966 532 63) +4(966 981 536 532) +4(981 996 540 536) +4(996 1011 544 540) +4(1011 1026 548 544) +4(1026 1041 552 548) +4(459 535 3955 727) +4(535 539 3964 3955) +4(539 543 3973 3964) +4(543 547 3982 3973) +4(547 551 3991 3982) +4(551 555 3115 3991) +4(727 3955 3956 728) +4(3955 3964 3965 3956) +4(3964 3973 3974 3965) +4(3973 3982 3983 3974) +4(3982 3991 3992 3983) +4(3991 3115 3116 3992) +4(728 3956 3957 729) +4(3956 3965 3966 3957) +4(3965 3974 3975 3966) +4(3974 3983 3984 3975) +4(3983 3992 3993 3984) +4(3992 3116 3117 3993) +4(729 3957 3958 730) +4(3957 3966 3967 3958) +4(3966 3975 3976 3967) +4(3975 3984 3985 3976) +4(3984 3993 3994 3985) +4(3993 3117 3118 3994) +4(730 3958 3959 731) +4(3958 3967 3968 3959) +4(3967 3976 3977 3968) +4(3976 3985 3986 3977) +4(3985 3994 3995 3986) +4(3994 3118 3119 3995) +4(731 3959 3960 732) +4(3959 3968 3969 3960) +4(3968 3977 3978 3969) +4(3977 3986 3987 3978) +4(3986 3995 3996 3987) +4(3995 3119 3120 3996) +4(732 3960 3961 733) +4(3960 3969 3970 3961) +4(3969 3978 3979 3970) +4(3978 3987 3988 3979) +4(3987 3996 3997 3988) +4(3996 3120 3121 3997) +4(733 3961 3962 734) +4(3961 3970 3971 3962) +4(3970 3979 3980 3971) +4(3979 3988 3989 3980) +4(3988 3997 3998 3989) +4(3997 3121 3122 3998) +4(734 3962 3963 735) +4(3962 3971 3972 3963) +4(3971 3980 3981 3972) +4(3980 3989 3990 3981) +4(3989 3998 3999 3990) +4(3998 3122 3123 3999) +4(1027 1582 1583 1028) +4(1582 1598 1599 1583) +4(1598 1614 1615 1599) +4(1614 1630 1631 1615) +4(1630 1646 1647 1631) +4(1646 1662 1663 1647) +4(1662 1678 1679 1663) +4(1678 1694 1695 1679) +4(1694 1710 1711 1695) +4(1028 1583 1584 1029) +4(1583 1599 1600 1584) +4(1599 1615 1616 1600) +4(1615 1631 1632 1616) +4(1631 1647 1648 1632) +4(1647 1663 1664 1648) +4(1663 1679 1680 1664) +4(1679 1695 1696 1680) +4(1695 1711 1712 1696) +4(1029 1584 1585 1030) +4(1584 1600 1601 1585) +4(1600 1616 1617 1601) +4(1616 1632 1633 1617) +4(1632 1648 1649 1633) +4(1648 1664 1665 1649) +4(1664 1680 1681 1665) +4(1680 1696 1697 1681) +4(1696 1712 1713 1697) +4(1030 1585 1586 1031) +4(1585 1601 1602 1586) +4(1601 1617 1618 1602) +4(1617 1633 1634 1618) +4(1633 1649 1650 1634) +4(1649 1665 1666 1650) +4(1665 1681 1682 1666) +4(1681 1697 1698 1682) +4(1697 1713 1714 1698) +4(1031 1586 1587 1032) +4(1586 1602 1603 1587) +4(1602 1618 1619 1603) +4(1618 1634 1635 1619) +4(1634 1650 1651 1635) +4(1650 1666 1667 1651) +4(1666 1682 1683 1667) +4(1682 1698 1699 1683) +4(1698 1714 1715 1699) +4(1032 1587 1588 1033) +4(1587 1603 1604 1588) +4(1603 1619 1620 1604) +4(1619 1635 1636 1620) +4(1635 1651 1652 1636) +4(1651 1667 1668 1652) +4(1667 1683 1684 1668) +4(1683 1699 1700 1684) +4(1699 1715 1716 1700) +4(1033 1588 1589 1034) +4(1588 1604 1605 1589) +4(1604 1620 1621 1605) +4(1620 1636 1637 1621) +4(1636 1652 1653 1637) +4(1652 1668 1669 1653) +4(1668 1684 1685 1669) +4(1684 1700 1701 1685) +4(1700 1716 1717 1701) +4(1034 1589 1590 1035) +4(1589 1605 1606 1590) +4(1605 1621 1622 1606) +4(1621 1637 1638 1622) +4(1637 1653 1654 1638) +4(1653 1669 1670 1654) +4(1669 1685 1686 1670) +4(1685 1701 1702 1686) +4(1701 1717 1718 1702) +4(1035 1590 1591 1036) +4(1590 1606 1607 1591) +4(1606 1622 1623 1607) +4(1622 1638 1639 1623) +4(1638 1654 1655 1639) +4(1654 1670 1671 1655) +4(1670 1686 1687 1671) +4(1686 1702 1703 1687) +4(1702 1718 1719 1703) +4(1036 1591 1592 1037) +4(1591 1607 1608 1592) +4(1607 1623 1624 1608) +4(1623 1639 1640 1624) +4(1639 1655 1656 1640) +4(1655 1671 1672 1656) +4(1671 1687 1688 1672) +4(1687 1703 1704 1688) +4(1703 1719 1720 1704) +4(1037 1592 1593 1038) +4(1592 1608 1609 1593) +4(1608 1624 1625 1609) +4(1624 1640 1641 1625) +4(1640 1656 1657 1641) +4(1656 1672 1673 1657) +4(1672 1688 1689 1673) +4(1688 1704 1705 1689) +4(1704 1720 1721 1705) +4(1038 1593 1594 1039) +4(1593 1609 1610 1594) +4(1609 1625 1626 1610) +4(1625 1641 1642 1626) +4(1641 1657 1658 1642) +4(1657 1673 1674 1658) +4(1673 1689 1690 1674) +4(1689 1705 1706 1690) +4(1705 1721 1722 1706) +4(1039 1594 1595 1040) +4(1594 1610 1611 1595) +4(1610 1626 1627 1611) +4(1626 1642 1643 1627) +4(1642 1658 1659 1643) +4(1658 1674 1675 1659) +4(1674 1690 1691 1675) +4(1690 1706 1707 1691) +4(1706 1722 1723 1707) +4(1040 1595 1596 1041) +4(1595 1611 1612 1596) +4(1611 1627 1628 1612) +4(1627 1643 1644 1628) +4(1643 1659 1660 1644) +4(1659 1675 1676 1660) +4(1675 1691 1692 1676) +4(1691 1707 1708 1692) +4(1707 1723 1724 1708) +4(1041 1596 1597 552) +4(1596 1612 1613 1597) +4(1612 1628 1629 1613) +4(1628 1644 1645 1629) +4(1644 1660 1661 1645) +4(1660 1676 1677 1661) +4(1676 1692 1693 1677) +4(1692 1708 1709 1693) +4(1708 1724 1725 1709) +4(555 2928 3124 3115) +4(2928 2931 3133 3124) +4(2931 2934 3142 3133) +4(2934 2937 3151 3142) +4(2937 2940 3160 3151) +4(2940 2943 3169 3160) +4(2943 2946 3178 3169) +4(2946 2949 3187 3178) +4(2949 2952 3196 3187) +4(3115 3124 3125 3116) +4(3124 3133 3134 3125) +4(3133 3142 3143 3134) +4(3142 3151 3152 3143) +4(3151 3160 3161 3152) +4(3160 3169 3170 3161) +4(3169 3178 3179 3170) +4(3178 3187 3188 3179) +4(3187 3196 3197 3188) +4(3116 3125 3126 3117) +4(3125 3134 3135 3126) +4(3134 3143 3144 3135) +4(3143 3152 3153 3144) +4(3152 3161 3162 3153) +4(3161 3170 3171 3162) +4(3170 3179 3180 3171) +4(3179 3188 3189 3180) +4(3188 3197 3198 3189) +4(3117 3126 3127 3118) +4(3126 3135 3136 3127) +4(3135 3144 3145 3136) +4(3144 3153 3154 3145) +4(3153 3162 3163 3154) +4(3162 3171 3172 3163) +4(3171 3180 3181 3172) +4(3180 3189 3190 3181) +4(3189 3198 3199 3190) +4(3118 3127 3128 3119) +4(3127 3136 3137 3128) +4(3136 3145 3146 3137) +4(3145 3154 3155 3146) +4(3154 3163 3164 3155) +4(3163 3172 3173 3164) +4(3172 3181 3182 3173) +4(3181 3190 3191 3182) +4(3190 3199 3200 3191) +4(3119 3128 3129 3120) +4(3128 3137 3138 3129) +4(3137 3146 3147 3138) +4(3146 3155 3156 3147) +4(3155 3164 3165 3156) +4(3164 3173 3174 3165) +4(3173 3182 3183 3174) +4(3182 3191 3192 3183) +4(3191 3200 3201 3192) +4(3120 3129 3130 3121) +4(3129 3138 3139 3130) +4(3138 3147 3148 3139) +4(3147 3156 3157 3148) +4(3156 3165 3166 3157) +4(3165 3174 3175 3166) +4(3174 3183 3184 3175) +4(3183 3192 3193 3184) +4(3192 3201 3202 3193) +4(3121 3130 3131 3122) +4(3130 3139 3140 3131) +4(3139 3148 3149 3140) +4(3148 3157 3158 3149) +4(3157 3166 3167 3158) +4(3166 3175 3176 3167) +4(3175 3184 3185 3176) +4(3184 3193 3194 3185) +4(3193 3202 3203 3194) +4(3122 3131 3132 3123) +4(3131 3140 3141 3132) +4(3140 3149 3150 3141) +4(3149 3158 3159 3150) +4(3158 3167 3168 3159) +4(3167 3176 3177 3168) +4(3176 3185 3186 3177) +4(3185 3194 3195 3186) +4(3194 3203 3204 3195) +4(552 1597 2926 553) +4(1597 1613 2929 2926) +4(1613 1629 2932 2929) +4(1629 1645 2935 2932) +4(1645 1661 2938 2935) +4(1661 1677 2941 2938) +4(1677 1693 2944 2941) +4(1693 1709 2947 2944) +4(1709 1725 2950 2947) +4(553 2926 2927 554) +4(2926 2929 2930 2927) +4(2929 2932 2933 2930) +4(2932 2935 2936 2933) +4(2935 2938 2939 2936) +4(2938 2941 2942 2939) +4(2941 2944 2945 2942) +4(2944 2947 2948 2945) +4(2947 2950 2951 2948) +4(554 2927 2928 555) +4(2927 2930 2931 2928) +4(2930 2933 2934 2931) +4(2933 2936 2937 2934) +4(2936 2939 2940 2937) +4(2939 2942 2943 2940) +4(2942 2945 2946 2943) +4(2945 2948 2949 2946) +4(2948 2951 2952 2949) +4(1710 2590 2591 1711) +4(2590 2606 2607 2591) +4(2606 2622 2623 2607) +4(1711 2591 2592 1712) +4(2591 2607 2608 2592) +4(2607 2623 2624 2608) +4(1712 2592 2593 1713) +4(2592 2608 2609 2593) +4(2608 2624 2625 2609) +4(1713 2593 2594 1714) +4(2593 2609 2610 2594) +4(2609 2625 2626 2610) +4(1714 2594 2595 1715) +4(2594 2610 2611 2595) +4(2610 2626 2627 2611) +4(1715 2595 2596 1716) +4(2595 2611 2612 2596) +4(2611 2627 2628 2612) +4(1716 2596 2597 1717) +4(2596 2612 2613 2597) +4(2612 2628 2629 2613) +4(1717 2597 2598 1718) +4(2597 2613 2614 2598) +4(2613 2629 2630 2614) +4(1718 2598 2599 1719) +4(2598 2614 2615 2599) +4(2614 2630 2631 2615) +4(1719 2599 2600 1720) +4(2599 2615 2616 2600) +4(2615 2631 2632 2616) +4(1720 2600 2601 1721) +4(2600 2616 2617 2601) +4(2616 2632 2633 2617) +4(1721 2601 2602 1722) +4(2601 2617 2618 2602) +4(2617 2633 2634 2618) +4(1722 2602 2603 1723) +4(2602 2618 2619 2603) +4(2618 2634 2635 2619) +4(1723 2603 2604 1724) +4(2603 2619 2620 2604) +4(2619 2635 2636 2620) +4(1724 2604 2605 1725) +4(2604 2620 2621 2605) +4(2620 2636 2637 2621) +4(2952 3745 3746 3196) +4(3745 3755 3756 3746) +4(3755 3765 3766 3756) +4(3196 3746 3747 3197) +4(3746 3756 3757 3747) +4(3756 3766 3767 3757) +4(3197 3747 3748 3198) +4(3747 3757 3758 3748) +4(3757 3767 3768 3758) +4(3198 3748 3749 3199) +4(3748 3758 3759 3749) +4(3758 3768 3769 3759) +4(3199 3749 3750 3200) +4(3749 3759 3760 3750) +4(3759 3769 3770 3760) +4(3200 3750 3751 3201) +4(3750 3760 3761 3751) +4(3760 3770 3771 3761) +4(3201 3751 3752 3202) +4(3751 3761 3762 3752) +4(3761 3771 3772 3762) +4(3202 3752 3753 3203) +4(3752 3762 3763 3753) +4(3762 3772 3773 3763) +4(3203 3753 3754 3204) +4(3753 3763 3764 3754) +4(3763 3773 3774 3764) +4(2622 4270 4271 2623) +4(4270 4286 4287 4271) +4(4286 4302 4303 4287) +4(2623 4271 4272 2624) +4(4271 4287 4288 4272) +4(4287 4303 4304 4288) +4(2624 4272 4273 2625) +4(4272 4288 4289 4273) +4(4288 4304 4305 4289) +4(2625 4273 4274 2626) +4(4273 4289 4290 4274) +4(4289 4305 4306 4290) +4(2626 4274 4275 2627) +4(4274 4290 4291 4275) +4(4290 4306 4307 4291) +4(2627 4275 4276 2628) +4(4275 4291 4292 4276) +4(4291 4307 4308 4292) +4(2628 4276 4277 2629) +4(4276 4292 4293 4277) +4(4292 4308 4309 4293) +4(2629 4277 4278 2630) +4(4277 4293 4294 4278) +4(4293 4309 4310 4294) +4(2630 4278 4279 2631) +4(4278 4294 4295 4279) +4(4294 4310 4311 4295) +4(2631 4279 4280 2632) +4(4279 4295 4296 4280) +4(4295 4311 4312 4296) +4(2632 4280 4281 2633) +4(4280 4296 4297 4281) +4(4296 4312 4313 4297) +4(2633 4281 4282 2634) +4(4281 4297 4298 4282) +4(4297 4313 4314 4298) +4(2634 4282 4283 2635) +4(4282 4298 4299 4283) +4(4298 4314 4315 4299) +4(2635 4283 4284 2636) +4(4283 4299 4300 4284) +4(4299 4315 4316 4300) +4(2636 4284 4285 2637) +4(4284 4300 4301 4285) +4(4300 4316 4317 4301) +4(3765 4610 4711 3766) +4(4610 4613 4720 4711) +4(4613 4616 4729 4720) +4(3766 4711 4712 3767) +4(4711 4720 4721 4712) +4(4720 4729 4730 4721) +4(3767 4712 4713 3768) +4(4712 4721 4722 4713) +4(4721 4730 4731 4722) +4(3768 4713 4714 3769) +4(4713 4722 4723 4714) +4(4722 4731 4732 4723) +4(3769 4714 4715 3770) +4(4714 4723 4724 4715) +4(4723 4732 4733 4724) +4(3770 4715 4716 3771) +4(4715 4724 4725 4716) +4(4724 4733 4734 4725) +4(3771 4716 4717 3772) +4(4716 4725 4726 4717) +4(4725 4734 4735 4726) +4(3772 4717 4718 3773) +4(4717 4726 4727 4718) +4(4726 4735 4736 4727) +4(3773 4718 4719 3774) +4(4718 4727 4728 4719) +4(4727 4736 4737 4728) +4(2637 4285 4608 4606) +4(4285 4301 4611 4608) +4(4301 4317 4614 4611) +4(4606 4608 4609 4607) +4(4608 4611 4612 4609) +4(4611 4614 4615 4612) +4(4607 4609 4610 3765) +4(4609 4612 4613 4610) +4(4612 4615 4616 4613) +4(1725 2605 4683 2950) +4(2605 2621 4685 4683) +4(2621 2637 4606 4685) +4(2950 4683 4684 2951) +4(4683 4685 4686 4684) +4(4685 4606 4607 4686) +4(2951 4684 3745 2952) +4(4684 4686 3755 3745) +4(4686 4607 3765 3755) +4(384 385 401 400) +4(400 401 417 416) +4(416 417 433 432) +4(385 386 402 401) +4(401 402 418 417) +4(417 418 434 433) +4(386 387 403 402) +4(402 403 419 418) +4(418 419 435 434) +4(387 388 404 403) +4(403 404 420 419) +4(419 420 436 435) +4(388 389 405 404) +4(404 405 421 420) +4(420 421 437 436) +4(389 390 406 405) +4(405 406 422 421) +4(421 422 438 437) +4(390 391 407 406) +4(406 407 423 422) +4(422 423 439 438) +4(391 392 408 407) +4(407 408 424 423) +4(423 424 440 439) +4(392 393 409 408) +4(408 409 425 424) +4(424 425 441 440) +4(393 394 410 409) +4(409 410 426 425) +4(425 426 442 441) +4(394 395 411 410) +4(410 411 427 426) +4(426 427 443 442) +4(395 396 412 411) +4(411 412 428 427) +4(427 428 444 443) +4(396 397 413 412) +4(412 413 429 428) +4(428 429 445 444) +4(397 398 414 413) +4(413 414 430 429) +4(429 430 446 445) +4(398 399 415 414) +4(414 415 431 430) +4(430 431 447 446) +4(399 520 523 415) +4(415 523 526 431) +4(431 526 529 447) +4(520 521 524 523) +4(523 524 527 526) +4(526 527 530 529) +4(521 522 525 524) +4(524 525 528 527) +4(527 528 531 530) +4(522 916 925 525) +4(525 925 934 528) +4(528 934 943 531) +4(916 917 926 925) +4(925 926 935 934) +4(934 935 944 943) +4(917 918 927 926) +4(926 927 936 935) +4(935 936 945 944) +4(918 919 928 927) +4(927 928 937 936) +4(936 937 946 945) +4(919 920 929 928) +4(928 929 938 937) +4(937 938 947 946) +4(920 921 930 929) +4(929 930 939 938) +4(938 939 948 947) +4(921 922 931 930) +4(930 931 940 939) +4(939 940 949 948) +4(922 923 932 931) +4(931 932 941 940) +4(940 941 950 949) +4(923 924 933 932) +4(932 933 942 941) +4(941 942 951 950) +4(447 529 677 676) +4(676 677 681 680) +4(680 681 685 684) +4(684 685 689 688) +4(688 689 693 692) +4(692 693 697 696) +4(529 530 678 677) +4(677 678 682 681) +4(681 682 686 685) +4(685 686 690 689) +4(689 690 694 693) +4(693 694 698 697) +4(530 531 679 678) +4(678 679 683 682) +4(682 683 687 686) +4(686 687 691 690) +4(690 691 695 694) +4(694 695 699 698) +4(432 433 1493 1492) +4(1492 1493 1508 1507) +4(1507 1508 1523 1522) +4(1522 1523 1538 1537) +4(1537 1538 1553 1552) +4(1552 1553 1568 1567) +4(433 434 1494 1493) +4(1493 1494 1509 1508) +4(1508 1509 1524 1523) +4(1523 1524 1539 1538) +4(1538 1539 1554 1553) +4(1553 1554 1569 1568) +4(434 435 1495 1494) +4(1494 1495 1510 1509) +4(1509 1510 1525 1524) +4(1524 1525 1540 1539) +4(1539 1540 1555 1554) +4(1554 1555 1570 1569) +4(435 436 1496 1495) +4(1495 1496 1511 1510) +4(1510 1511 1526 1525) +4(1525 1526 1541 1540) +4(1540 1541 1556 1555) +4(1555 1556 1571 1570) +4(436 437 1497 1496) +4(1496 1497 1512 1511) +4(1511 1512 1527 1526) +4(1526 1527 1542 1541) +4(1541 1542 1557 1556) +4(1556 1557 1572 1571) +4(437 438 1498 1497) +4(1497 1498 1513 1512) +4(1512 1513 1528 1527) +4(1527 1528 1543 1542) +4(1542 1543 1558 1557) +4(1557 1558 1573 1572) +4(438 439 1499 1498) +4(1498 1499 1514 1513) +4(1513 1514 1529 1528) +4(1528 1529 1544 1543) +4(1543 1544 1559 1558) +4(1558 1559 1574 1573) +4(439 440 1500 1499) +4(1499 1500 1515 1514) +4(1514 1515 1530 1529) +4(1529 1530 1545 1544) +4(1544 1545 1560 1559) +4(1559 1560 1575 1574) +4(440 441 1501 1500) +4(1500 1501 1516 1515) +4(1515 1516 1531 1530) +4(1530 1531 1546 1545) +4(1545 1546 1561 1560) +4(1560 1561 1576 1575) +4(441 442 1502 1501) +4(1501 1502 1517 1516) +4(1516 1517 1532 1531) +4(1531 1532 1547 1546) +4(1546 1547 1562 1561) +4(1561 1562 1577 1576) +4(442 443 1503 1502) +4(1502 1503 1518 1517) +4(1517 1518 1533 1532) +4(1532 1533 1548 1547) +4(1547 1548 1563 1562) +4(1562 1563 1578 1577) +4(443 444 1504 1503) +4(1503 1504 1519 1518) +4(1518 1519 1534 1533) +4(1533 1534 1549 1548) +4(1548 1549 1564 1563) +4(1563 1564 1579 1578) +4(444 445 1505 1504) +4(1504 1505 1520 1519) +4(1519 1520 1535 1534) +4(1534 1535 1550 1549) +4(1549 1550 1565 1564) +4(1564 1565 1580 1579) +4(445 446 1506 1505) +4(1505 1506 1521 1520) +4(1520 1521 1536 1535) +4(1535 1536 1551 1550) +4(1550 1551 1566 1565) +4(1565 1566 1581 1580) +4(446 447 676 1506) +4(1506 676 680 1521) +4(1521 680 684 1536) +4(1536 684 688 1551) +4(1551 688 692 1566) +4(1566 692 696 1581) +4(531 943 4225 679) +4(679 4225 4234 683) +4(683 4234 4243 687) +4(687 4243 4252 691) +4(691 4252 4261 695) +4(695 4261 3655 699) +4(943 944 4226 4225) +4(4225 4226 4235 4234) +4(4234 4235 4244 4243) +4(4243 4244 4253 4252) +4(4252 4253 4262 4261) +4(4261 4262 3656 3655) +4(944 945 4227 4226) +4(4226 4227 4236 4235) +4(4235 4236 4245 4244) +4(4244 4245 4254 4253) +4(4253 4254 4263 4262) +4(4262 4263 3657 3656) +4(945 946 4228 4227) +4(4227 4228 4237 4236) +4(4236 4237 4246 4245) +4(4245 4246 4255 4254) +4(4254 4255 4264 4263) +4(4263 4264 3658 3657) +4(946 947 4229 4228) +4(4228 4229 4238 4237) +4(4237 4238 4247 4246) +4(4246 4247 4256 4255) +4(4255 4256 4265 4264) +4(4264 4265 3659 3658) +4(947 948 4230 4229) +4(4229 4230 4239 4238) +4(4238 4239 4248 4247) +4(4247 4248 4257 4256) +4(4256 4257 4266 4265) +4(4265 4266 3660 3659) +4(948 949 4231 4230) +4(4230 4231 4240 4239) +4(4239 4240 4249 4248) +4(4248 4249 4258 4257) +4(4257 4258 4267 4266) +4(4266 4267 3661 3660) +4(949 950 4232 4231) +4(4231 4232 4241 4240) +4(4240 4241 4250 4249) +4(4249 4250 4259 4258) +4(4258 4259 4268 4267) +4(4267 4268 3662 3661) +4(950 951 4233 4232) +4(4232 4233 4242 4241) +4(4241 4242 4251 4250) +4(4250 4251 4260 4259) +4(4259 4260 4269 4268) +4(4268 4269 3663 3662) +4(1567 1568 2447 2446) +4(2446 2447 2463 2462) +4(2462 2463 2479 2478) +4(2478 2479 2495 2494) +4(2494 2495 2511 2510) +4(2510 2511 2527 2526) +4(2526 2527 2543 2542) +4(2542 2543 2559 2558) +4(2558 2559 2575 2574) +4(1568 1569 2448 2447) +4(2447 2448 2464 2463) +4(2463 2464 2480 2479) +4(2479 2480 2496 2495) +4(2495 2496 2512 2511) +4(2511 2512 2528 2527) +4(2527 2528 2544 2543) +4(2543 2544 2560 2559) +4(2559 2560 2576 2575) +4(1569 1570 2449 2448) +4(2448 2449 2465 2464) +4(2464 2465 2481 2480) +4(2480 2481 2497 2496) +4(2496 2497 2513 2512) +4(2512 2513 2529 2528) +4(2528 2529 2545 2544) +4(2544 2545 2561 2560) +4(2560 2561 2577 2576) +4(1570 1571 2450 2449) +4(2449 2450 2466 2465) +4(2465 2466 2482 2481) +4(2481 2482 2498 2497) +4(2497 2498 2514 2513) +4(2513 2514 2530 2529) +4(2529 2530 2546 2545) +4(2545 2546 2562 2561) +4(2561 2562 2578 2577) +4(1571 1572 2451 2450) +4(2450 2451 2467 2466) +4(2466 2467 2483 2482) +4(2482 2483 2499 2498) +4(2498 2499 2515 2514) +4(2514 2515 2531 2530) +4(2530 2531 2547 2546) +4(2546 2547 2563 2562) +4(2562 2563 2579 2578) +4(1572 1573 2452 2451) +4(2451 2452 2468 2467) +4(2467 2468 2484 2483) +4(2483 2484 2500 2499) +4(2499 2500 2516 2515) +4(2515 2516 2532 2531) +4(2531 2532 2548 2547) +4(2547 2548 2564 2563) +4(2563 2564 2580 2579) +4(1573 1574 2453 2452) +4(2452 2453 2469 2468) +4(2468 2469 2485 2484) +4(2484 2485 2501 2500) +4(2500 2501 2517 2516) +4(2516 2517 2533 2532) +4(2532 2533 2549 2548) +4(2548 2549 2565 2564) +4(2564 2565 2581 2580) +4(1574 1575 2454 2453) +4(2453 2454 2470 2469) +4(2469 2470 2486 2485) +4(2485 2486 2502 2501) +4(2501 2502 2518 2517) +4(2517 2518 2534 2533) +4(2533 2534 2550 2549) +4(2549 2550 2566 2565) +4(2565 2566 2582 2581) +4(1575 1576 2455 2454) +4(2454 2455 2471 2470) +4(2470 2471 2487 2486) +4(2486 2487 2503 2502) +4(2502 2503 2519 2518) +4(2518 2519 2535 2534) +4(2534 2535 2551 2550) +4(2550 2551 2567 2566) +4(2566 2567 2583 2582) +4(1576 1577 2456 2455) +4(2455 2456 2472 2471) +4(2471 2472 2488 2487) +4(2487 2488 2504 2503) +4(2503 2504 2520 2519) +4(2519 2520 2536 2535) +4(2535 2536 2552 2551) +4(2551 2552 2568 2567) +4(2567 2568 2584 2583) +4(1577 1578 2457 2456) +4(2456 2457 2473 2472) +4(2472 2473 2489 2488) +4(2488 2489 2505 2504) +4(2504 2505 2521 2520) +4(2520 2521 2537 2536) +4(2536 2537 2553 2552) +4(2552 2553 2569 2568) +4(2568 2569 2585 2584) +4(1578 1579 2458 2457) +4(2457 2458 2474 2473) +4(2473 2474 2490 2489) +4(2489 2490 2506 2505) +4(2505 2506 2522 2521) +4(2521 2522 2538 2537) +4(2537 2538 2554 2553) +4(2553 2554 2570 2569) +4(2569 2570 2586 2585) +4(1579 1580 2459 2458) +4(2458 2459 2475 2474) +4(2474 2475 2491 2490) +4(2490 2491 2507 2506) +4(2506 2507 2523 2522) +4(2522 2523 2539 2538) +4(2538 2539 2555 2554) +4(2554 2555 2571 2570) +4(2570 2571 2587 2586) +4(1580 1581 2460 2459) +4(2459 2460 2476 2475) +4(2475 2476 2492 2491) +4(2491 2492 2508 2507) +4(2507 2508 2524 2523) +4(2523 2524 2540 2539) +4(2539 2540 2556 2555) +4(2555 2556 2572 2571) +4(2571 2572 2588 2587) +4(1581 696 2461 2460) +4(2460 2461 2477 2476) +4(2476 2477 2493 2492) +4(2492 2493 2509 2508) +4(2508 2509 2525 2524) +4(2524 2525 2541 2540) +4(2540 2541 2557 2556) +4(2556 2557 2573 2572) +4(2572 2573 2589 2588) +4(699 3655 3664 3090) +4(3090 3664 3673 3093) +4(3093 3673 3682 3096) +4(3096 3682 3691 3099) +4(3099 3691 3700 3102) +4(3102 3700 3709 3105) +4(3105 3709 3718 3108) +4(3108 3718 3727 3111) +4(3111 3727 3736 3114) +4(3655 3656 3665 3664) +4(3664 3665 3674 3673) +4(3673 3674 3683 3682) +4(3682 3683 3692 3691) +4(3691 3692 3701 3700) +4(3700 3701 3710 3709) +4(3709 3710 3719 3718) +4(3718 3719 3728 3727) +4(3727 3728 3737 3736) +4(3656 3657 3666 3665) +4(3665 3666 3675 3674) +4(3674 3675 3684 3683) +4(3683 3684 3693 3692) +4(3692 3693 3702 3701) +4(3701 3702 3711 3710) +4(3710 3711 3720 3719) +4(3719 3720 3729 3728) +4(3728 3729 3738 3737) +4(3657 3658 3667 3666) +4(3666 3667 3676 3675) +4(3675 3676 3685 3684) +4(3684 3685 3694 3693) +4(3693 3694 3703 3702) +4(3702 3703 3712 3711) +4(3711 3712 3721 3720) +4(3720 3721 3730 3729) +4(3729 3730 3739 3738) +4(3658 3659 3668 3667) +4(3667 3668 3677 3676) +4(3676 3677 3686 3685) +4(3685 3686 3695 3694) +4(3694 3695 3704 3703) +4(3703 3704 3713 3712) +4(3712 3713 3722 3721) +4(3721 3722 3731 3730) +4(3730 3731 3740 3739) +4(3659 3660 3669 3668) +4(3668 3669 3678 3677) +4(3677 3678 3687 3686) +4(3686 3687 3696 3695) +4(3695 3696 3705 3704) +4(3704 3705 3714 3713) +4(3713 3714 3723 3722) +4(3722 3723 3732 3731) +4(3731 3732 3741 3740) +4(3660 3661 3670 3669) +4(3669 3670 3679 3678) +4(3678 3679 3688 3687) +4(3687 3688 3697 3696) +4(3696 3697 3706 3705) +4(3705 3706 3715 3714) +4(3714 3715 3724 3723) +4(3723 3724 3733 3732) +4(3732 3733 3742 3741) +4(3661 3662 3671 3670) +4(3670 3671 3680 3679) +4(3679 3680 3689 3688) +4(3688 3689 3698 3697) +4(3697 3698 3707 3706) +4(3706 3707 3716 3715) +4(3715 3716 3725 3724) +4(3724 3725 3734 3733) +4(3733 3734 3743 3742) +4(3662 3663 3672 3671) +4(3671 3672 3681 3680) +4(3680 3681 3690 3689) +4(3689 3690 3699 3698) +4(3698 3699 3708 3707) +4(3707 3708 3717 3716) +4(3716 3717 3726 3725) +4(3725 3726 3735 3734) +4(3734 3735 3744 3743) +4(696 697 3088 2461) +4(2461 3088 3091 2477) +4(2477 3091 3094 2493) +4(2493 3094 3097 2509) +4(2509 3097 3100 2525) +4(2525 3100 3103 2541) +4(2541 3103 3106 2557) +4(2557 3106 3109 2573) +4(2573 3109 3112 2589) +4(697 698 3089 3088) +4(3088 3089 3092 3091) +4(3091 3092 3095 3094) +4(3094 3095 3098 3097) +4(3097 3098 3101 3100) +4(3100 3101 3104 3103) +4(3103 3104 3107 3106) +4(3106 3107 3110 3109) +4(3109 3110 3113 3112) +4(698 699 3090 3089) +4(3089 3090 3093 3092) +4(3092 3093 3096 3095) +4(3095 3096 3099 3098) +4(3098 3099 3102 3101) +4(3101 3102 3105 3104) +4(3104 3105 3108 3107) +4(3107 3108 3111 3110) +4(3110 3111 3114 3113) +4(2574 2575 2879 2878) +4(2878 2879 2895 2894) +4(2894 2895 2911 2910) +4(2575 2576 2880 2879) +4(2879 2880 2896 2895) +4(2895 2896 2912 2911) +4(2576 2577 2881 2880) +4(2880 2881 2897 2896) +4(2896 2897 2913 2912) +4(2577 2578 2882 2881) +4(2881 2882 2898 2897) +4(2897 2898 2914 2913) +4(2578 2579 2883 2882) +4(2882 2883 2899 2898) +4(2898 2899 2915 2914) +4(2579 2580 2884 2883) +4(2883 2884 2900 2899) +4(2899 2900 2916 2915) +4(2580 2581 2885 2884) +4(2884 2885 2901 2900) +4(2900 2901 2917 2916) +4(2581 2582 2886 2885) +4(2885 2886 2902 2901) +4(2901 2902 2918 2917) +4(2582 2583 2887 2886) +4(2886 2887 2903 2902) +4(2902 2903 2919 2918) +4(2583 2584 2888 2887) +4(2887 2888 2904 2903) +4(2903 2904 2920 2919) +4(2584 2585 2889 2888) +4(2888 2889 2905 2904) +4(2904 2905 2921 2920) +4(2585 2586 2890 2889) +4(2889 2890 2906 2905) +4(2905 2906 2922 2921) +4(2586 2587 2891 2890) +4(2890 2891 2907 2906) +4(2906 2907 2923 2922) +4(2587 2588 2892 2891) +4(2891 2892 2908 2907) +4(2907 2908 2924 2923) +4(2588 2589 2893 2892) +4(2892 2893 2909 2908) +4(2908 2909 2925 2924) +4(3114 3736 3926 3925) +4(3925 3926 3936 3935) +4(3935 3936 3946 3945) +4(3736 3737 3927 3926) +4(3926 3927 3937 3936) +4(3936 3937 3947 3946) +4(3737 3738 3928 3927) +4(3927 3928 3938 3937) +4(3937 3938 3948 3947) +4(3738 3739 3929 3928) +4(3928 3929 3939 3938) +4(3938 3939 3949 3948) +4(3739 3740 3930 3929) +4(3929 3930 3940 3939) +4(3939 3940 3950 3949) +4(3740 3741 3931 3930) +4(3930 3931 3941 3940) +4(3940 3941 3951 3950) +4(3741 3742 3932 3931) +4(3931 3932 3942 3941) +4(3941 3942 3952 3951) +4(3742 3743 3933 3932) +4(3932 3933 3943 3942) +4(3942 3943 3953 3952) +4(3743 3744 3934 3933) +4(3933 3934 3944 3943) +4(3943 3944 3954 3953) +4(2910 2911 4559 4558) +4(4558 4559 4575 4574) +4(4574 4575 4591 4590) +4(2911 2912 4560 4559) +4(4559 4560 4576 4575) +4(4575 4576 4592 4591) +4(2912 2913 4561 4560) +4(4560 4561 4577 4576) +4(4576 4577 4593 4592) +4(2913 2914 4562 4561) +4(4561 4562 4578 4577) +4(4577 4578 4594 4593) +4(2914 2915 4563 4562) +4(4562 4563 4579 4578) +4(4578 4579 4595 4594) +4(2915 2916 4564 4563) +4(4563 4564 4580 4579) +4(4579 4580 4596 4595) +4(2916 2917 4565 4564) +4(4564 4565 4581 4580) +4(4580 4581 4597 4596) +4(2917 2918 4566 4565) +4(4565 4566 4582 4581) +4(4581 4582 4598 4597) +4(2918 2919 4567 4566) +4(4566 4567 4583 4582) +4(4582 4583 4599 4598) +4(2919 2920 4568 4567) +4(4567 4568 4584 4583) +4(4583 4584 4600 4599) +4(2920 2921 4569 4568) +4(4568 4569 4585 4584) +4(4584 4585 4601 4600) +4(2921 2922 4570 4569) +4(4569 4570 4586 4585) +4(4585 4586 4602 4601) +4(2922 2923 4571 4570) +4(4570 4571 4587 4586) +4(4586 4587 4603 4602) +4(2923 2924 4572 4571) +4(4571 4572 4588 4587) +4(4587 4588 4604 4603) +4(2924 2925 4573 4572) +4(4572 4573 4589 4588) +4(4588 4589 4605 4604) +4(3945 3946 4873 4676) +4(4676 4873 4882 4679) +4(4679 4882 4891 4682) +4(3946 3947 4874 4873) +4(4873 4874 4883 4882) +4(4882 4883 4892 4891) +4(3947 3948 4875 4874) +4(4874 4875 4884 4883) +4(4883 4884 4893 4892) +4(3948 3949 4876 4875) +4(4875 4876 4885 4884) +4(4884 4885 4894 4893) +4(3949 3950 4877 4876) +4(4876 4877 4886 4885) +4(4885 4886 4895 4894) +4(3950 3951 4878 4877) +4(4877 4878 4887 4886) +4(4886 4887 4896 4895) +4(3951 3952 4879 4878) +4(4878 4879 4888 4887) +4(4887 4888 4897 4896) +4(3952 3953 4880 4879) +4(4879 4880 4889 4888) +4(4888 4889 4898 4897) +4(3953 3954 4881 4880) +4(4880 4881 4890 4889) +4(4889 4890 4899 4898) +4(2925 4672 4674 4573) +4(4573 4674 4677 4589) +4(4589 4677 4680 4605) +4(4672 4673 4675 4674) +4(4674 4675 4678 4677) +4(4677 4678 4681 4680) +4(4673 3945 4676 4675) +4(4675 4676 4679 4678) +4(4678 4679 4682 4681) +4(2589 3112 4707 2893) +4(2893 4707 4709 2909) +4(2909 4709 4672 2925) +4(3112 3113 4708 4707) +4(4707 4708 4710 4709) +4(4709 4710 4673 4672) +4(3113 3114 3925 4708) +4(4708 3925 3935 4710) +4(4710 3935 3945 4673) +4(0 1 65 64) +4(64 65 129 128) +4(128 129 193 192) +4(192 193 257 256) +4(256 257 321 320) +4(320 321 385 384) +4(1 2 66 65) +4(65 66 130 129) +4(129 130 194 193) +4(193 194 258 257) +4(257 258 322 321) +4(321 322 386 385) +4(2 3 67 66) +4(66 67 131 130) +4(130 131 195 194) +4(194 195 259 258) +4(258 259 323 322) +4(322 323 387 386) +4(3 4 68 67) +4(67 68 132 131) +4(131 132 196 195) +4(195 196 260 259) +4(259 260 324 323) +4(323 324 388 387) +4(4 5 69 68) +4(68 69 133 132) +4(132 133 197 196) +4(196 197 261 260) +4(260 261 325 324) +4(324 325 389 388) +4(5 6 70 69) +4(69 70 134 133) +4(133 134 198 197) +4(197 198 262 261) +4(261 262 326 325) +4(325 326 390 389) +4(6 7 71 70) +4(70 71 135 134) +4(134 135 199 198) +4(198 199 263 262) +4(262 263 327 326) +4(326 327 391 390) +4(7 8 72 71) +4(71 72 136 135) +4(135 136 200 199) +4(199 200 264 263) +4(263 264 328 327) +4(327 328 392 391) +4(8 9 73 72) +4(72 73 137 136) +4(136 137 201 200) +4(200 201 265 264) +4(264 265 329 328) +4(328 329 393 392) +4(9 10 74 73) +4(73 74 138 137) +4(137 138 202 201) +4(201 202 266 265) +4(265 266 330 329) +4(329 330 394 393) +4(10 11 75 74) +4(74 75 139 138) +4(138 139 203 202) +4(202 203 267 266) +4(266 267 331 330) +4(330 331 395 394) +4(11 12 76 75) +4(75 76 140 139) +4(139 140 204 203) +4(203 204 268 267) +4(267 268 332 331) +4(331 332 396 395) +4(12 13 77 76) +4(76 77 141 140) +4(140 141 205 204) +4(204 205 269 268) +4(268 269 333 332) +4(332 333 397 396) +4(13 14 78 77) +4(77 78 142 141) +4(141 142 206 205) +4(205 206 270 269) +4(269 270 334 333) +4(333 334 398 397) +4(14 15 79 78) +4(78 79 143 142) +4(142 143 207 206) +4(206 207 271 270) +4(270 271 335 334) +4(334 335 399 398) +4(15 448 460 79) +4(79 460 472 143) +4(143 472 484 207) +4(207 484 496 271) +4(271 496 508 335) +4(335 508 520 399) +4(448 449 461 460) +4(460 461 473 472) +4(472 473 485 484) +4(484 485 497 496) +4(496 497 509 508) +4(508 509 521 520) +4(449 450 462 461) +4(461 462 474 473) +4(473 474 486 485) +4(485 486 498 497) +4(497 498 510 509) +4(509 510 522 521) +4(450 700 736 462) +4(462 736 772 474) +4(474 772 808 486) +4(486 808 844 498) +4(498 844 880 510) +4(510 880 916 522) +4(700 701 737 736) +4(736 737 773 772) +4(772 773 809 808) +4(808 809 845 844) +4(844 845 881 880) +4(880 881 917 916) +4(701 702 738 737) +4(737 738 774 773) +4(773 774 810 809) +4(809 810 846 845) +4(845 846 882 881) +4(881 882 918 917) +4(702 703 739 738) +4(738 739 775 774) +4(774 775 811 810) +4(810 811 847 846) +4(846 847 883 882) +4(882 883 919 918) +4(703 704 740 739) +4(739 740 776 775) +4(775 776 812 811) +4(811 812 848 847) +4(847 848 884 883) +4(883 884 920 919) +4(704 705 741 740) +4(740 741 777 776) +4(776 777 813 812) +4(812 813 849 848) +4(848 849 885 884) +4(884 885 921 920) +4(705 706 742 741) +4(741 742 778 777) +4(777 778 814 813) +4(813 814 850 849) +4(849 850 886 885) +4(885 886 922 921) +4(706 707 743 742) +4(742 743 779 778) +4(778 779 815 814) +4(814 815 851 850) +4(850 851 887 886) +4(886 887 923 922) +4(707 708 744 743) +4(743 744 780 779) +4(779 780 816 815) +4(815 816 852 851) +4(851 852 888 887) +4(887 888 924 923) +4(4302 4350 4351 4303) +4(4350 4398 4399 4351) +4(4398 4446 4447 4399) +4(4446 4494 4495 4447) +4(4494 4542 4543 4495) +4(4542 4590 4591 4543) +4(4303 4351 4352 4304) +4(4351 4399 4400 4352) +4(4399 4447 4448 4400) +4(4447 4495 4496 4448) +4(4495 4543 4544 4496) +4(4543 4591 4592 4544) +4(4304 4352 4353 4305) +4(4352 4400 4401 4353) +4(4400 4448 4449 4401) +4(4448 4496 4497 4449) +4(4496 4544 4545 4497) +4(4544 4592 4593 4545) +4(4305 4353 4354 4306) +4(4353 4401 4402 4354) +4(4401 4449 4450 4402) +4(4449 4497 4498 4450) +4(4497 4545 4546 4498) +4(4545 4593 4594 4546) +4(4306 4354 4355 4307) +4(4354 4402 4403 4355) +4(4402 4450 4451 4403) +4(4450 4498 4499 4451) +4(4498 4546 4547 4499) +4(4546 4594 4595 4547) +4(4307 4355 4356 4308) +4(4355 4403 4404 4356) +4(4403 4451 4452 4404) +4(4451 4499 4500 4452) +4(4499 4547 4548 4500) +4(4547 4595 4596 4548) +4(4308 4356 4357 4309) +4(4356 4404 4405 4357) +4(4404 4452 4453 4405) +4(4452 4500 4501 4453) +4(4500 4548 4549 4501) +4(4548 4596 4597 4549) +4(4309 4357 4358 4310) +4(4357 4405 4406 4358) +4(4405 4453 4454 4406) +4(4453 4501 4502 4454) +4(4501 4549 4550 4502) +4(4549 4597 4598 4550) +4(4310 4358 4359 4311) +4(4358 4406 4407 4359) +4(4406 4454 4455 4407) +4(4454 4502 4503 4455) +4(4502 4550 4551 4503) +4(4550 4598 4599 4551) +4(4311 4359 4360 4312) +4(4359 4407 4408 4360) +4(4407 4455 4456 4408) +4(4455 4503 4504 4456) +4(4503 4551 4552 4504) +4(4551 4599 4600 4552) +4(4312 4360 4361 4313) +4(4360 4408 4409 4361) +4(4408 4456 4457 4409) +4(4456 4504 4505 4457) +4(4504 4552 4553 4505) +4(4552 4600 4601 4553) +4(4313 4361 4362 4314) +4(4361 4409 4410 4362) +4(4409 4457 4458 4410) +4(4457 4505 4506 4458) +4(4505 4553 4554 4506) +4(4553 4601 4602 4554) +4(4314 4362 4363 4315) +4(4362 4410 4411 4363) +4(4410 4458 4459 4411) +4(4458 4506 4507 4459) +4(4506 4554 4555 4507) +4(4554 4602 4603 4555) +4(4315 4363 4364 4316) +4(4363 4411 4412 4364) +4(4411 4459 4460 4412) +4(4459 4507 4508 4460) +4(4507 4555 4556 4508) +4(4555 4603 4604 4556) +4(4316 4364 4365 4317) +4(4364 4412 4413 4365) +4(4412 4460 4461 4413) +4(4460 4508 4509 4461) +4(4508 4556 4557 4509) +4(4556 4604 4605 4557) +4(4616 4627 4756 4729) +4(4627 4638 4783 4756) +4(4638 4649 4810 4783) +4(4649 4660 4837 4810) +4(4660 4671 4864 4837) +4(4671 4682 4891 4864) +4(4729 4756 4757 4730) +4(4756 4783 4784 4757) +4(4783 4810 4811 4784) +4(4810 4837 4838 4811) +4(4837 4864 4865 4838) +4(4864 4891 4892 4865) +4(4730 4757 4758 4731) +4(4757 4784 4785 4758) +4(4784 4811 4812 4785) +4(4811 4838 4839 4812) +4(4838 4865 4866 4839) +4(4865 4892 4893 4866) +4(4731 4758 4759 4732) +4(4758 4785 4786 4759) +4(4785 4812 4813 4786) +4(4812 4839 4840 4813) +4(4839 4866 4867 4840) +4(4866 4893 4894 4867) +4(4732 4759 4760 4733) +4(4759 4786 4787 4760) +4(4786 4813 4814 4787) +4(4813 4840 4841 4814) +4(4840 4867 4868 4841) +4(4867 4894 4895 4868) +4(4733 4760 4761 4734) +4(4760 4787 4788 4761) +4(4787 4814 4815 4788) +4(4814 4841 4842 4815) +4(4841 4868 4869 4842) +4(4868 4895 4896 4869) +4(4734 4761 4762 4735) +4(4761 4788 4789 4762) +4(4788 4815 4816 4789) +4(4815 4842 4843 4816) +4(4842 4869 4870 4843) +4(4869 4896 4897 4870) +4(4735 4762 4763 4736) +4(4762 4789 4790 4763) +4(4789 4816 4817 4790) +4(4816 4843 4844 4817) +4(4843 4870 4871 4844) +4(4870 4897 4898 4871) +4(4736 4763 4764 4737) +4(4763 4790 4791 4764) +4(4790 4817 4818 4791) +4(4817 4844 4845 4818) +4(4844 4871 4872 4845) +4(4871 4898 4899 4872) +4(4317 4365 4625 4614) +4(4365 4413 4636 4625) +4(4413 4461 4647 4636) +4(4461 4509 4658 4647) +4(4509 4557 4669 4658) +4(4557 4605 4680 4669) +4(4614 4625 4626 4615) +4(4625 4636 4637 4626) +4(4636 4647 4648 4637) +4(4647 4658 4659 4648) +4(4658 4669 4670 4659) +4(4669 4680 4681 4670) +4(4615 4626 4627 4616) +4(4626 4637 4638 4627) +4(4637 4648 4649 4638) +4(4648 4659 4660 4649) +4(4659 4670 4671 4660) +4(4670 4681 4682 4671) +) + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/neighbour b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/neighbour new file mode 100644 index 0000000000000000000000000000000000000000..7369bab536991ce17228dd88aa931dce419f53f2 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/neighbour @@ -0,0 +1,10735 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4900 nCells: 3888 nFaces: 12618 nInternalFaces: 10710"; + location "constant/polyMesh"; + object neighbour; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +10710 +( +1 +15 +45 +2 +16 +46 +3 +17 +47 +4 +18 +48 +5 +19 +49 +6 +20 +50 +7 +21 +51 +8 +22 +52 +9 +23 +53 +10 +24 +54 +11 +25 +55 +12 +26 +56 +13 +27 +57 +14 +28 +58 +29 +59 +270 +16 +30 +60 +17 +31 +61 +18 +32 +62 +19 +33 +63 +20 +34 +64 +21 +35 +65 +22 +36 +66 +23 +37 +67 +24 +38 +68 +25 +39 +69 +26 +40 +70 +27 +41 +71 +28 +42 +72 +29 +43 +73 +44 +74 +273 +31 +75 +594 +32 +76 +595 +33 +77 +596 +34 +78 +597 +35 +79 +598 +36 +80 +599 +37 +81 +600 +38 +82 +601 +39 +83 +602 +40 +84 +603 +41 +85 +604 +42 +86 +605 +43 +87 +606 +44 +88 +607 +89 +276 +608 +46 +60 +90 +47 +61 +91 +48 +62 +92 +49 +63 +93 +50 +64 +94 +51 +65 +95 +52 +66 +96 +53 +67 +97 +54 +68 +98 +55 +69 +99 +56 +70 +100 +57 +71 +101 +58 +72 +102 +59 +73 +103 +74 +104 +279 +61 +75 +105 +62 +76 +106 +63 +77 +107 +64 +78 +108 +65 +79 +109 +66 +80 +110 +67 +81 +111 +68 +82 +112 +69 +83 +113 +70 +84 +114 +71 +85 +115 +72 +86 +116 +73 +87 +117 +74 +88 +118 +89 +119 +282 +76 +120 +684 +77 +121 +685 +78 +122 +686 +79 +123 +687 +80 +124 +688 +81 +125 +689 +82 +126 +690 +83 +127 +691 +84 +128 +692 +85 +129 +693 +86 +130 +694 +87 +131 +695 +88 +132 +696 +89 +133 +697 +134 +285 +698 +91 +105 +135 +92 +106 +136 +93 +107 +137 +94 +108 +138 +95 +109 +139 +96 +110 +140 +97 +111 +141 +98 +112 +142 +99 +113 +143 +100 +114 +144 +101 +115 +145 +102 +116 +146 +103 +117 +147 +104 +118 +148 +119 +149 +288 +106 +120 +150 +107 +121 +151 +108 +122 +152 +109 +123 +153 +110 +124 +154 +111 +125 +155 +112 +126 +156 +113 +127 +157 +114 +128 +158 +115 +129 +159 +116 +130 +160 +117 +131 +161 +118 +132 +162 +119 +133 +163 +134 +164 +291 +121 +165 +774 +122 +166 +775 +123 +167 +776 +124 +168 +777 +125 +169 +778 +126 +170 +779 +127 +171 +780 +128 +172 +781 +129 +173 +782 +130 +174 +783 +131 +175 +784 +132 +176 +785 +133 +177 +786 +134 +178 +787 +179 +294 +788 +136 +150 +180 +137 +151 +181 +138 +152 +182 +139 +153 +183 +140 +154 +184 +141 +155 +185 +142 +156 +186 +143 +157 +187 +144 +158 +188 +145 +159 +189 +146 +160 +190 +147 +161 +191 +148 +162 +192 +149 +163 +193 +164 +194 +297 +151 +165 +195 +152 +166 +196 +153 +167 +197 +154 +168 +198 +155 +169 +199 +156 +170 +200 +157 +171 +201 +158 +172 +202 +159 +173 +203 +160 +174 +204 +161 +175 +205 +162 +176 +206 +163 +177 +207 +164 +178 +208 +179 +209 +300 +166 +210 +864 +167 +211 +865 +168 +212 +866 +169 +213 +867 +170 +214 +868 +171 +215 +869 +172 +216 +870 +173 +217 +871 +174 +218 +872 +175 +219 +873 +176 +220 +874 +177 +221 +875 +178 +222 +876 +179 +223 +877 +224 +303 +878 +181 +195 +225 +182 +196 +226 +183 +197 +227 +184 +198 +228 +185 +199 +229 +186 +200 +230 +187 +201 +231 +188 +202 +232 +189 +203 +233 +190 +204 +234 +191 +205 +235 +192 +206 +236 +193 +207 +237 +194 +208 +238 +209 +239 +306 +196 +210 +240 +197 +211 +241 +198 +212 +242 +199 +213 +243 +200 +214 +244 +201 +215 +245 +202 +216 +246 +203 +217 +247 +204 +218 +248 +205 +219 +249 +206 +220 +250 +207 +221 +251 +208 +222 +252 +209 +223 +253 +224 +254 +309 +211 +255 +954 +212 +256 +955 +213 +257 +956 +214 +258 +957 +215 +259 +958 +216 +260 +959 +217 +261 +960 +218 +262 +961 +219 +263 +962 +220 +264 +963 +221 +265 +964 +222 +266 +965 +223 +267 +966 +224 +268 +967 +269 +312 +968 +226 +240 +227 +241 +228 +242 +229 +243 +230 +244 +231 +245 +232 +246 +233 +247 +234 +248 +235 +249 +236 +250 +237 +251 +238 +252 +239 +253 +254 +315 +241 +255 +242 +256 +243 +257 +244 +258 +245 +259 +246 +260 +247 +261 +248 +262 +249 +263 +250 +264 +251 +265 +252 +266 +253 +267 +254 +268 +269 +318 +256 +1044 +257 +1045 +258 +1046 +259 +1047 +260 +1048 +261 +1049 +262 +1050 +263 +1051 +264 +1052 +265 +1053 +266 +1054 +267 +1055 +268 +1056 +269 +1057 +321 +1058 +271 +273 +279 +272 +274 +280 +275 +281 +432 +274 +276 +282 +275 +277 +283 +278 +284 +441 +277 +285 +324 +278 +286 +325 +287 +326 +450 +280 +282 +288 +281 +283 +289 +284 +290 +459 +283 +285 +291 +284 +286 +292 +287 +293 +468 +286 +294 +342 +287 +295 +343 +296 +344 +477 +289 +291 +297 +290 +292 +298 +293 +299 +486 +292 +294 +300 +293 +295 +301 +296 +302 +495 +295 +303 +360 +296 +304 +361 +305 +362 +504 +298 +300 +306 +299 +301 +307 +302 +308 +513 +301 +303 +309 +302 +304 +310 +305 +311 +522 +304 +312 +378 +305 +313 +379 +314 +380 +531 +307 +309 +315 +308 +310 +316 +311 +317 +540 +310 +312 +318 +311 +313 +319 +314 +320 +549 +313 +321 +396 +314 +322 +397 +323 +398 +558 +316 +318 +317 +319 +320 +567 +319 +321 +320 +322 +323 +576 +322 +414 +323 +415 +416 +585 +325 +327 +342 +608 +326 +328 +343 +329 +344 +3024 +328 +330 +345 +623 +329 +331 +346 +332 +347 +3033 +331 +333 +348 +638 +332 +334 +349 +335 +350 +3042 +334 +336 +351 +653 +335 +337 +352 +338 +353 +3051 +337 +339 +354 +668 +338 +340 +355 +341 +356 +3060 +340 +357 +683 +2214 +341 +358 +2215 +359 +2216 +3069 +343 +345 +360 +698 +344 +346 +361 +347 +362 +3078 +346 +348 +363 +713 +347 +349 +364 +350 +365 +3087 +349 +351 +366 +728 +350 +352 +367 +353 +368 +3096 +352 +354 +369 +743 +353 +355 +370 +356 +371 +3105 +355 +357 +372 +758 +356 +358 +373 +359 +374 +3114 +358 +375 +773 +2241 +359 +376 +2242 +377 +2243 +3123 +361 +363 +378 +788 +362 +364 +379 +365 +380 +3132 +364 +366 +381 +803 +365 +367 +382 +368 +383 +3141 +367 +369 +384 +818 +368 +370 +385 +371 +386 +3150 +370 +372 +387 +833 +371 +373 +388 +374 +389 +3159 +373 +375 +390 +848 +374 +376 +391 +377 +392 +3168 +376 +393 +863 +2268 +377 +394 +2269 +395 +2270 +3177 +379 +381 +396 +878 +380 +382 +397 +383 +398 +3186 +382 +384 +399 +893 +383 +385 +400 +386 +401 +3195 +385 +387 +402 +908 +386 +388 +403 +389 +404 +3204 +388 +390 +405 +923 +389 +391 +406 +392 +407 +3213 +391 +393 +408 +938 +392 +394 +409 +395 +410 +3222 +394 +411 +953 +2295 +395 +412 +2296 +413 +2297 +3231 +397 +399 +414 +968 +398 +400 +415 +401 +416 +3240 +400 +402 +417 +983 +401 +403 +418 +404 +419 +3249 +403 +405 +420 +998 +404 +406 +421 +407 +422 +3258 +406 +408 +423 +1013 +407 +409 +424 +410 +425 +3267 +409 +411 +426 +1028 +410 +412 +427 +413 +428 +3276 +412 +429 +1043 +2322 +413 +430 +2323 +431 +2324 +3285 +415 +417 +1058 +416 +418 +419 +3294 +418 +420 +1073 +419 +421 +422 +3303 +421 +423 +1088 +422 +424 +425 +3312 +424 +426 +1103 +425 +427 +428 +3321 +427 +429 +1118 +428 +430 +431 +3330 +430 +1133 +2349 +431 +2350 +2351 +3339 +433 +441 +459 +434 +442 +460 +435 +443 +461 +436 +444 +462 +437 +445 +463 +438 +446 +464 +439 +447 +465 +440 +448 +466 +449 +467 +442 +450 +468 +443 +451 +469 +444 +452 +470 +445 +453 +471 +446 +454 +472 +447 +455 +473 +448 +456 +474 +449 +457 +475 +458 +476 +451 +477 +3024 +452 +478 +3025 +453 +479 +3026 +454 +480 +3027 +455 +481 +3028 +456 +482 +3029 +457 +483 +3030 +458 +484 +3031 +485 +3032 +460 +468 +486 +461 +469 +487 +462 +470 +488 +463 +471 +489 +464 +472 +490 +465 +473 +491 +466 +474 +492 +467 +475 +493 +476 +494 +469 +477 +495 +470 +478 +496 +471 +479 +497 +472 +480 +498 +473 +481 +499 +474 +482 +500 +475 +483 +501 +476 +484 +502 +485 +503 +478 +504 +3078 +479 +505 +3079 +480 +506 +3080 +481 +507 +3081 +482 +508 +3082 +483 +509 +3083 +484 +510 +3084 +485 +511 +3085 +512 +3086 +487 +495 +513 +488 +496 +514 +489 +497 +515 +490 +498 +516 +491 +499 +517 +492 +500 +518 +493 +501 +519 +494 +502 +520 +503 +521 +496 +504 +522 +497 +505 +523 +498 +506 +524 +499 +507 +525 +500 +508 +526 +501 +509 +527 +502 +510 +528 +503 +511 +529 +512 +530 +505 +531 +3132 +506 +532 +3133 +507 +533 +3134 +508 +534 +3135 +509 +535 +3136 +510 +536 +3137 +511 +537 +3138 +512 +538 +3139 +539 +3140 +514 +522 +540 +515 +523 +541 +516 +524 +542 +517 +525 +543 +518 +526 +544 +519 +527 +545 +520 +528 +546 +521 +529 +547 +530 +548 +523 +531 +549 +524 +532 +550 +525 +533 +551 +526 +534 +552 +527 +535 +553 +528 +536 +554 +529 +537 +555 +530 +538 +556 +539 +557 +532 +558 +3186 +533 +559 +3187 +534 +560 +3188 +535 +561 +3189 +536 +562 +3190 +537 +563 +3191 +538 +564 +3192 +539 +565 +3193 +566 +3194 +541 +549 +567 +542 +550 +568 +543 +551 +569 +544 +552 +570 +545 +553 +571 +546 +554 +572 +547 +555 +573 +548 +556 +574 +557 +575 +550 +558 +576 +551 +559 +577 +552 +560 +578 +553 +561 +579 +554 +562 +580 +555 +563 +581 +556 +564 +582 +557 +565 +583 +566 +584 +559 +585 +3240 +560 +586 +3241 +561 +587 +3242 +562 +588 +3243 +563 +589 +3244 +564 +590 +3245 +565 +591 +3246 +566 +592 +3247 +593 +3248 +568 +576 +569 +577 +570 +578 +571 +579 +572 +580 +573 +581 +574 +582 +575 +583 +584 +577 +585 +578 +586 +579 +587 +580 +588 +581 +589 +582 +590 +583 +591 +584 +592 +593 +586 +3294 +587 +3295 +588 +3296 +589 +3297 +590 +3298 +591 +3299 +592 +3300 +593 +3301 +3302 +595 +609 +684 +596 +610 +685 +597 +611 +686 +598 +612 +687 +599 +613 +688 +600 +614 +689 +601 +615 +690 +602 +616 +691 +603 +617 +692 +604 +618 +693 +605 +619 +694 +606 +620 +695 +607 +621 +696 +608 +622 +697 +623 +698 +610 +624 +699 +611 +625 +700 +612 +626 +701 +613 +627 +702 +614 +628 +703 +615 +629 +704 +616 +630 +705 +617 +631 +706 +618 +632 +707 +619 +633 +708 +620 +634 +709 +621 +635 +710 +622 +636 +711 +623 +637 +712 +638 +713 +625 +639 +714 +626 +640 +715 +627 +641 +716 +628 +642 +717 +629 +643 +718 +630 +644 +719 +631 +645 +720 +632 +646 +721 +633 +647 +722 +634 +648 +723 +635 +649 +724 +636 +650 +725 +637 +651 +726 +638 +652 +727 +653 +728 +640 +654 +729 +641 +655 +730 +642 +656 +731 +643 +657 +732 +644 +658 +733 +645 +659 +734 +646 +660 +735 +647 +661 +736 +648 +662 +737 +649 +663 +738 +650 +664 +739 +651 +665 +740 +652 +666 +741 +653 +667 +742 +668 +743 +655 +669 +744 +656 +670 +745 +657 +671 +746 +658 +672 +747 +659 +673 +748 +660 +674 +749 +661 +675 +750 +662 +676 +751 +663 +677 +752 +664 +678 +753 +665 +679 +754 +666 +680 +755 +667 +681 +756 +668 +682 +757 +683 +758 +670 +759 +1134 +671 +760 +1135 +672 +761 +1136 +673 +762 +1137 +674 +763 +1138 +675 +764 +1139 +676 +765 +1140 +677 +766 +1141 +678 +767 +1142 +679 +768 +1143 +680 +769 +1144 +681 +770 +1145 +682 +771 +1146 +683 +772 +1147 +773 +1148 +685 +699 +774 +686 +700 +775 +687 +701 +776 +688 +702 +777 +689 +703 +778 +690 +704 +779 +691 +705 +780 +692 +706 +781 +693 +707 +782 +694 +708 +783 +695 +709 +784 +696 +710 +785 +697 +711 +786 +698 +712 +787 +713 +788 +700 +714 +789 +701 +715 +790 +702 +716 +791 +703 +717 +792 +704 +718 +793 +705 +719 +794 +706 +720 +795 +707 +721 +796 +708 +722 +797 +709 +723 +798 +710 +724 +799 +711 +725 +800 +712 +726 +801 +713 +727 +802 +728 +803 +715 +729 +804 +716 +730 +805 +717 +731 +806 +718 +732 +807 +719 +733 +808 +720 +734 +809 +721 +735 +810 +722 +736 +811 +723 +737 +812 +724 +738 +813 +725 +739 +814 +726 +740 +815 +727 +741 +816 +728 +742 +817 +743 +818 +730 +744 +819 +731 +745 +820 +732 +746 +821 +733 +747 +822 +734 +748 +823 +735 +749 +824 +736 +750 +825 +737 +751 +826 +738 +752 +827 +739 +753 +828 +740 +754 +829 +741 +755 +830 +742 +756 +831 +743 +757 +832 +758 +833 +745 +759 +834 +746 +760 +835 +747 +761 +836 +748 +762 +837 +749 +763 +838 +750 +764 +839 +751 +765 +840 +752 +766 +841 +753 +767 +842 +754 +768 +843 +755 +769 +844 +756 +770 +845 +757 +771 +846 +758 +772 +847 +773 +848 +760 +849 +1269 +761 +850 +1270 +762 +851 +1271 +763 +852 +1272 +764 +853 +1273 +765 +854 +1274 +766 +855 +1275 +767 +856 +1276 +768 +857 +1277 +769 +858 +1278 +770 +859 +1279 +771 +860 +1280 +772 +861 +1281 +773 +862 +1282 +863 +1283 +775 +789 +864 +776 +790 +865 +777 +791 +866 +778 +792 +867 +779 +793 +868 +780 +794 +869 +781 +795 +870 +782 +796 +871 +783 +797 +872 +784 +798 +873 +785 +799 +874 +786 +800 +875 +787 +801 +876 +788 +802 +877 +803 +878 +790 +804 +879 +791 +805 +880 +792 +806 +881 +793 +807 +882 +794 +808 +883 +795 +809 +884 +796 +810 +885 +797 +811 +886 +798 +812 +887 +799 +813 +888 +800 +814 +889 +801 +815 +890 +802 +816 +891 +803 +817 +892 +818 +893 +805 +819 +894 +806 +820 +895 +807 +821 +896 +808 +822 +897 +809 +823 +898 +810 +824 +899 +811 +825 +900 +812 +826 +901 +813 +827 +902 +814 +828 +903 +815 +829 +904 +816 +830 +905 +817 +831 +906 +818 +832 +907 +833 +908 +820 +834 +909 +821 +835 +910 +822 +836 +911 +823 +837 +912 +824 +838 +913 +825 +839 +914 +826 +840 +915 +827 +841 +916 +828 +842 +917 +829 +843 +918 +830 +844 +919 +831 +845 +920 +832 +846 +921 +833 +847 +922 +848 +923 +835 +849 +924 +836 +850 +925 +837 +851 +926 +838 +852 +927 +839 +853 +928 +840 +854 +929 +841 +855 +930 +842 +856 +931 +843 +857 +932 +844 +858 +933 +845 +859 +934 +846 +860 +935 +847 +861 +936 +848 +862 +937 +863 +938 +850 +939 +1404 +851 +940 +1405 +852 +941 +1406 +853 +942 +1407 +854 +943 +1408 +855 +944 +1409 +856 +945 +1410 +857 +946 +1411 +858 +947 +1412 +859 +948 +1413 +860 +949 +1414 +861 +950 +1415 +862 +951 +1416 +863 +952 +1417 +953 +1418 +865 +879 +954 +866 +880 +955 +867 +881 +956 +868 +882 +957 +869 +883 +958 +870 +884 +959 +871 +885 +960 +872 +886 +961 +873 +887 +962 +874 +888 +963 +875 +889 +964 +876 +890 +965 +877 +891 +966 +878 +892 +967 +893 +968 +880 +894 +969 +881 +895 +970 +882 +896 +971 +883 +897 +972 +884 +898 +973 +885 +899 +974 +886 +900 +975 +887 +901 +976 +888 +902 +977 +889 +903 +978 +890 +904 +979 +891 +905 +980 +892 +906 +981 +893 +907 +982 +908 +983 +895 +909 +984 +896 +910 +985 +897 +911 +986 +898 +912 +987 +899 +913 +988 +900 +914 +989 +901 +915 +990 +902 +916 +991 +903 +917 +992 +904 +918 +993 +905 +919 +994 +906 +920 +995 +907 +921 +996 +908 +922 +997 +923 +998 +910 +924 +999 +911 +925 +1000 +912 +926 +1001 +913 +927 +1002 +914 +928 +1003 +915 +929 +1004 +916 +930 +1005 +917 +931 +1006 +918 +932 +1007 +919 +933 +1008 +920 +934 +1009 +921 +935 +1010 +922 +936 +1011 +923 +937 +1012 +938 +1013 +925 +939 +1014 +926 +940 +1015 +927 +941 +1016 +928 +942 +1017 +929 +943 +1018 +930 +944 +1019 +931 +945 +1020 +932 +946 +1021 +933 +947 +1022 +934 +948 +1023 +935 +949 +1024 +936 +950 +1025 +937 +951 +1026 +938 +952 +1027 +953 +1028 +940 +1029 +1539 +941 +1030 +1540 +942 +1031 +1541 +943 +1032 +1542 +944 +1033 +1543 +945 +1034 +1544 +946 +1035 +1545 +947 +1036 +1546 +948 +1037 +1547 +949 +1038 +1548 +950 +1039 +1549 +951 +1040 +1550 +952 +1041 +1551 +953 +1042 +1552 +1043 +1553 +955 +969 +1044 +956 +970 +1045 +957 +971 +1046 +958 +972 +1047 +959 +973 +1048 +960 +974 +1049 +961 +975 +1050 +962 +976 +1051 +963 +977 +1052 +964 +978 +1053 +965 +979 +1054 +966 +980 +1055 +967 +981 +1056 +968 +982 +1057 +983 +1058 +970 +984 +1059 +971 +985 +1060 +972 +986 +1061 +973 +987 +1062 +974 +988 +1063 +975 +989 +1064 +976 +990 +1065 +977 +991 +1066 +978 +992 +1067 +979 +993 +1068 +980 +994 +1069 +981 +995 +1070 +982 +996 +1071 +983 +997 +1072 +998 +1073 +985 +999 +1074 +986 +1000 +1075 +987 +1001 +1076 +988 +1002 +1077 +989 +1003 +1078 +990 +1004 +1079 +991 +1005 +1080 +992 +1006 +1081 +993 +1007 +1082 +994 +1008 +1083 +995 +1009 +1084 +996 +1010 +1085 +997 +1011 +1086 +998 +1012 +1087 +1013 +1088 +1000 +1014 +1089 +1001 +1015 +1090 +1002 +1016 +1091 +1003 +1017 +1092 +1004 +1018 +1093 +1005 +1019 +1094 +1006 +1020 +1095 +1007 +1021 +1096 +1008 +1022 +1097 +1009 +1023 +1098 +1010 +1024 +1099 +1011 +1025 +1100 +1012 +1026 +1101 +1013 +1027 +1102 +1028 +1103 +1015 +1029 +1104 +1016 +1030 +1105 +1017 +1031 +1106 +1018 +1032 +1107 +1019 +1033 +1108 +1020 +1034 +1109 +1021 +1035 +1110 +1022 +1036 +1111 +1023 +1037 +1112 +1024 +1038 +1113 +1025 +1039 +1114 +1026 +1040 +1115 +1027 +1041 +1116 +1028 +1042 +1117 +1043 +1118 +1030 +1119 +1674 +1031 +1120 +1675 +1032 +1121 +1676 +1033 +1122 +1677 +1034 +1123 +1678 +1035 +1124 +1679 +1036 +1125 +1680 +1037 +1126 +1681 +1038 +1127 +1682 +1039 +1128 +1683 +1040 +1129 +1684 +1041 +1130 +1685 +1042 +1131 +1686 +1043 +1132 +1687 +1133 +1688 +1045 +1059 +1046 +1060 +1047 +1061 +1048 +1062 +1049 +1063 +1050 +1064 +1051 +1065 +1052 +1066 +1053 +1067 +1054 +1068 +1055 +1069 +1056 +1070 +1057 +1071 +1058 +1072 +1073 +1060 +1074 +1061 +1075 +1062 +1076 +1063 +1077 +1064 +1078 +1065 +1079 +1066 +1080 +1067 +1081 +1068 +1082 +1069 +1083 +1070 +1084 +1071 +1085 +1072 +1086 +1073 +1087 +1088 +1075 +1089 +1076 +1090 +1077 +1091 +1078 +1092 +1079 +1093 +1080 +1094 +1081 +1095 +1082 +1096 +1083 +1097 +1084 +1098 +1085 +1099 +1086 +1100 +1087 +1101 +1088 +1102 +1103 +1090 +1104 +1091 +1105 +1092 +1106 +1093 +1107 +1094 +1108 +1095 +1109 +1096 +1110 +1097 +1111 +1098 +1112 +1099 +1113 +1100 +1114 +1101 +1115 +1102 +1116 +1103 +1117 +1118 +1105 +1119 +1106 +1120 +1107 +1121 +1108 +1122 +1109 +1123 +1110 +1124 +1111 +1125 +1112 +1126 +1113 +1127 +1114 +1128 +1115 +1129 +1116 +1130 +1117 +1131 +1118 +1132 +1133 +1120 +1809 +1121 +1810 +1122 +1811 +1123 +1812 +1124 +1813 +1125 +1814 +1126 +1815 +1127 +1816 +1128 +1817 +1129 +1818 +1130 +1819 +1131 +1820 +1132 +1821 +1133 +1822 +1823 +1135 +1149 +1269 +1136 +1150 +1270 +1137 +1151 +1271 +1138 +1152 +1272 +1139 +1153 +1273 +1140 +1154 +1274 +1141 +1155 +1275 +1142 +1156 +1276 +1143 +1157 +1277 +1144 +1158 +1278 +1145 +1159 +1279 +1146 +1160 +1280 +1147 +1161 +1281 +1148 +1162 +1282 +1163 +1283 +2214 +1150 +1164 +1284 +1151 +1165 +1285 +1152 +1166 +1286 +1153 +1167 +1287 +1154 +1168 +1288 +1155 +1169 +1289 +1156 +1170 +1290 +1157 +1171 +1291 +1158 +1172 +1292 +1159 +1173 +1293 +1160 +1174 +1294 +1161 +1175 +1295 +1162 +1176 +1296 +1163 +1177 +1297 +1178 +1298 +2217 +1165 +1179 +1299 +1166 +1180 +1300 +1167 +1181 +1301 +1168 +1182 +1302 +1169 +1183 +1303 +1170 +1184 +1304 +1171 +1185 +1305 +1172 +1186 +1306 +1173 +1187 +1307 +1174 +1188 +1308 +1175 +1189 +1309 +1176 +1190 +1310 +1177 +1191 +1311 +1178 +1192 +1312 +1193 +1313 +2220 +1180 +1194 +1314 +1181 +1195 +1315 +1182 +1196 +1316 +1183 +1197 +1317 +1184 +1198 +1318 +1185 +1199 +1319 +1186 +1200 +1320 +1187 +1201 +1321 +1188 +1202 +1322 +1189 +1203 +1323 +1190 +1204 +1324 +1191 +1205 +1325 +1192 +1206 +1326 +1193 +1207 +1327 +1208 +1328 +2223 +1195 +1209 +1329 +1196 +1210 +1330 +1197 +1211 +1331 +1198 +1212 +1332 +1199 +1213 +1333 +1200 +1214 +1334 +1201 +1215 +1335 +1202 +1216 +1336 +1203 +1217 +1337 +1204 +1218 +1338 +1205 +1219 +1339 +1206 +1220 +1340 +1207 +1221 +1341 +1208 +1222 +1342 +1223 +1343 +2226 +1210 +1224 +1344 +1211 +1225 +1345 +1212 +1226 +1346 +1213 +1227 +1347 +1214 +1228 +1348 +1215 +1229 +1349 +1216 +1230 +1350 +1217 +1231 +1351 +1218 +1232 +1352 +1219 +1233 +1353 +1220 +1234 +1354 +1221 +1235 +1355 +1222 +1236 +1356 +1223 +1237 +1357 +1238 +1358 +2229 +1225 +1239 +1359 +1226 +1240 +1360 +1227 +1241 +1361 +1228 +1242 +1362 +1229 +1243 +1363 +1230 +1244 +1364 +1231 +1245 +1365 +1232 +1246 +1366 +1233 +1247 +1367 +1234 +1248 +1368 +1235 +1249 +1369 +1236 +1250 +1370 +1237 +1251 +1371 +1238 +1252 +1372 +1253 +1373 +2232 +1240 +1254 +1374 +1241 +1255 +1375 +1242 +1256 +1376 +1243 +1257 +1377 +1244 +1258 +1378 +1245 +1259 +1379 +1246 +1260 +1380 +1247 +1261 +1381 +1248 +1262 +1382 +1249 +1263 +1383 +1250 +1264 +1384 +1251 +1265 +1385 +1252 +1266 +1386 +1253 +1267 +1387 +1268 +1388 +2235 +1255 +1389 +1944 +1256 +1390 +1945 +1257 +1391 +1946 +1258 +1392 +1947 +1259 +1393 +1948 +1260 +1394 +1949 +1261 +1395 +1950 +1262 +1396 +1951 +1263 +1397 +1952 +1264 +1398 +1953 +1265 +1399 +1954 +1266 +1400 +1955 +1267 +1401 +1956 +1268 +1402 +1957 +1403 +1958 +2238 +1270 +1284 +1404 +1271 +1285 +1405 +1272 +1286 +1406 +1273 +1287 +1407 +1274 +1288 +1408 +1275 +1289 +1409 +1276 +1290 +1410 +1277 +1291 +1411 +1278 +1292 +1412 +1279 +1293 +1413 +1280 +1294 +1414 +1281 +1295 +1415 +1282 +1296 +1416 +1283 +1297 +1417 +1298 +1418 +2241 +1285 +1299 +1419 +1286 +1300 +1420 +1287 +1301 +1421 +1288 +1302 +1422 +1289 +1303 +1423 +1290 +1304 +1424 +1291 +1305 +1425 +1292 +1306 +1426 +1293 +1307 +1427 +1294 +1308 +1428 +1295 +1309 +1429 +1296 +1310 +1430 +1297 +1311 +1431 +1298 +1312 +1432 +1313 +1433 +2244 +1300 +1314 +1434 +1301 +1315 +1435 +1302 +1316 +1436 +1303 +1317 +1437 +1304 +1318 +1438 +1305 +1319 +1439 +1306 +1320 +1440 +1307 +1321 +1441 +1308 +1322 +1442 +1309 +1323 +1443 +1310 +1324 +1444 +1311 +1325 +1445 +1312 +1326 +1446 +1313 +1327 +1447 +1328 +1448 +2247 +1315 +1329 +1449 +1316 +1330 +1450 +1317 +1331 +1451 +1318 +1332 +1452 +1319 +1333 +1453 +1320 +1334 +1454 +1321 +1335 +1455 +1322 +1336 +1456 +1323 +1337 +1457 +1324 +1338 +1458 +1325 +1339 +1459 +1326 +1340 +1460 +1327 +1341 +1461 +1328 +1342 +1462 +1343 +1463 +2250 +1330 +1344 +1464 +1331 +1345 +1465 +1332 +1346 +1466 +1333 +1347 +1467 +1334 +1348 +1468 +1335 +1349 +1469 +1336 +1350 +1470 +1337 +1351 +1471 +1338 +1352 +1472 +1339 +1353 +1473 +1340 +1354 +1474 +1341 +1355 +1475 +1342 +1356 +1476 +1343 +1357 +1477 +1358 +1478 +2253 +1345 +1359 +1479 +1346 +1360 +1480 +1347 +1361 +1481 +1348 +1362 +1482 +1349 +1363 +1483 +1350 +1364 +1484 +1351 +1365 +1485 +1352 +1366 +1486 +1353 +1367 +1487 +1354 +1368 +1488 +1355 +1369 +1489 +1356 +1370 +1490 +1357 +1371 +1491 +1358 +1372 +1492 +1373 +1493 +2256 +1360 +1374 +1494 +1361 +1375 +1495 +1362 +1376 +1496 +1363 +1377 +1497 +1364 +1378 +1498 +1365 +1379 +1499 +1366 +1380 +1500 +1367 +1381 +1501 +1368 +1382 +1502 +1369 +1383 +1503 +1370 +1384 +1504 +1371 +1385 +1505 +1372 +1386 +1506 +1373 +1387 +1507 +1388 +1508 +2259 +1375 +1389 +1509 +1376 +1390 +1510 +1377 +1391 +1511 +1378 +1392 +1512 +1379 +1393 +1513 +1380 +1394 +1514 +1381 +1395 +1515 +1382 +1396 +1516 +1383 +1397 +1517 +1384 +1398 +1518 +1385 +1399 +1519 +1386 +1400 +1520 +1387 +1401 +1521 +1388 +1402 +1522 +1403 +1523 +2262 +1390 +1524 +1989 +1391 +1525 +1990 +1392 +1526 +1991 +1393 +1527 +1992 +1394 +1528 +1993 +1395 +1529 +1994 +1396 +1530 +1995 +1397 +1531 +1996 +1398 +1532 +1997 +1399 +1533 +1998 +1400 +1534 +1999 +1401 +1535 +2000 +1402 +1536 +2001 +1403 +1537 +2002 +1538 +2003 +2265 +1405 +1419 +1539 +1406 +1420 +1540 +1407 +1421 +1541 +1408 +1422 +1542 +1409 +1423 +1543 +1410 +1424 +1544 +1411 +1425 +1545 +1412 +1426 +1546 +1413 +1427 +1547 +1414 +1428 +1548 +1415 +1429 +1549 +1416 +1430 +1550 +1417 +1431 +1551 +1418 +1432 +1552 +1433 +1553 +2268 +1420 +1434 +1554 +1421 +1435 +1555 +1422 +1436 +1556 +1423 +1437 +1557 +1424 +1438 +1558 +1425 +1439 +1559 +1426 +1440 +1560 +1427 +1441 +1561 +1428 +1442 +1562 +1429 +1443 +1563 +1430 +1444 +1564 +1431 +1445 +1565 +1432 +1446 +1566 +1433 +1447 +1567 +1448 +1568 +2271 +1435 +1449 +1569 +1436 +1450 +1570 +1437 +1451 +1571 +1438 +1452 +1572 +1439 +1453 +1573 +1440 +1454 +1574 +1441 +1455 +1575 +1442 +1456 +1576 +1443 +1457 +1577 +1444 +1458 +1578 +1445 +1459 +1579 +1446 +1460 +1580 +1447 +1461 +1581 +1448 +1462 +1582 +1463 +1583 +2274 +1450 +1464 +1584 +1451 +1465 +1585 +1452 +1466 +1586 +1453 +1467 +1587 +1454 +1468 +1588 +1455 +1469 +1589 +1456 +1470 +1590 +1457 +1471 +1591 +1458 +1472 +1592 +1459 +1473 +1593 +1460 +1474 +1594 +1461 +1475 +1595 +1462 +1476 +1596 +1463 +1477 +1597 +1478 +1598 +2277 +1465 +1479 +1599 +1466 +1480 +1600 +1467 +1481 +1601 +1468 +1482 +1602 +1469 +1483 +1603 +1470 +1484 +1604 +1471 +1485 +1605 +1472 +1486 +1606 +1473 +1487 +1607 +1474 +1488 +1608 +1475 +1489 +1609 +1476 +1490 +1610 +1477 +1491 +1611 +1478 +1492 +1612 +1493 +1613 +2280 +1480 +1494 +1614 +1481 +1495 +1615 +1482 +1496 +1616 +1483 +1497 +1617 +1484 +1498 +1618 +1485 +1499 +1619 +1486 +1500 +1620 +1487 +1501 +1621 +1488 +1502 +1622 +1489 +1503 +1623 +1490 +1504 +1624 +1491 +1505 +1625 +1492 +1506 +1626 +1493 +1507 +1627 +1508 +1628 +2283 +1495 +1509 +1629 +1496 +1510 +1630 +1497 +1511 +1631 +1498 +1512 +1632 +1499 +1513 +1633 +1500 +1514 +1634 +1501 +1515 +1635 +1502 +1516 +1636 +1503 +1517 +1637 +1504 +1518 +1638 +1505 +1519 +1639 +1506 +1520 +1640 +1507 +1521 +1641 +1508 +1522 +1642 +1523 +1643 +2286 +1510 +1524 +1644 +1511 +1525 +1645 +1512 +1526 +1646 +1513 +1527 +1647 +1514 +1528 +1648 +1515 +1529 +1649 +1516 +1530 +1650 +1517 +1531 +1651 +1518 +1532 +1652 +1519 +1533 +1653 +1520 +1534 +1654 +1521 +1535 +1655 +1522 +1536 +1656 +1523 +1537 +1657 +1538 +1658 +2289 +1525 +1659 +2034 +1526 +1660 +2035 +1527 +1661 +2036 +1528 +1662 +2037 +1529 +1663 +2038 +1530 +1664 +2039 +1531 +1665 +2040 +1532 +1666 +2041 +1533 +1667 +2042 +1534 +1668 +2043 +1535 +1669 +2044 +1536 +1670 +2045 +1537 +1671 +2046 +1538 +1672 +2047 +1673 +2048 +2292 +1540 +1554 +1674 +1541 +1555 +1675 +1542 +1556 +1676 +1543 +1557 +1677 +1544 +1558 +1678 +1545 +1559 +1679 +1546 +1560 +1680 +1547 +1561 +1681 +1548 +1562 +1682 +1549 +1563 +1683 +1550 +1564 +1684 +1551 +1565 +1685 +1552 +1566 +1686 +1553 +1567 +1687 +1568 +1688 +2295 +1555 +1569 +1689 +1556 +1570 +1690 +1557 +1571 +1691 +1558 +1572 +1692 +1559 +1573 +1693 +1560 +1574 +1694 +1561 +1575 +1695 +1562 +1576 +1696 +1563 +1577 +1697 +1564 +1578 +1698 +1565 +1579 +1699 +1566 +1580 +1700 +1567 +1581 +1701 +1568 +1582 +1702 +1583 +1703 +2298 +1570 +1584 +1704 +1571 +1585 +1705 +1572 +1586 +1706 +1573 +1587 +1707 +1574 +1588 +1708 +1575 +1589 +1709 +1576 +1590 +1710 +1577 +1591 +1711 +1578 +1592 +1712 +1579 +1593 +1713 +1580 +1594 +1714 +1581 +1595 +1715 +1582 +1596 +1716 +1583 +1597 +1717 +1598 +1718 +2301 +1585 +1599 +1719 +1586 +1600 +1720 +1587 +1601 +1721 +1588 +1602 +1722 +1589 +1603 +1723 +1590 +1604 +1724 +1591 +1605 +1725 +1592 +1606 +1726 +1593 +1607 +1727 +1594 +1608 +1728 +1595 +1609 +1729 +1596 +1610 +1730 +1597 +1611 +1731 +1598 +1612 +1732 +1613 +1733 +2304 +1600 +1614 +1734 +1601 +1615 +1735 +1602 +1616 +1736 +1603 +1617 +1737 +1604 +1618 +1738 +1605 +1619 +1739 +1606 +1620 +1740 +1607 +1621 +1741 +1608 +1622 +1742 +1609 +1623 +1743 +1610 +1624 +1744 +1611 +1625 +1745 +1612 +1626 +1746 +1613 +1627 +1747 +1628 +1748 +2307 +1615 +1629 +1749 +1616 +1630 +1750 +1617 +1631 +1751 +1618 +1632 +1752 +1619 +1633 +1753 +1620 +1634 +1754 +1621 +1635 +1755 +1622 +1636 +1756 +1623 +1637 +1757 +1624 +1638 +1758 +1625 +1639 +1759 +1626 +1640 +1760 +1627 +1641 +1761 +1628 +1642 +1762 +1643 +1763 +2310 +1630 +1644 +1764 +1631 +1645 +1765 +1632 +1646 +1766 +1633 +1647 +1767 +1634 +1648 +1768 +1635 +1649 +1769 +1636 +1650 +1770 +1637 +1651 +1771 +1638 +1652 +1772 +1639 +1653 +1773 +1640 +1654 +1774 +1641 +1655 +1775 +1642 +1656 +1776 +1643 +1657 +1777 +1658 +1778 +2313 +1645 +1659 +1779 +1646 +1660 +1780 +1647 +1661 +1781 +1648 +1662 +1782 +1649 +1663 +1783 +1650 +1664 +1784 +1651 +1665 +1785 +1652 +1666 +1786 +1653 +1667 +1787 +1654 +1668 +1788 +1655 +1669 +1789 +1656 +1670 +1790 +1657 +1671 +1791 +1658 +1672 +1792 +1673 +1793 +2316 +1660 +1794 +2079 +1661 +1795 +2080 +1662 +1796 +2081 +1663 +1797 +2082 +1664 +1798 +2083 +1665 +1799 +2084 +1666 +1800 +2085 +1667 +1801 +2086 +1668 +1802 +2087 +1669 +1803 +2088 +1670 +1804 +2089 +1671 +1805 +2090 +1672 +1806 +2091 +1673 +1807 +2092 +1808 +2093 +2319 +1675 +1689 +1809 +1676 +1690 +1810 +1677 +1691 +1811 +1678 +1692 +1812 +1679 +1693 +1813 +1680 +1694 +1814 +1681 +1695 +1815 +1682 +1696 +1816 +1683 +1697 +1817 +1684 +1698 +1818 +1685 +1699 +1819 +1686 +1700 +1820 +1687 +1701 +1821 +1688 +1702 +1822 +1703 +1823 +2322 +1690 +1704 +1824 +1691 +1705 +1825 +1692 +1706 +1826 +1693 +1707 +1827 +1694 +1708 +1828 +1695 +1709 +1829 +1696 +1710 +1830 +1697 +1711 +1831 +1698 +1712 +1832 +1699 +1713 +1833 +1700 +1714 +1834 +1701 +1715 +1835 +1702 +1716 +1836 +1703 +1717 +1837 +1718 +1838 +2325 +1705 +1719 +1839 +1706 +1720 +1840 +1707 +1721 +1841 +1708 +1722 +1842 +1709 +1723 +1843 +1710 +1724 +1844 +1711 +1725 +1845 +1712 +1726 +1846 +1713 +1727 +1847 +1714 +1728 +1848 +1715 +1729 +1849 +1716 +1730 +1850 +1717 +1731 +1851 +1718 +1732 +1852 +1733 +1853 +2328 +1720 +1734 +1854 +1721 +1735 +1855 +1722 +1736 +1856 +1723 +1737 +1857 +1724 +1738 +1858 +1725 +1739 +1859 +1726 +1740 +1860 +1727 +1741 +1861 +1728 +1742 +1862 +1729 +1743 +1863 +1730 +1744 +1864 +1731 +1745 +1865 +1732 +1746 +1866 +1733 +1747 +1867 +1748 +1868 +2331 +1735 +1749 +1869 +1736 +1750 +1870 +1737 +1751 +1871 +1738 +1752 +1872 +1739 +1753 +1873 +1740 +1754 +1874 +1741 +1755 +1875 +1742 +1756 +1876 +1743 +1757 +1877 +1744 +1758 +1878 +1745 +1759 +1879 +1746 +1760 +1880 +1747 +1761 +1881 +1748 +1762 +1882 +1763 +1883 +2334 +1750 +1764 +1884 +1751 +1765 +1885 +1752 +1766 +1886 +1753 +1767 +1887 +1754 +1768 +1888 +1755 +1769 +1889 +1756 +1770 +1890 +1757 +1771 +1891 +1758 +1772 +1892 +1759 +1773 +1893 +1760 +1774 +1894 +1761 +1775 +1895 +1762 +1776 +1896 +1763 +1777 +1897 +1778 +1898 +2337 +1765 +1779 +1899 +1766 +1780 +1900 +1767 +1781 +1901 +1768 +1782 +1902 +1769 +1783 +1903 +1770 +1784 +1904 +1771 +1785 +1905 +1772 +1786 +1906 +1773 +1787 +1907 +1774 +1788 +1908 +1775 +1789 +1909 +1776 +1790 +1910 +1777 +1791 +1911 +1778 +1792 +1912 +1793 +1913 +2340 +1780 +1794 +1914 +1781 +1795 +1915 +1782 +1796 +1916 +1783 +1797 +1917 +1784 +1798 +1918 +1785 +1799 +1919 +1786 +1800 +1920 +1787 +1801 +1921 +1788 +1802 +1922 +1789 +1803 +1923 +1790 +1804 +1924 +1791 +1805 +1925 +1792 +1806 +1926 +1793 +1807 +1927 +1808 +1928 +2343 +1795 +1929 +2124 +1796 +1930 +2125 +1797 +1931 +2126 +1798 +1932 +2127 +1799 +1933 +2128 +1800 +1934 +2129 +1801 +1935 +2130 +1802 +1936 +2131 +1803 +1937 +2132 +1804 +1938 +2133 +1805 +1939 +2134 +1806 +1940 +2135 +1807 +1941 +2136 +1808 +1942 +2137 +1943 +2138 +2346 +1810 +1824 +1811 +1825 +1812 +1826 +1813 +1827 +1814 +1828 +1815 +1829 +1816 +1830 +1817 +1831 +1818 +1832 +1819 +1833 +1820 +1834 +1821 +1835 +1822 +1836 +1823 +1837 +1838 +2349 +1825 +1839 +1826 +1840 +1827 +1841 +1828 +1842 +1829 +1843 +1830 +1844 +1831 +1845 +1832 +1846 +1833 +1847 +1834 +1848 +1835 +1849 +1836 +1850 +1837 +1851 +1838 +1852 +1853 +2352 +1840 +1854 +1841 +1855 +1842 +1856 +1843 +1857 +1844 +1858 +1845 +1859 +1846 +1860 +1847 +1861 +1848 +1862 +1849 +1863 +1850 +1864 +1851 +1865 +1852 +1866 +1853 +1867 +1868 +2355 +1855 +1869 +1856 +1870 +1857 +1871 +1858 +1872 +1859 +1873 +1860 +1874 +1861 +1875 +1862 +1876 +1863 +1877 +1864 +1878 +1865 +1879 +1866 +1880 +1867 +1881 +1868 +1882 +1883 +2358 +1870 +1884 +1871 +1885 +1872 +1886 +1873 +1887 +1874 +1888 +1875 +1889 +1876 +1890 +1877 +1891 +1878 +1892 +1879 +1893 +1880 +1894 +1881 +1895 +1882 +1896 +1883 +1897 +1898 +2361 +1885 +1899 +1886 +1900 +1887 +1901 +1888 +1902 +1889 +1903 +1890 +1904 +1891 +1905 +1892 +1906 +1893 +1907 +1894 +1908 +1895 +1909 +1896 +1910 +1897 +1911 +1898 +1912 +1913 +2364 +1900 +1914 +1901 +1915 +1902 +1916 +1903 +1917 +1904 +1918 +1905 +1919 +1906 +1920 +1907 +1921 +1908 +1922 +1909 +1923 +1910 +1924 +1911 +1925 +1912 +1926 +1913 +1927 +1928 +2367 +1915 +1929 +1916 +1930 +1917 +1931 +1918 +1932 +1919 +1933 +1920 +1934 +1921 +1935 +1922 +1936 +1923 +1937 +1924 +1938 +1925 +1939 +1926 +1940 +1927 +1941 +1928 +1942 +1943 +2370 +1930 +2169 +1931 +2170 +1932 +2171 +1933 +2172 +1934 +2173 +1935 +2174 +1936 +2175 +1937 +2176 +1938 +2177 +1939 +2178 +1940 +2179 +1941 +2180 +1942 +2181 +1943 +2182 +2183 +2373 +1945 +1959 +1989 +1946 +1960 +1990 +1947 +1961 +1991 +1948 +1962 +1992 +1949 +1963 +1993 +1950 +1964 +1994 +1951 +1965 +1995 +1952 +1966 +1996 +1953 +1967 +1997 +1954 +1968 +1998 +1955 +1969 +1999 +1956 +1970 +2000 +1957 +1971 +2001 +1958 +1972 +2002 +1973 +2003 +3672 +1960 +1974 +2004 +1961 +1975 +2005 +1962 +1976 +2006 +1963 +1977 +2007 +1964 +1978 +2008 +1965 +1979 +2009 +1966 +1980 +2010 +1967 +1981 +2011 +1968 +1982 +2012 +1969 +1983 +2013 +1970 +1984 +2014 +1971 +1985 +2015 +1972 +1986 +2016 +1973 +1987 +2017 +1988 +2018 +3675 +1975 +2019 +3348 +1976 +2020 +3349 +1977 +2021 +3350 +1978 +2022 +3351 +1979 +2023 +3352 +1980 +2024 +3353 +1981 +2025 +3354 +1982 +2026 +3355 +1983 +2027 +3356 +1984 +2028 +3357 +1985 +2029 +3358 +1986 +2030 +3359 +1987 +2031 +3360 +1988 +2032 +3361 +2033 +3362 +3678 +1990 +2004 +2034 +1991 +2005 +2035 +1992 +2006 +2036 +1993 +2007 +2037 +1994 +2008 +2038 +1995 +2009 +2039 +1996 +2010 +2040 +1997 +2011 +2041 +1998 +2012 +2042 +1999 +2013 +2043 +2000 +2014 +2044 +2001 +2015 +2045 +2002 +2016 +2046 +2003 +2017 +2047 +2018 +2048 +3681 +2005 +2019 +2049 +2006 +2020 +2050 +2007 +2021 +2051 +2008 +2022 +2052 +2009 +2023 +2053 +2010 +2024 +2054 +2011 +2025 +2055 +2012 +2026 +2056 +2013 +2027 +2057 +2014 +2028 +2058 +2015 +2029 +2059 +2016 +2030 +2060 +2017 +2031 +2061 +2018 +2032 +2062 +2033 +2063 +3684 +2020 +2064 +3393 +2021 +2065 +3394 +2022 +2066 +3395 +2023 +2067 +3396 +2024 +2068 +3397 +2025 +2069 +3398 +2026 +2070 +3399 +2027 +2071 +3400 +2028 +2072 +3401 +2029 +2073 +3402 +2030 +2074 +3403 +2031 +2075 +3404 +2032 +2076 +3405 +2033 +2077 +3406 +2078 +3407 +3687 +2035 +2049 +2079 +2036 +2050 +2080 +2037 +2051 +2081 +2038 +2052 +2082 +2039 +2053 +2083 +2040 +2054 +2084 +2041 +2055 +2085 +2042 +2056 +2086 +2043 +2057 +2087 +2044 +2058 +2088 +2045 +2059 +2089 +2046 +2060 +2090 +2047 +2061 +2091 +2048 +2062 +2092 +2063 +2093 +3690 +2050 +2064 +2094 +2051 +2065 +2095 +2052 +2066 +2096 +2053 +2067 +2097 +2054 +2068 +2098 +2055 +2069 +2099 +2056 +2070 +2100 +2057 +2071 +2101 +2058 +2072 +2102 +2059 +2073 +2103 +2060 +2074 +2104 +2061 +2075 +2105 +2062 +2076 +2106 +2063 +2077 +2107 +2078 +2108 +3693 +2065 +2109 +3438 +2066 +2110 +3439 +2067 +2111 +3440 +2068 +2112 +3441 +2069 +2113 +3442 +2070 +2114 +3443 +2071 +2115 +3444 +2072 +2116 +3445 +2073 +2117 +3446 +2074 +2118 +3447 +2075 +2119 +3448 +2076 +2120 +3449 +2077 +2121 +3450 +2078 +2122 +3451 +2123 +3452 +3696 +2080 +2094 +2124 +2081 +2095 +2125 +2082 +2096 +2126 +2083 +2097 +2127 +2084 +2098 +2128 +2085 +2099 +2129 +2086 +2100 +2130 +2087 +2101 +2131 +2088 +2102 +2132 +2089 +2103 +2133 +2090 +2104 +2134 +2091 +2105 +2135 +2092 +2106 +2136 +2093 +2107 +2137 +2108 +2138 +3699 +2095 +2109 +2139 +2096 +2110 +2140 +2097 +2111 +2141 +2098 +2112 +2142 +2099 +2113 +2143 +2100 +2114 +2144 +2101 +2115 +2145 +2102 +2116 +2146 +2103 +2117 +2147 +2104 +2118 +2148 +2105 +2119 +2149 +2106 +2120 +2150 +2107 +2121 +2151 +2108 +2122 +2152 +2123 +2153 +3702 +2110 +2154 +3483 +2111 +2155 +3484 +2112 +2156 +3485 +2113 +2157 +3486 +2114 +2158 +3487 +2115 +2159 +3488 +2116 +2160 +3489 +2117 +2161 +3490 +2118 +2162 +3491 +2119 +2163 +3492 +2120 +2164 +3493 +2121 +2165 +3494 +2122 +2166 +3495 +2123 +2167 +3496 +2168 +3497 +3705 +2125 +2139 +2169 +2126 +2140 +2170 +2127 +2141 +2171 +2128 +2142 +2172 +2129 +2143 +2173 +2130 +2144 +2174 +2131 +2145 +2175 +2132 +2146 +2176 +2133 +2147 +2177 +2134 +2148 +2178 +2135 +2149 +2179 +2136 +2150 +2180 +2137 +2151 +2181 +2138 +2152 +2182 +2153 +2183 +3708 +2140 +2154 +2184 +2141 +2155 +2185 +2142 +2156 +2186 +2143 +2157 +2187 +2144 +2158 +2188 +2145 +2159 +2189 +2146 +2160 +2190 +2147 +2161 +2191 +2148 +2162 +2192 +2149 +2163 +2193 +2150 +2164 +2194 +2151 +2165 +2195 +2152 +2166 +2196 +2153 +2167 +2197 +2168 +2198 +3711 +2155 +2199 +3528 +2156 +2200 +3529 +2157 +2201 +3530 +2158 +2202 +3531 +2159 +2203 +3532 +2160 +2204 +3533 +2161 +2205 +3534 +2162 +2206 +3535 +2163 +2207 +3536 +2164 +2208 +3537 +2165 +2209 +3538 +2166 +2210 +3539 +2167 +2211 +3540 +2168 +2212 +3541 +2213 +3542 +3714 +2170 +2184 +2171 +2185 +2172 +2186 +2173 +2187 +2174 +2188 +2175 +2189 +2176 +2190 +2177 +2191 +2178 +2192 +2179 +2193 +2180 +2194 +2181 +2195 +2182 +2196 +2183 +2197 +2198 +3717 +2185 +2199 +2186 +2200 +2187 +2201 +2188 +2202 +2189 +2203 +2190 +2204 +2191 +2205 +2192 +2206 +2193 +2207 +2194 +2208 +2195 +2209 +2196 +2210 +2197 +2211 +2198 +2212 +2213 +3720 +2200 +3573 +2201 +3574 +2202 +3575 +2203 +3576 +2204 +3577 +2205 +3578 +2206 +3579 +2207 +3580 +2208 +3581 +2209 +3582 +2210 +3583 +2211 +3584 +2212 +3585 +2213 +3586 +3587 +3723 +2215 +2217 +2241 +2216 +2218 +2242 +2219 +2243 +2376 +2218 +2220 +2244 +2219 +2221 +2245 +2222 +2246 +2385 +2221 +2223 +2247 +2222 +2224 +2248 +2225 +2249 +2394 +2224 +2226 +2250 +2225 +2227 +2251 +2228 +2252 +2403 +2227 +2229 +2253 +2228 +2230 +2254 +2231 +2255 +2412 +2230 +2232 +2256 +2231 +2233 +2257 +2234 +2258 +2421 +2233 +2235 +2259 +2234 +2236 +2260 +2237 +2261 +2430 +2236 +2238 +2262 +2237 +2239 +2263 +2240 +2264 +2439 +2239 +2265 +3672 +2240 +2266 +3673 +2267 +2448 +3674 +2242 +2244 +2268 +2243 +2245 +2269 +2246 +2270 +2457 +2245 +2247 +2271 +2246 +2248 +2272 +2249 +2273 +2466 +2248 +2250 +2274 +2249 +2251 +2275 +2252 +2276 +2475 +2251 +2253 +2277 +2252 +2254 +2278 +2255 +2279 +2484 +2254 +2256 +2280 +2255 +2257 +2281 +2258 +2282 +2493 +2257 +2259 +2283 +2258 +2260 +2284 +2261 +2285 +2502 +2260 +2262 +2286 +2261 +2263 +2287 +2264 +2288 +2511 +2263 +2265 +2289 +2264 +2266 +2290 +2267 +2291 +2520 +2266 +2292 +3681 +2267 +2293 +3682 +2294 +2529 +3683 +2269 +2271 +2295 +2270 +2272 +2296 +2273 +2297 +2538 +2272 +2274 +2298 +2273 +2275 +2299 +2276 +2300 +2547 +2275 +2277 +2301 +2276 +2278 +2302 +2279 +2303 +2556 +2278 +2280 +2304 +2279 +2281 +2305 +2282 +2306 +2565 +2281 +2283 +2307 +2282 +2284 +2308 +2285 +2309 +2574 +2284 +2286 +2310 +2285 +2287 +2311 +2288 +2312 +2583 +2287 +2289 +2313 +2288 +2290 +2314 +2291 +2315 +2592 +2290 +2292 +2316 +2291 +2293 +2317 +2294 +2318 +2601 +2293 +2319 +3690 +2294 +2320 +3691 +2321 +2610 +3692 +2296 +2298 +2322 +2297 +2299 +2323 +2300 +2324 +2619 +2299 +2301 +2325 +2300 +2302 +2326 +2303 +2327 +2628 +2302 +2304 +2328 +2303 +2305 +2329 +2306 +2330 +2637 +2305 +2307 +2331 +2306 +2308 +2332 +2309 +2333 +2646 +2308 +2310 +2334 +2309 +2311 +2335 +2312 +2336 +2655 +2311 +2313 +2337 +2312 +2314 +2338 +2315 +2339 +2664 +2314 +2316 +2340 +2315 +2317 +2341 +2318 +2342 +2673 +2317 +2319 +2343 +2318 +2320 +2344 +2321 +2345 +2682 +2320 +2346 +3699 +2321 +2347 +3700 +2348 +2691 +3701 +2323 +2325 +2349 +2324 +2326 +2350 +2327 +2351 +2700 +2326 +2328 +2352 +2327 +2329 +2353 +2330 +2354 +2709 +2329 +2331 +2355 +2330 +2332 +2356 +2333 +2357 +2718 +2332 +2334 +2358 +2333 +2335 +2359 +2336 +2360 +2727 +2335 +2337 +2361 +2336 +2338 +2362 +2339 +2363 +2736 +2338 +2340 +2364 +2339 +2341 +2365 +2342 +2366 +2745 +2341 +2343 +2367 +2342 +2344 +2368 +2345 +2369 +2754 +2344 +2346 +2370 +2345 +2347 +2371 +2348 +2372 +2763 +2347 +2373 +3708 +2348 +2374 +3709 +2375 +2772 +3710 +2350 +2352 +2351 +2353 +2354 +2781 +2353 +2355 +2354 +2356 +2357 +2790 +2356 +2358 +2357 +2359 +2360 +2799 +2359 +2361 +2360 +2362 +2363 +2808 +2362 +2364 +2363 +2365 +2366 +2817 +2365 +2367 +2366 +2368 +2369 +2826 +2368 +2370 +2369 +2371 +2372 +2835 +2371 +2373 +2372 +2374 +2375 +2844 +2374 +3717 +2375 +3718 +2853 +3719 +2377 +2385 +2457 +3069 +2378 +2386 +2458 +3070 +2379 +2387 +2459 +3071 +2380 +2388 +2460 +3072 +2381 +2389 +2461 +3073 +2382 +2390 +2462 +3074 +2383 +2391 +2463 +3075 +2384 +2392 +2464 +3076 +2393 +2465 +3077 +2386 +2394 +2466 +2387 +2395 +2467 +2388 +2396 +2468 +2389 +2397 +2469 +2390 +2398 +2470 +2391 +2399 +2471 +2392 +2400 +2472 +2393 +2401 +2473 +2402 +2474 +2395 +2403 +2475 +2396 +2404 +2476 +2397 +2405 +2477 +2398 +2406 +2478 +2399 +2407 +2479 +2400 +2408 +2480 +2401 +2409 +2481 +2402 +2410 +2482 +2411 +2483 +2404 +2412 +2484 +2405 +2413 +2485 +2406 +2414 +2486 +2407 +2415 +2487 +2408 +2416 +2488 +2409 +2417 +2489 +2410 +2418 +2490 +2411 +2419 +2491 +2420 +2492 +2413 +2421 +2493 +2414 +2422 +2494 +2415 +2423 +2495 +2416 +2424 +2496 +2417 +2425 +2497 +2418 +2426 +2498 +2419 +2427 +2499 +2420 +2428 +2500 +2429 +2501 +2422 +2430 +2502 +2423 +2431 +2503 +2424 +2432 +2504 +2425 +2433 +2505 +2426 +2434 +2506 +2427 +2435 +2507 +2428 +2436 +2508 +2429 +2437 +2509 +2438 +2510 +2431 +2439 +2511 +2432 +2440 +2512 +2433 +2441 +2513 +2434 +2442 +2514 +2435 +2443 +2515 +2436 +2444 +2516 +2437 +2445 +2517 +2438 +2446 +2518 +2447 +2519 +2440 +2448 +2520 +2441 +2449 +2521 +2442 +2450 +2522 +2443 +2451 +2523 +2444 +2452 +2524 +2445 +2453 +2525 +2446 +2454 +2526 +2447 +2455 +2527 +2456 +2528 +2449 +2529 +2862 +2450 +2530 +2863 +2451 +2531 +2864 +2452 +2532 +2865 +2453 +2533 +2866 +2454 +2534 +2867 +2455 +2535 +2868 +2456 +2536 +2869 +2537 +2870 +2458 +2466 +2538 +3123 +2459 +2467 +2539 +3124 +2460 +2468 +2540 +3125 +2461 +2469 +2541 +3126 +2462 +2470 +2542 +3127 +2463 +2471 +2543 +3128 +2464 +2472 +2544 +3129 +2465 +2473 +2545 +3130 +2474 +2546 +3131 +2467 +2475 +2547 +2468 +2476 +2548 +2469 +2477 +2549 +2470 +2478 +2550 +2471 +2479 +2551 +2472 +2480 +2552 +2473 +2481 +2553 +2474 +2482 +2554 +2483 +2555 +2476 +2484 +2556 +2477 +2485 +2557 +2478 +2486 +2558 +2479 +2487 +2559 +2480 +2488 +2560 +2481 +2489 +2561 +2482 +2490 +2562 +2483 +2491 +2563 +2492 +2564 +2485 +2493 +2565 +2486 +2494 +2566 +2487 +2495 +2567 +2488 +2496 +2568 +2489 +2497 +2569 +2490 +2498 +2570 +2491 +2499 +2571 +2492 +2500 +2572 +2501 +2573 +2494 +2502 +2574 +2495 +2503 +2575 +2496 +2504 +2576 +2497 +2505 +2577 +2498 +2506 +2578 +2499 +2507 +2579 +2500 +2508 +2580 +2501 +2509 +2581 +2510 +2582 +2503 +2511 +2583 +2504 +2512 +2584 +2505 +2513 +2585 +2506 +2514 +2586 +2507 +2515 +2587 +2508 +2516 +2588 +2509 +2517 +2589 +2510 +2518 +2590 +2519 +2591 +2512 +2520 +2592 +2513 +2521 +2593 +2514 +2522 +2594 +2515 +2523 +2595 +2516 +2524 +2596 +2517 +2525 +2597 +2518 +2526 +2598 +2519 +2527 +2599 +2528 +2600 +2521 +2529 +2601 +2522 +2530 +2602 +2523 +2531 +2603 +2524 +2532 +2604 +2525 +2533 +2605 +2526 +2534 +2606 +2527 +2535 +2607 +2528 +2536 +2608 +2537 +2609 +2530 +2610 +2889 +2531 +2611 +2890 +2532 +2612 +2891 +2533 +2613 +2892 +2534 +2614 +2893 +2535 +2615 +2894 +2536 +2616 +2895 +2537 +2617 +2896 +2618 +2897 +2539 +2547 +2619 +3177 +2540 +2548 +2620 +3178 +2541 +2549 +2621 +3179 +2542 +2550 +2622 +3180 +2543 +2551 +2623 +3181 +2544 +2552 +2624 +3182 +2545 +2553 +2625 +3183 +2546 +2554 +2626 +3184 +2555 +2627 +3185 +2548 +2556 +2628 +2549 +2557 +2629 +2550 +2558 +2630 +2551 +2559 +2631 +2552 +2560 +2632 +2553 +2561 +2633 +2554 +2562 +2634 +2555 +2563 +2635 +2564 +2636 +2557 +2565 +2637 +2558 +2566 +2638 +2559 +2567 +2639 +2560 +2568 +2640 +2561 +2569 +2641 +2562 +2570 +2642 +2563 +2571 +2643 +2564 +2572 +2644 +2573 +2645 +2566 +2574 +2646 +2567 +2575 +2647 +2568 +2576 +2648 +2569 +2577 +2649 +2570 +2578 +2650 +2571 +2579 +2651 +2572 +2580 +2652 +2573 +2581 +2653 +2582 +2654 +2575 +2583 +2655 +2576 +2584 +2656 +2577 +2585 +2657 +2578 +2586 +2658 +2579 +2587 +2659 +2580 +2588 +2660 +2581 +2589 +2661 +2582 +2590 +2662 +2591 +2663 +2584 +2592 +2664 +2585 +2593 +2665 +2586 +2594 +2666 +2587 +2595 +2667 +2588 +2596 +2668 +2589 +2597 +2669 +2590 +2598 +2670 +2591 +2599 +2671 +2600 +2672 +2593 +2601 +2673 +2594 +2602 +2674 +2595 +2603 +2675 +2596 +2604 +2676 +2597 +2605 +2677 +2598 +2606 +2678 +2599 +2607 +2679 +2600 +2608 +2680 +2609 +2681 +2602 +2610 +2682 +2603 +2611 +2683 +2604 +2612 +2684 +2605 +2613 +2685 +2606 +2614 +2686 +2607 +2615 +2687 +2608 +2616 +2688 +2609 +2617 +2689 +2618 +2690 +2611 +2691 +2916 +2612 +2692 +2917 +2613 +2693 +2918 +2614 +2694 +2919 +2615 +2695 +2920 +2616 +2696 +2921 +2617 +2697 +2922 +2618 +2698 +2923 +2699 +2924 +2620 +2628 +2700 +3231 +2621 +2629 +2701 +3232 +2622 +2630 +2702 +3233 +2623 +2631 +2703 +3234 +2624 +2632 +2704 +3235 +2625 +2633 +2705 +3236 +2626 +2634 +2706 +3237 +2627 +2635 +2707 +3238 +2636 +2708 +3239 +2629 +2637 +2709 +2630 +2638 +2710 +2631 +2639 +2711 +2632 +2640 +2712 +2633 +2641 +2713 +2634 +2642 +2714 +2635 +2643 +2715 +2636 +2644 +2716 +2645 +2717 +2638 +2646 +2718 +2639 +2647 +2719 +2640 +2648 +2720 +2641 +2649 +2721 +2642 +2650 +2722 +2643 +2651 +2723 +2644 +2652 +2724 +2645 +2653 +2725 +2654 +2726 +2647 +2655 +2727 +2648 +2656 +2728 +2649 +2657 +2729 +2650 +2658 +2730 +2651 +2659 +2731 +2652 +2660 +2732 +2653 +2661 +2733 +2654 +2662 +2734 +2663 +2735 +2656 +2664 +2736 +2657 +2665 +2737 +2658 +2666 +2738 +2659 +2667 +2739 +2660 +2668 +2740 +2661 +2669 +2741 +2662 +2670 +2742 +2663 +2671 +2743 +2672 +2744 +2665 +2673 +2745 +2666 +2674 +2746 +2667 +2675 +2747 +2668 +2676 +2748 +2669 +2677 +2749 +2670 +2678 +2750 +2671 +2679 +2751 +2672 +2680 +2752 +2681 +2753 +2674 +2682 +2754 +2675 +2683 +2755 +2676 +2684 +2756 +2677 +2685 +2757 +2678 +2686 +2758 +2679 +2687 +2759 +2680 +2688 +2760 +2681 +2689 +2761 +2690 +2762 +2683 +2691 +2763 +2684 +2692 +2764 +2685 +2693 +2765 +2686 +2694 +2766 +2687 +2695 +2767 +2688 +2696 +2768 +2689 +2697 +2769 +2690 +2698 +2770 +2699 +2771 +2692 +2772 +2943 +2693 +2773 +2944 +2694 +2774 +2945 +2695 +2775 +2946 +2696 +2776 +2947 +2697 +2777 +2948 +2698 +2778 +2949 +2699 +2779 +2950 +2780 +2951 +2701 +2709 +2781 +3285 +2702 +2710 +2782 +3286 +2703 +2711 +2783 +3287 +2704 +2712 +2784 +3288 +2705 +2713 +2785 +3289 +2706 +2714 +2786 +3290 +2707 +2715 +2787 +3291 +2708 +2716 +2788 +3292 +2717 +2789 +3293 +2710 +2718 +2790 +2711 +2719 +2791 +2712 +2720 +2792 +2713 +2721 +2793 +2714 +2722 +2794 +2715 +2723 +2795 +2716 +2724 +2796 +2717 +2725 +2797 +2726 +2798 +2719 +2727 +2799 +2720 +2728 +2800 +2721 +2729 +2801 +2722 +2730 +2802 +2723 +2731 +2803 +2724 +2732 +2804 +2725 +2733 +2805 +2726 +2734 +2806 +2735 +2807 +2728 +2736 +2808 +2729 +2737 +2809 +2730 +2738 +2810 +2731 +2739 +2811 +2732 +2740 +2812 +2733 +2741 +2813 +2734 +2742 +2814 +2735 +2743 +2815 +2744 +2816 +2737 +2745 +2817 +2738 +2746 +2818 +2739 +2747 +2819 +2740 +2748 +2820 +2741 +2749 +2821 +2742 +2750 +2822 +2743 +2751 +2823 +2744 +2752 +2824 +2753 +2825 +2746 +2754 +2826 +2747 +2755 +2827 +2748 +2756 +2828 +2749 +2757 +2829 +2750 +2758 +2830 +2751 +2759 +2831 +2752 +2760 +2832 +2753 +2761 +2833 +2762 +2834 +2755 +2763 +2835 +2756 +2764 +2836 +2757 +2765 +2837 +2758 +2766 +2838 +2759 +2767 +2839 +2760 +2768 +2840 +2761 +2769 +2841 +2762 +2770 +2842 +2771 +2843 +2764 +2772 +2844 +2765 +2773 +2845 +2766 +2774 +2846 +2767 +2775 +2847 +2768 +2776 +2848 +2769 +2777 +2849 +2770 +2778 +2850 +2771 +2779 +2851 +2780 +2852 +2773 +2853 +2970 +2774 +2854 +2971 +2775 +2855 +2972 +2776 +2856 +2973 +2777 +2857 +2974 +2778 +2858 +2975 +2779 +2859 +2976 +2780 +2860 +2977 +2861 +2978 +2782 +2790 +3339 +2783 +2791 +3340 +2784 +2792 +3341 +2785 +2793 +3342 +2786 +2794 +3343 +2787 +2795 +3344 +2788 +2796 +3345 +2789 +2797 +3346 +2798 +3347 +2791 +2799 +2792 +2800 +2793 +2801 +2794 +2802 +2795 +2803 +2796 +2804 +2797 +2805 +2798 +2806 +2807 +2800 +2808 +2801 +2809 +2802 +2810 +2803 +2811 +2804 +2812 +2805 +2813 +2806 +2814 +2807 +2815 +2816 +2809 +2817 +2810 +2818 +2811 +2819 +2812 +2820 +2813 +2821 +2814 +2822 +2815 +2823 +2816 +2824 +2825 +2818 +2826 +2819 +2827 +2820 +2828 +2821 +2829 +2822 +2830 +2823 +2831 +2824 +2832 +2825 +2833 +2834 +2827 +2835 +2828 +2836 +2829 +2837 +2830 +2838 +2831 +2839 +2832 +2840 +2833 +2841 +2834 +2842 +2843 +2836 +2844 +2837 +2845 +2838 +2846 +2839 +2847 +2840 +2848 +2841 +2849 +2842 +2850 +2843 +2851 +2852 +2845 +2853 +2846 +2854 +2847 +2855 +2848 +2856 +2849 +2857 +2850 +2858 +2851 +2859 +2852 +2860 +2861 +2854 +2997 +2855 +2998 +2856 +2999 +2857 +3000 +2858 +3001 +2859 +3002 +2860 +3003 +2861 +3004 +3005 +2863 +2871 +2889 +3674 +2864 +2872 +2890 +2865 +2873 +2891 +2866 +2874 +2892 +2867 +2875 +2893 +2868 +2876 +2894 +2869 +2877 +2895 +2870 +2878 +2896 +2879 +2897 +2872 +2880 +2898 +3677 +2873 +2881 +2899 +2874 +2882 +2900 +2875 +2883 +2901 +2876 +2884 +2902 +2877 +2885 +2903 +2878 +2886 +2904 +2879 +2887 +2905 +2888 +2906 +2881 +2907 +3680 +3726 +2882 +2908 +3727 +2883 +2909 +3728 +2884 +2910 +3729 +2885 +2911 +3730 +2886 +2912 +3731 +2887 +2913 +3732 +2888 +2914 +3733 +2915 +3734 +2890 +2898 +2916 +3683 +2891 +2899 +2917 +2892 +2900 +2918 +2893 +2901 +2919 +2894 +2902 +2920 +2895 +2903 +2921 +2896 +2904 +2922 +2897 +2905 +2923 +2906 +2924 +2899 +2907 +2925 +3686 +2900 +2908 +2926 +2901 +2909 +2927 +2902 +2910 +2928 +2903 +2911 +2929 +2904 +2912 +2930 +2905 +2913 +2931 +2906 +2914 +2932 +2915 +2933 +2908 +2934 +3689 +3753 +2909 +2935 +3754 +2910 +2936 +3755 +2911 +2937 +3756 +2912 +2938 +3757 +2913 +2939 +3758 +2914 +2940 +3759 +2915 +2941 +3760 +2942 +3761 +2917 +2925 +2943 +3692 +2918 +2926 +2944 +2919 +2927 +2945 +2920 +2928 +2946 +2921 +2929 +2947 +2922 +2930 +2948 +2923 +2931 +2949 +2924 +2932 +2950 +2933 +2951 +2926 +2934 +2952 +3695 +2927 +2935 +2953 +2928 +2936 +2954 +2929 +2937 +2955 +2930 +2938 +2956 +2931 +2939 +2957 +2932 +2940 +2958 +2933 +2941 +2959 +2942 +2960 +2935 +2961 +3698 +3780 +2936 +2962 +3781 +2937 +2963 +3782 +2938 +2964 +3783 +2939 +2965 +3784 +2940 +2966 +3785 +2941 +2967 +3786 +2942 +2968 +3787 +2969 +3788 +2944 +2952 +2970 +3701 +2945 +2953 +2971 +2946 +2954 +2972 +2947 +2955 +2973 +2948 +2956 +2974 +2949 +2957 +2975 +2950 +2958 +2976 +2951 +2959 +2977 +2960 +2978 +2953 +2961 +2979 +3704 +2954 +2962 +2980 +2955 +2963 +2981 +2956 +2964 +2982 +2957 +2965 +2983 +2958 +2966 +2984 +2959 +2967 +2985 +2960 +2968 +2986 +2969 +2987 +2962 +2988 +3707 +3807 +2963 +2989 +3808 +2964 +2990 +3809 +2965 +2991 +3810 +2966 +2992 +3811 +2967 +2993 +3812 +2968 +2994 +3813 +2969 +2995 +3814 +2996 +3815 +2971 +2979 +2997 +3710 +2972 +2980 +2998 +2973 +2981 +2999 +2974 +2982 +3000 +2975 +2983 +3001 +2976 +2984 +3002 +2977 +2985 +3003 +2978 +2986 +3004 +2987 +3005 +2980 +2988 +3006 +3713 +2981 +2989 +3007 +2982 +2990 +3008 +2983 +2991 +3009 +2984 +2992 +3010 +2985 +2993 +3011 +2986 +2994 +3012 +2987 +2995 +3013 +2996 +3014 +2989 +3015 +3716 +3834 +2990 +3016 +3835 +2991 +3017 +3836 +2992 +3018 +3837 +2993 +3019 +3838 +2994 +3020 +3839 +2995 +3021 +3840 +2996 +3022 +3841 +3023 +3842 +2998 +3006 +3719 +2999 +3007 +3000 +3008 +3001 +3009 +3002 +3010 +3003 +3011 +3004 +3012 +3005 +3013 +3014 +3007 +3015 +3722 +3008 +3016 +3009 +3017 +3010 +3018 +3011 +3019 +3012 +3020 +3013 +3021 +3014 +3022 +3023 +3016 +3725 +3861 +3017 +3862 +3018 +3863 +3019 +3864 +3020 +3865 +3021 +3866 +3022 +3867 +3023 +3868 +3869 +3025 +3033 +3078 +3026 +3034 +3079 +3027 +3035 +3080 +3028 +3036 +3081 +3029 +3037 +3082 +3030 +3038 +3083 +3031 +3039 +3084 +3032 +3040 +3085 +3041 +3086 +3034 +3042 +3087 +3035 +3043 +3088 +3036 +3044 +3089 +3037 +3045 +3090 +3038 +3046 +3091 +3039 +3047 +3092 +3040 +3048 +3093 +3041 +3049 +3094 +3050 +3095 +3043 +3051 +3096 +3044 +3052 +3097 +3045 +3053 +3098 +3046 +3054 +3099 +3047 +3055 +3100 +3048 +3056 +3101 +3049 +3057 +3102 +3050 +3058 +3103 +3059 +3104 +3052 +3060 +3105 +3053 +3061 +3106 +3054 +3062 +3107 +3055 +3063 +3108 +3056 +3064 +3109 +3057 +3065 +3110 +3058 +3066 +3111 +3059 +3067 +3112 +3068 +3113 +3061 +3069 +3114 +3062 +3070 +3115 +3063 +3071 +3116 +3064 +3072 +3117 +3065 +3073 +3118 +3066 +3074 +3119 +3067 +3075 +3120 +3068 +3076 +3121 +3077 +3122 +3070 +3123 +3071 +3124 +3072 +3125 +3073 +3126 +3074 +3127 +3075 +3128 +3076 +3129 +3077 +3130 +3131 +3079 +3087 +3132 +3080 +3088 +3133 +3081 +3089 +3134 +3082 +3090 +3135 +3083 +3091 +3136 +3084 +3092 +3137 +3085 +3093 +3138 +3086 +3094 +3139 +3095 +3140 +3088 +3096 +3141 +3089 +3097 +3142 +3090 +3098 +3143 +3091 +3099 +3144 +3092 +3100 +3145 +3093 +3101 +3146 +3094 +3102 +3147 +3095 +3103 +3148 +3104 +3149 +3097 +3105 +3150 +3098 +3106 +3151 +3099 +3107 +3152 +3100 +3108 +3153 +3101 +3109 +3154 +3102 +3110 +3155 +3103 +3111 +3156 +3104 +3112 +3157 +3113 +3158 +3106 +3114 +3159 +3107 +3115 +3160 +3108 +3116 +3161 +3109 +3117 +3162 +3110 +3118 +3163 +3111 +3119 +3164 +3112 +3120 +3165 +3113 +3121 +3166 +3122 +3167 +3115 +3123 +3168 +3116 +3124 +3169 +3117 +3125 +3170 +3118 +3126 +3171 +3119 +3127 +3172 +3120 +3128 +3173 +3121 +3129 +3174 +3122 +3130 +3175 +3131 +3176 +3124 +3177 +3125 +3178 +3126 +3179 +3127 +3180 +3128 +3181 +3129 +3182 +3130 +3183 +3131 +3184 +3185 +3133 +3141 +3186 +3134 +3142 +3187 +3135 +3143 +3188 +3136 +3144 +3189 +3137 +3145 +3190 +3138 +3146 +3191 +3139 +3147 +3192 +3140 +3148 +3193 +3149 +3194 +3142 +3150 +3195 +3143 +3151 +3196 +3144 +3152 +3197 +3145 +3153 +3198 +3146 +3154 +3199 +3147 +3155 +3200 +3148 +3156 +3201 +3149 +3157 +3202 +3158 +3203 +3151 +3159 +3204 +3152 +3160 +3205 +3153 +3161 +3206 +3154 +3162 +3207 +3155 +3163 +3208 +3156 +3164 +3209 +3157 +3165 +3210 +3158 +3166 +3211 +3167 +3212 +3160 +3168 +3213 +3161 +3169 +3214 +3162 +3170 +3215 +3163 +3171 +3216 +3164 +3172 +3217 +3165 +3173 +3218 +3166 +3174 +3219 +3167 +3175 +3220 +3176 +3221 +3169 +3177 +3222 +3170 +3178 +3223 +3171 +3179 +3224 +3172 +3180 +3225 +3173 +3181 +3226 +3174 +3182 +3227 +3175 +3183 +3228 +3176 +3184 +3229 +3185 +3230 +3178 +3231 +3179 +3232 +3180 +3233 +3181 +3234 +3182 +3235 +3183 +3236 +3184 +3237 +3185 +3238 +3239 +3187 +3195 +3240 +3188 +3196 +3241 +3189 +3197 +3242 +3190 +3198 +3243 +3191 +3199 +3244 +3192 +3200 +3245 +3193 +3201 +3246 +3194 +3202 +3247 +3203 +3248 +3196 +3204 +3249 +3197 +3205 +3250 +3198 +3206 +3251 +3199 +3207 +3252 +3200 +3208 +3253 +3201 +3209 +3254 +3202 +3210 +3255 +3203 +3211 +3256 +3212 +3257 +3205 +3213 +3258 +3206 +3214 +3259 +3207 +3215 +3260 +3208 +3216 +3261 +3209 +3217 +3262 +3210 +3218 +3263 +3211 +3219 +3264 +3212 +3220 +3265 +3221 +3266 +3214 +3222 +3267 +3215 +3223 +3268 +3216 +3224 +3269 +3217 +3225 +3270 +3218 +3226 +3271 +3219 +3227 +3272 +3220 +3228 +3273 +3221 +3229 +3274 +3230 +3275 +3223 +3231 +3276 +3224 +3232 +3277 +3225 +3233 +3278 +3226 +3234 +3279 +3227 +3235 +3280 +3228 +3236 +3281 +3229 +3237 +3282 +3230 +3238 +3283 +3239 +3284 +3232 +3285 +3233 +3286 +3234 +3287 +3235 +3288 +3236 +3289 +3237 +3290 +3238 +3291 +3239 +3292 +3293 +3241 +3249 +3294 +3242 +3250 +3295 +3243 +3251 +3296 +3244 +3252 +3297 +3245 +3253 +3298 +3246 +3254 +3299 +3247 +3255 +3300 +3248 +3256 +3301 +3257 +3302 +3250 +3258 +3303 +3251 +3259 +3304 +3252 +3260 +3305 +3253 +3261 +3306 +3254 +3262 +3307 +3255 +3263 +3308 +3256 +3264 +3309 +3257 +3265 +3310 +3266 +3311 +3259 +3267 +3312 +3260 +3268 +3313 +3261 +3269 +3314 +3262 +3270 +3315 +3263 +3271 +3316 +3264 +3272 +3317 +3265 +3273 +3318 +3266 +3274 +3319 +3275 +3320 +3268 +3276 +3321 +3269 +3277 +3322 +3270 +3278 +3323 +3271 +3279 +3324 +3272 +3280 +3325 +3273 +3281 +3326 +3274 +3282 +3327 +3275 +3283 +3328 +3284 +3329 +3277 +3285 +3330 +3278 +3286 +3331 +3279 +3287 +3332 +3280 +3288 +3333 +3281 +3289 +3334 +3282 +3290 +3335 +3283 +3291 +3336 +3284 +3292 +3337 +3293 +3338 +3286 +3339 +3287 +3340 +3288 +3341 +3289 +3342 +3290 +3343 +3291 +3344 +3292 +3345 +3293 +3346 +3347 +3295 +3303 +3296 +3304 +3297 +3305 +3298 +3306 +3299 +3307 +3300 +3308 +3301 +3309 +3302 +3310 +3311 +3304 +3312 +3305 +3313 +3306 +3314 +3307 +3315 +3308 +3316 +3309 +3317 +3310 +3318 +3311 +3319 +3320 +3313 +3321 +3314 +3322 +3315 +3323 +3316 +3324 +3317 +3325 +3318 +3326 +3319 +3327 +3320 +3328 +3329 +3322 +3330 +3323 +3331 +3324 +3332 +3325 +3333 +3326 +3334 +3327 +3335 +3328 +3336 +3329 +3337 +3338 +3331 +3339 +3332 +3340 +3333 +3341 +3334 +3342 +3335 +3343 +3336 +3344 +3337 +3345 +3338 +3346 +3347 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3347 +3349 +3363 +3393 +3350 +3364 +3394 +3351 +3365 +3395 +3352 +3366 +3396 +3353 +3367 +3397 +3354 +3368 +3398 +3355 +3369 +3399 +3356 +3370 +3400 +3357 +3371 +3401 +3358 +3372 +3402 +3359 +3373 +3403 +3360 +3374 +3404 +3361 +3375 +3405 +3362 +3376 +3406 +3377 +3407 +3618 +3364 +3378 +3408 +3365 +3379 +3409 +3366 +3380 +3410 +3367 +3381 +3411 +3368 +3382 +3412 +3369 +3383 +3413 +3370 +3384 +3414 +3371 +3385 +3415 +3372 +3386 +3416 +3373 +3387 +3417 +3374 +3388 +3418 +3375 +3389 +3419 +3376 +3390 +3420 +3377 +3391 +3421 +3392 +3422 +3621 +3379 +3423 +3380 +3424 +3381 +3425 +3382 +3426 +3383 +3427 +3384 +3428 +3385 +3429 +3386 +3430 +3387 +3431 +3388 +3432 +3389 +3433 +3390 +3434 +3391 +3435 +3392 +3436 +3437 +3624 +3394 +3408 +3438 +3395 +3409 +3439 +3396 +3410 +3440 +3397 +3411 +3441 +3398 +3412 +3442 +3399 +3413 +3443 +3400 +3414 +3444 +3401 +3415 +3445 +3402 +3416 +3446 +3403 +3417 +3447 +3404 +3418 +3448 +3405 +3419 +3449 +3406 +3420 +3450 +3407 +3421 +3451 +3422 +3452 +3627 +3409 +3423 +3453 +3410 +3424 +3454 +3411 +3425 +3455 +3412 +3426 +3456 +3413 +3427 +3457 +3414 +3428 +3458 +3415 +3429 +3459 +3416 +3430 +3460 +3417 +3431 +3461 +3418 +3432 +3462 +3419 +3433 +3463 +3420 +3434 +3464 +3421 +3435 +3465 +3422 +3436 +3466 +3437 +3467 +3630 +3424 +3468 +3425 +3469 +3426 +3470 +3427 +3471 +3428 +3472 +3429 +3473 +3430 +3474 +3431 +3475 +3432 +3476 +3433 +3477 +3434 +3478 +3435 +3479 +3436 +3480 +3437 +3481 +3482 +3633 +3439 +3453 +3483 +3440 +3454 +3484 +3441 +3455 +3485 +3442 +3456 +3486 +3443 +3457 +3487 +3444 +3458 +3488 +3445 +3459 +3489 +3446 +3460 +3490 +3447 +3461 +3491 +3448 +3462 +3492 +3449 +3463 +3493 +3450 +3464 +3494 +3451 +3465 +3495 +3452 +3466 +3496 +3467 +3497 +3636 +3454 +3468 +3498 +3455 +3469 +3499 +3456 +3470 +3500 +3457 +3471 +3501 +3458 +3472 +3502 +3459 +3473 +3503 +3460 +3474 +3504 +3461 +3475 +3505 +3462 +3476 +3506 +3463 +3477 +3507 +3464 +3478 +3508 +3465 +3479 +3509 +3466 +3480 +3510 +3467 +3481 +3511 +3482 +3512 +3639 +3469 +3513 +3470 +3514 +3471 +3515 +3472 +3516 +3473 +3517 +3474 +3518 +3475 +3519 +3476 +3520 +3477 +3521 +3478 +3522 +3479 +3523 +3480 +3524 +3481 +3525 +3482 +3526 +3527 +3642 +3484 +3498 +3528 +3485 +3499 +3529 +3486 +3500 +3530 +3487 +3501 +3531 +3488 +3502 +3532 +3489 +3503 +3533 +3490 +3504 +3534 +3491 +3505 +3535 +3492 +3506 +3536 +3493 +3507 +3537 +3494 +3508 +3538 +3495 +3509 +3539 +3496 +3510 +3540 +3497 +3511 +3541 +3512 +3542 +3645 +3499 +3513 +3543 +3500 +3514 +3544 +3501 +3515 +3545 +3502 +3516 +3546 +3503 +3517 +3547 +3504 +3518 +3548 +3505 +3519 +3549 +3506 +3520 +3550 +3507 +3521 +3551 +3508 +3522 +3552 +3509 +3523 +3553 +3510 +3524 +3554 +3511 +3525 +3555 +3512 +3526 +3556 +3527 +3557 +3648 +3514 +3558 +3515 +3559 +3516 +3560 +3517 +3561 +3518 +3562 +3519 +3563 +3520 +3564 +3521 +3565 +3522 +3566 +3523 +3567 +3524 +3568 +3525 +3569 +3526 +3570 +3527 +3571 +3572 +3651 +3529 +3543 +3573 +3530 +3544 +3574 +3531 +3545 +3575 +3532 +3546 +3576 +3533 +3547 +3577 +3534 +3548 +3578 +3535 +3549 +3579 +3536 +3550 +3580 +3537 +3551 +3581 +3538 +3552 +3582 +3539 +3553 +3583 +3540 +3554 +3584 +3541 +3555 +3585 +3542 +3556 +3586 +3557 +3587 +3654 +3544 +3558 +3588 +3545 +3559 +3589 +3546 +3560 +3590 +3547 +3561 +3591 +3548 +3562 +3592 +3549 +3563 +3593 +3550 +3564 +3594 +3551 +3565 +3595 +3552 +3566 +3596 +3553 +3567 +3597 +3554 +3568 +3598 +3555 +3569 +3599 +3556 +3570 +3600 +3557 +3571 +3601 +3572 +3602 +3657 +3559 +3603 +3560 +3604 +3561 +3605 +3562 +3606 +3563 +3607 +3564 +3608 +3565 +3609 +3566 +3610 +3567 +3611 +3568 +3612 +3569 +3613 +3570 +3614 +3571 +3615 +3572 +3616 +3617 +3660 +3574 +3588 +3575 +3589 +3576 +3590 +3577 +3591 +3578 +3592 +3579 +3593 +3580 +3594 +3581 +3595 +3582 +3596 +3583 +3597 +3584 +3598 +3585 +3599 +3586 +3600 +3587 +3601 +3602 +3663 +3589 +3603 +3590 +3604 +3591 +3605 +3592 +3606 +3593 +3607 +3594 +3608 +3595 +3609 +3596 +3610 +3597 +3611 +3598 +3612 +3599 +3613 +3600 +3614 +3601 +3615 +3602 +3616 +3617 +3666 +3604 +3605 +3606 +3607 +3608 +3609 +3610 +3611 +3612 +3613 +3614 +3615 +3616 +3617 +3669 +3619 +3621 +3627 +3678 +3620 +3622 +3628 +3679 +3623 +3629 +3680 +3726 +3622 +3624 +3630 +3623 +3625 +3631 +3626 +3632 +3735 +3625 +3633 +3626 +3634 +3635 +3744 +3628 +3630 +3636 +3687 +3629 +3631 +3637 +3688 +3632 +3638 +3689 +3753 +3631 +3633 +3639 +3632 +3634 +3640 +3635 +3641 +3762 +3634 +3642 +3635 +3643 +3644 +3771 +3637 +3639 +3645 +3696 +3638 +3640 +3646 +3697 +3641 +3647 +3698 +3780 +3640 +3642 +3648 +3641 +3643 +3649 +3644 +3650 +3789 +3643 +3651 +3644 +3652 +3653 +3798 +3646 +3648 +3654 +3705 +3647 +3649 +3655 +3706 +3650 +3656 +3707 +3807 +3649 +3651 +3657 +3650 +3652 +3658 +3653 +3659 +3816 +3652 +3660 +3653 +3661 +3662 +3825 +3655 +3657 +3663 +3714 +3656 +3658 +3664 +3715 +3659 +3665 +3716 +3834 +3658 +3660 +3666 +3659 +3661 +3667 +3662 +3668 +3843 +3661 +3669 +3662 +3670 +3671 +3852 +3664 +3666 +3723 +3665 +3667 +3724 +3668 +3725 +3861 +3667 +3669 +3668 +3670 +3671 +3870 +3670 +3671 +3879 +3673 +3675 +3681 +3674 +3676 +3682 +3677 +3683 +3676 +3678 +3684 +3677 +3679 +3685 +3680 +3686 +3679 +3687 +3680 +3688 +3689 +3682 +3684 +3690 +3683 +3685 +3691 +3686 +3692 +3685 +3687 +3693 +3686 +3688 +3694 +3689 +3695 +3688 +3696 +3689 +3697 +3698 +3691 +3693 +3699 +3692 +3694 +3700 +3695 +3701 +3694 +3696 +3702 +3695 +3697 +3703 +3698 +3704 +3697 +3705 +3698 +3706 +3707 +3700 +3702 +3708 +3701 +3703 +3709 +3704 +3710 +3703 +3705 +3711 +3704 +3706 +3712 +3707 +3713 +3706 +3714 +3707 +3715 +3716 +3709 +3711 +3717 +3710 +3712 +3718 +3713 +3719 +3712 +3714 +3720 +3713 +3715 +3721 +3716 +3722 +3715 +3723 +3716 +3724 +3725 +3718 +3720 +3719 +3721 +3722 +3721 +3723 +3722 +3724 +3725 +3724 +3725 +3727 +3735 +3753 +3728 +3736 +3754 +3729 +3737 +3755 +3730 +3738 +3756 +3731 +3739 +3757 +3732 +3740 +3758 +3733 +3741 +3759 +3734 +3742 +3760 +3743 +3761 +3736 +3744 +3762 +3737 +3745 +3763 +3738 +3746 +3764 +3739 +3747 +3765 +3740 +3748 +3766 +3741 +3749 +3767 +3742 +3750 +3768 +3743 +3751 +3769 +3752 +3770 +3745 +3771 +3746 +3772 +3747 +3773 +3748 +3774 +3749 +3775 +3750 +3776 +3751 +3777 +3752 +3778 +3779 +3754 +3762 +3780 +3755 +3763 +3781 +3756 +3764 +3782 +3757 +3765 +3783 +3758 +3766 +3784 +3759 +3767 +3785 +3760 +3768 +3786 +3761 +3769 +3787 +3770 +3788 +3763 +3771 +3789 +3764 +3772 +3790 +3765 +3773 +3791 +3766 +3774 +3792 +3767 +3775 +3793 +3768 +3776 +3794 +3769 +3777 +3795 +3770 +3778 +3796 +3779 +3797 +3772 +3798 +3773 +3799 +3774 +3800 +3775 +3801 +3776 +3802 +3777 +3803 +3778 +3804 +3779 +3805 +3806 +3781 +3789 +3807 +3782 +3790 +3808 +3783 +3791 +3809 +3784 +3792 +3810 +3785 +3793 +3811 +3786 +3794 +3812 +3787 +3795 +3813 +3788 +3796 +3814 +3797 +3815 +3790 +3798 +3816 +3791 +3799 +3817 +3792 +3800 +3818 +3793 +3801 +3819 +3794 +3802 +3820 +3795 +3803 +3821 +3796 +3804 +3822 +3797 +3805 +3823 +3806 +3824 +3799 +3825 +3800 +3826 +3801 +3827 +3802 +3828 +3803 +3829 +3804 +3830 +3805 +3831 +3806 +3832 +3833 +3808 +3816 +3834 +3809 +3817 +3835 +3810 +3818 +3836 +3811 +3819 +3837 +3812 +3820 +3838 +3813 +3821 +3839 +3814 +3822 +3840 +3815 +3823 +3841 +3824 +3842 +3817 +3825 +3843 +3818 +3826 +3844 +3819 +3827 +3845 +3820 +3828 +3846 +3821 +3829 +3847 +3822 +3830 +3848 +3823 +3831 +3849 +3824 +3832 +3850 +3833 +3851 +3826 +3852 +3827 +3853 +3828 +3854 +3829 +3855 +3830 +3856 +3831 +3857 +3832 +3858 +3833 +3859 +3860 +3835 +3843 +3861 +3836 +3844 +3862 +3837 +3845 +3863 +3838 +3846 +3864 +3839 +3847 +3865 +3840 +3848 +3866 +3841 +3849 +3867 +3842 +3850 +3868 +3851 +3869 +3844 +3852 +3870 +3845 +3853 +3871 +3846 +3854 +3872 +3847 +3855 +3873 +3848 +3856 +3874 +3849 +3857 +3875 +3850 +3858 +3876 +3851 +3859 +3877 +3860 +3878 +3853 +3879 +3854 +3880 +3855 +3881 +3856 +3882 +3857 +3883 +3858 +3884 +3859 +3885 +3860 +3886 +3887 +3862 +3870 +3863 +3871 +3864 +3872 +3865 +3873 +3866 +3874 +3867 +3875 +3868 +3876 +3869 +3877 +3878 +3871 +3879 +3872 +3880 +3873 +3881 +3874 +3882 +3875 +3883 +3876 +3884 +3877 +3885 +3878 +3886 +3887 +3880 +3881 +3882 +3883 +3884 +3885 +3886 +3887 +) + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/owner b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/owner new file mode 100644 index 0000000000000000000000000000000000000000..bc4ba2f8e148d387cd3578cec2e01c1de00ec787 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/owner @@ -0,0 +1,12643 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4900 nCells: 3888 nFaces: 12618 nInternalFaces: 10710"; + location "constant/polyMesh"; + object owner; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +12618 +( +0 +0 +0 +1 +1 +1 +2 +2 +2 +3 +3 +3 +4 +4 +4 +5 +5 +5 +6 +6 +6 +7 +7 +7 +8 +8 +8 +9 +9 +9 +10 +10 +10 +11 +11 +11 +12 +12 +12 +13 +13 +13 +14 +14 +14 +15 +15 +15 +16 +16 +16 +17 +17 +17 +18 +18 +18 +19 +19 +19 +20 +20 +20 +21 +21 +21 +22 +22 +22 +23 +23 +23 +24 +24 +24 +25 +25 +25 +26 +26 +26 +27 +27 +27 +28 +28 +28 +29 +29 +29 +30 +30 +30 +31 +31 +31 +32 +32 +32 +33 +33 +33 +34 +34 +34 +35 +35 +35 +36 +36 +36 +37 +37 +37 +38 +38 +38 +39 +39 +39 +40 +40 +40 +41 +41 +41 +42 +42 +42 +43 +43 +43 +44 +44 +44 +45 +45 +45 +46 +46 +46 +47 +47 +47 +48 +48 +48 +49 +49 +49 +50 +50 +50 +51 +51 +51 +52 +52 +52 +53 +53 +53 +54 +54 +54 +55 +55 +55 +56 +56 +56 +57 +57 +57 +58 +58 +58 +59 +59 +59 +60 +60 +60 +61 +61 +61 +62 +62 +62 +63 +63 +63 +64 +64 +64 +65 +65 +65 +66 +66 +66 +67 +67 +67 +68 +68 +68 +69 +69 +69 +70 +70 +70 +71 +71 +71 +72 +72 +72 +73 +73 +73 +74 +74 +74 +75 +75 +75 +76 +76 +76 +77 +77 +77 +78 +78 +78 +79 +79 +79 +80 +80 +80 +81 +81 +81 +82 +82 +82 +83 +83 +83 +84 +84 +84 +85 +85 +85 +86 +86 +86 +87 +87 +87 +88 +88 +88 +89 +89 +89 +90 +90 +90 +91 +91 +91 +92 +92 +92 +93 +93 +93 +94 +94 +94 +95 +95 +95 +96 +96 +96 +97 +97 +97 +98 +98 +98 +99 +99 +99 +100 +100 +100 +101 +101 +101 +102 +102 +102 +103 +103 +103 +104 +104 +104 +105 +105 +105 +106 +106 +106 +107 +107 +107 +108 +108 +108 +109 +109 +109 +110 +110 +110 +111 +111 +111 +112 +112 +112 +113 +113 +113 +114 +114 +114 +115 +115 +115 +116 +116 +116 +117 +117 +117 +118 +118 +118 +119 +119 +119 +120 +120 +120 +121 +121 +121 +122 +122 +122 +123 +123 +123 +124 +124 +124 +125 +125 +125 +126 +126 +126 +127 +127 +127 +128 +128 +128 +129 +129 +129 +130 +130 +130 +131 +131 +131 +132 +132 +132 +133 +133 +133 +134 +134 +134 +135 +135 +135 +136 +136 +136 +137 +137 +137 +138 +138 +138 +139 +139 +139 +140 +140 +140 +141 +141 +141 +142 +142 +142 +143 +143 +143 +144 +144 +144 +145 +145 +145 +146 +146 +146 +147 +147 +147 +148 +148 +148 +149 +149 +149 +150 +150 +150 +151 +151 +151 +152 +152 +152 +153 +153 +153 +154 +154 +154 +155 +155 +155 +156 +156 +156 +157 +157 +157 +158 +158 +158 +159 +159 +159 +160 +160 +160 +161 +161 +161 +162 +162 +162 +163 +163 +163 +164 +164 +164 +165 +165 +165 +166 +166 +166 +167 +167 +167 +168 +168 +168 +169 +169 +169 +170 +170 +170 +171 +171 +171 +172 +172 +172 +173 +173 +173 +174 +174 +174 +175 +175 +175 +176 +176 +176 +177 +177 +177 +178 +178 +178 +179 +179 +179 +180 +180 +180 +181 +181 +181 +182 +182 +182 +183 +183 +183 +184 +184 +184 +185 +185 +185 +186 +186 +186 +187 +187 +187 +188 +188 +188 +189 +189 +189 +190 +190 +190 +191 +191 +191 +192 +192 +192 +193 +193 +193 +194 +194 +194 +195 +195 +195 +196 +196 +196 +197 +197 +197 +198 +198 +198 +199 +199 +199 +200 +200 +200 +201 +201 +201 +202 +202 +202 +203 +203 +203 +204 +204 +204 +205 +205 +205 +206 +206 +206 +207 +207 +207 +208 +208 +208 +209 +209 +209 +210 +210 +210 +211 +211 +211 +212 +212 +212 +213 +213 +213 +214 +214 +214 +215 +215 +215 +216 +216 +216 +217 +217 +217 +218 +218 +218 +219 +219 +219 +220 +220 +220 +221 +221 +221 +222 +222 +222 +223 +223 +223 +224 +224 +224 +225 +225 +226 +226 +227 +227 +228 +228 +229 +229 +230 +230 +231 +231 +232 +232 +233 +233 +234 +234 +235 +235 +236 +236 +237 +237 +238 +238 +239 +239 +240 +240 +241 +241 +242 +242 +243 +243 +244 +244 +245 +245 +246 +246 +247 +247 +248 +248 +249 +249 +250 +250 +251 +251 +252 +252 +253 +253 +254 +254 +255 +255 +256 +256 +257 +257 +258 +258 +259 +259 +260 +260 +261 +261 +262 +262 +263 +263 +264 +264 +265 +265 +266 +266 +267 +267 +268 +268 +269 +269 +270 +270 +270 +271 +271 +271 +272 +272 +272 +273 +273 +273 +274 +274 +274 +275 +275 +275 +276 +276 +276 +277 +277 +277 +278 +278 +278 +279 +279 +279 +280 +280 +280 +281 +281 +281 +282 +282 +282 +283 +283 +283 +284 +284 +284 +285 +285 +285 +286 +286 +286 +287 +287 +287 +288 +288 +288 +289 +289 +289 +290 +290 +290 +291 +291 +291 +292 +292 +292 +293 +293 +293 +294 +294 +294 +295 +295 +295 +296 +296 +296 +297 +297 +297 +298 +298 +298 +299 +299 +299 +300 +300 +300 +301 +301 +301 +302 +302 +302 +303 +303 +303 +304 +304 +304 +305 +305 +305 +306 +306 +306 +307 +307 +307 +308 +308 +308 +309 +309 +309 +310 +310 +310 +311 +311 +311 +312 +312 +312 +313 +313 +313 +314 +314 +314 +315 +315 +316 +316 +317 +317 +318 +318 +319 +319 +320 +320 +321 +321 +322 +322 +323 +323 +324 +324 +324 +324 +325 +325 +325 +326 +326 +326 +327 +327 +327 +327 +328 +328 +328 +329 +329 +329 +330 +330 +330 +330 +331 +331 +331 +332 +332 +332 +333 +333 +333 +333 +334 +334 +334 +335 +335 +335 +336 +336 +336 +336 +337 +337 +337 +338 +338 +338 +339 +339 +339 +339 +340 +340 +340 +341 +341 +341 +342 +342 +342 +342 +343 +343 +343 +344 +344 +344 +345 +345 +345 +345 +346 +346 +346 +347 +347 +347 +348 +348 +348 +348 +349 +349 +349 +350 +350 +350 +351 +351 +351 +351 +352 +352 +352 +353 +353 +353 +354 +354 +354 +354 +355 +355 +355 +356 +356 +356 +357 +357 +357 +357 +358 +358 +358 +359 +359 +359 +360 +360 +360 +360 +361 +361 +361 +362 +362 +362 +363 +363 +363 +363 +364 +364 +364 +365 +365 +365 +366 +366 +366 +366 +367 +367 +367 +368 +368 +368 +369 +369 +369 +369 +370 +370 +370 +371 +371 +371 +372 +372 +372 +372 +373 +373 +373 +374 +374 +374 +375 +375 +375 +375 +376 +376 +376 +377 +377 +377 +378 +378 +378 +378 +379 +379 +379 +380 +380 +380 +381 +381 +381 +381 +382 +382 +382 +383 +383 +383 +384 +384 +384 +384 +385 +385 +385 +386 +386 +386 +387 +387 +387 +387 +388 +388 +388 +389 +389 +389 +390 +390 +390 +390 +391 +391 +391 +392 +392 +392 +393 +393 +393 +393 +394 +394 +394 +395 +395 +395 +396 +396 +396 +396 +397 +397 +397 +398 +398 +398 +399 +399 +399 +399 +400 +400 +400 +401 +401 +401 +402 +402 +402 +402 +403 +403 +403 +404 +404 +404 +405 +405 +405 +405 +406 +406 +406 +407 +407 +407 +408 +408 +408 +408 +409 +409 +409 +410 +410 +410 +411 +411 +411 +411 +412 +412 +412 +413 +413 +413 +414 +414 +414 +415 +415 +416 +416 +417 +417 +417 +418 +418 +419 +419 +420 +420 +420 +421 +421 +422 +422 +423 +423 +423 +424 +424 +425 +425 +426 +426 +426 +427 +427 +428 +428 +429 +429 +429 +430 +430 +431 +431 +432 +432 +432 +433 +433 +433 +434 +434 +434 +435 +435 +435 +436 +436 +436 +437 +437 +437 +438 +438 +438 +439 +439 +439 +440 +440 +441 +441 +441 +442 +442 +442 +443 +443 +443 +444 +444 +444 +445 +445 +445 +446 +446 +446 +447 +447 +447 +448 +448 +448 +449 +449 +450 +450 +450 +451 +451 +451 +452 +452 +452 +453 +453 +453 +454 +454 +454 +455 +455 +455 +456 +456 +456 +457 +457 +457 +458 +458 +459 +459 +459 +460 +460 +460 +461 +461 +461 +462 +462 +462 +463 +463 +463 +464 +464 +464 +465 +465 +465 +466 +466 +466 +467 +467 +468 +468 +468 +469 +469 +469 +470 +470 +470 +471 +471 +471 +472 +472 +472 +473 +473 +473 +474 +474 +474 +475 +475 +475 +476 +476 +477 +477 +477 +478 +478 +478 +479 +479 +479 +480 +480 +480 +481 +481 +481 +482 +482 +482 +483 +483 +483 +484 +484 +484 +485 +485 +486 +486 +486 +487 +487 +487 +488 +488 +488 +489 +489 +489 +490 +490 +490 +491 +491 +491 +492 +492 +492 +493 +493 +493 +494 +494 +495 +495 +495 +496 +496 +496 +497 +497 +497 +498 +498 +498 +499 +499 +499 +500 +500 +500 +501 +501 +501 +502 +502 +502 +503 +503 +504 +504 +504 +505 +505 +505 +506 +506 +506 +507 +507 +507 +508 +508 +508 +509 +509 +509 +510 +510 +510 +511 +511 +511 +512 +512 +513 +513 +513 +514 +514 +514 +515 +515 +515 +516 +516 +516 +517 +517 +517 +518 +518 +518 +519 +519 +519 +520 +520 +520 +521 +521 +522 +522 +522 +523 +523 +523 +524 +524 +524 +525 +525 +525 +526 +526 +526 +527 +527 +527 +528 +528 +528 +529 +529 +529 +530 +530 +531 +531 +531 +532 +532 +532 +533 +533 +533 +534 +534 +534 +535 +535 +535 +536 +536 +536 +537 +537 +537 +538 +538 +538 +539 +539 +540 +540 +540 +541 +541 +541 +542 +542 +542 +543 +543 +543 +544 +544 +544 +545 +545 +545 +546 +546 +546 +547 +547 +547 +548 +548 +549 +549 +549 +550 +550 +550 +551 +551 +551 +552 +552 +552 +553 +553 +553 +554 +554 +554 +555 +555 +555 +556 +556 +556 +557 +557 +558 +558 +558 +559 +559 +559 +560 +560 +560 +561 +561 +561 +562 +562 +562 +563 +563 +563 +564 +564 +564 +565 +565 +565 +566 +566 +567 +567 +568 +568 +569 +569 +570 +570 +571 +571 +572 +572 +573 +573 +574 +574 +575 +576 +576 +577 +577 +578 +578 +579 +579 +580 +580 +581 +581 +582 +582 +583 +583 +584 +585 +585 +586 +586 +587 +587 +588 +588 +589 +589 +590 +590 +591 +591 +592 +592 +593 +594 +594 +594 +595 +595 +595 +596 +596 +596 +597 +597 +597 +598 +598 +598 +599 +599 +599 +600 +600 +600 +601 +601 +601 +602 +602 +602 +603 +603 +603 +604 +604 +604 +605 +605 +605 +606 +606 +606 +607 +607 +607 +608 +608 +609 +609 +609 +610 +610 +610 +611 +611 +611 +612 +612 +612 +613 +613 +613 +614 +614 +614 +615 +615 +615 +616 +616 +616 +617 +617 +617 +618 +618 +618 +619 +619 +619 +620 +620 +620 +621 +621 +621 +622 +622 +622 +623 +623 +624 +624 +624 +625 +625 +625 +626 +626 +626 +627 +627 +627 +628 +628 +628 +629 +629 +629 +630 +630 +630 +631 +631 +631 +632 +632 +632 +633 +633 +633 +634 +634 +634 +635 +635 +635 +636 +636 +636 +637 +637 +637 +638 +638 +639 +639 +639 +640 +640 +640 +641 +641 +641 +642 +642 +642 +643 +643 +643 +644 +644 +644 +645 +645 +645 +646 +646 +646 +647 +647 +647 +648 +648 +648 +649 +649 +649 +650 +650 +650 +651 +651 +651 +652 +652 +652 +653 +653 +654 +654 +654 +655 +655 +655 +656 +656 +656 +657 +657 +657 +658 +658 +658 +659 +659 +659 +660 +660 +660 +661 +661 +661 +662 +662 +662 +663 +663 +663 +664 +664 +664 +665 +665 +665 +666 +666 +666 +667 +667 +667 +668 +668 +669 +669 +669 +670 +670 +670 +671 +671 +671 +672 +672 +672 +673 +673 +673 +674 +674 +674 +675 +675 +675 +676 +676 +676 +677 +677 +677 +678 +678 +678 +679 +679 +679 +680 +680 +680 +681 +681 +681 +682 +682 +682 +683 +683 +684 +684 +684 +685 +685 +685 +686 +686 +686 +687 +687 +687 +688 +688 +688 +689 +689 +689 +690 +690 +690 +691 +691 +691 +692 +692 +692 +693 +693 +693 +694 +694 +694 +695 +695 +695 +696 +696 +696 +697 +697 +697 +698 +698 +699 +699 +699 +700 +700 +700 +701 +701 +701 +702 +702 +702 +703 +703 +703 +704 +704 +704 +705 +705 +705 +706 +706 +706 +707 +707 +707 +708 +708 +708 +709 +709 +709 +710 +710 +710 +711 +711 +711 +712 +712 +712 +713 +713 +714 +714 +714 +715 +715 +715 +716 +716 +716 +717 +717 +717 +718 +718 +718 +719 +719 +719 +720 +720 +720 +721 +721 +721 +722 +722 +722 +723 +723 +723 +724 +724 +724 +725 +725 +725 +726 +726 +726 +727 +727 +727 +728 +728 +729 +729 +729 +730 +730 +730 +731 +731 +731 +732 +732 +732 +733 +733 +733 +734 +734 +734 +735 +735 +735 +736 +736 +736 +737 +737 +737 +738 +738 +738 +739 +739 +739 +740 +740 +740 +741 +741 +741 +742 +742 +742 +743 +743 +744 +744 +744 +745 +745 +745 +746 +746 +746 +747 +747 +747 +748 +748 +748 +749 +749 +749 +750 +750 +750 +751 +751 +751 +752 +752 +752 +753 +753 +753 +754 +754 +754 +755 +755 +755 +756 +756 +756 +757 +757 +757 +758 +758 +759 +759 +759 +760 +760 +760 +761 +761 +761 +762 +762 +762 +763 +763 +763 +764 +764 +764 +765 +765 +765 +766 +766 +766 +767 +767 +767 +768 +768 +768 +769 +769 +769 +770 +770 +770 +771 +771 +771 +772 +772 +772 +773 +773 +774 +774 +774 +775 +775 +775 +776 +776 +776 +777 +777 +777 +778 +778 +778 +779 +779 +779 +780 +780 +780 +781 +781 +781 +782 +782 +782 +783 +783 +783 +784 +784 +784 +785 +785 +785 +786 +786 +786 +787 +787 +787 +788 +788 +789 +789 +789 +790 +790 +790 +791 +791 +791 +792 +792 +792 +793 +793 +793 +794 +794 +794 +795 +795 +795 +796 +796 +796 +797 +797 +797 +798 +798 +798 +799 +799 +799 +800 +800 +800 +801 +801 +801 +802 +802 +802 +803 +803 +804 +804 +804 +805 +805 +805 +806 +806 +806 +807 +807 +807 +808 +808 +808 +809 +809 +809 +810 +810 +810 +811 +811 +811 +812 +812 +812 +813 +813 +813 +814 +814 +814 +815 +815 +815 +816 +816 +816 +817 +817 +817 +818 +818 +819 +819 +819 +820 +820 +820 +821 +821 +821 +822 +822 +822 +823 +823 +823 +824 +824 +824 +825 +825 +825 +826 +826 +826 +827 +827 +827 +828 +828 +828 +829 +829 +829 +830 +830 +830 +831 +831 +831 +832 +832 +832 +833 +833 +834 +834 +834 +835 +835 +835 +836 +836 +836 +837 +837 +837 +838 +838 +838 +839 +839 +839 +840 +840 +840 +841 +841 +841 +842 +842 +842 +843 +843 +843 +844 +844 +844 +845 +845 +845 +846 +846 +846 +847 +847 +847 +848 +848 +849 +849 +849 +850 +850 +850 +851 +851 +851 +852 +852 +852 +853 +853 +853 +854 +854 +854 +855 +855 +855 +856 +856 +856 +857 +857 +857 +858 +858 +858 +859 +859 +859 +860 +860 +860 +861 +861 +861 +862 +862 +862 +863 +863 +864 +864 +864 +865 +865 +865 +866 +866 +866 +867 +867 +867 +868 +868 +868 +869 +869 +869 +870 +870 +870 +871 +871 +871 +872 +872 +872 +873 +873 +873 +874 +874 +874 +875 +875 +875 +876 +876 +876 +877 +877 +877 +878 +878 +879 +879 +879 +880 +880 +880 +881 +881 +881 +882 +882 +882 +883 +883 +883 +884 +884 +884 +885 +885 +885 +886 +886 +886 +887 +887 +887 +888 +888 +888 +889 +889 +889 +890 +890 +890 +891 +891 +891 +892 +892 +892 +893 +893 +894 +894 +894 +895 +895 +895 +896 +896 +896 +897 +897 +897 +898 +898 +898 +899 +899 +899 +900 +900 +900 +901 +901 +901 +902 +902 +902 +903 +903 +903 +904 +904 +904 +905 +905 +905 +906 +906 +906 +907 +907 +907 +908 +908 +909 +909 +909 +910 +910 +910 +911 +911 +911 +912 +912 +912 +913 +913 +913 +914 +914 +914 +915 +915 +915 +916 +916 +916 +917 +917 +917 +918 +918 +918 +919 +919 +919 +920 +920 +920 +921 +921 +921 +922 +922 +922 +923 +923 +924 +924 +924 +925 +925 +925 +926 +926 +926 +927 +927 +927 +928 +928 +928 +929 +929 +929 +930 +930 +930 +931 +931 +931 +932 +932 +932 +933 +933 +933 +934 +934 +934 +935 +935 +935 +936 +936 +936 +937 +937 +937 +938 +938 +939 +939 +939 +940 +940 +940 +941 +941 +941 +942 +942 +942 +943 +943 +943 +944 +944 +944 +945 +945 +945 +946 +946 +946 +947 +947 +947 +948 +948 +948 +949 +949 +949 +950 +950 +950 +951 +951 +951 +952 +952 +952 +953 +953 +954 +954 +954 +955 +955 +955 +956 +956 +956 +957 +957 +957 +958 +958 +958 +959 +959 +959 +960 +960 +960 +961 +961 +961 +962 +962 +962 +963 +963 +963 +964 +964 +964 +965 +965 +965 +966 +966 +966 +967 +967 +967 +968 +968 +969 +969 +969 +970 +970 +970 +971 +971 +971 +972 +972 +972 +973 +973 +973 +974 +974 +974 +975 +975 +975 +976 +976 +976 +977 +977 +977 +978 +978 +978 +979 +979 +979 +980 +980 +980 +981 +981 +981 +982 +982 +982 +983 +983 +984 +984 +984 +985 +985 +985 +986 +986 +986 +987 +987 +987 +988 +988 +988 +989 +989 +989 +990 +990 +990 +991 +991 +991 +992 +992 +992 +993 +993 +993 +994 +994 +994 +995 +995 +995 +996 +996 +996 +997 +997 +997 +998 +998 +999 +999 +999 +1000 +1000 +1000 +1001 +1001 +1001 +1002 +1002 +1002 +1003 +1003 +1003 +1004 +1004 +1004 +1005 +1005 +1005 +1006 +1006 +1006 +1007 +1007 +1007 +1008 +1008 +1008 +1009 +1009 +1009 +1010 +1010 +1010 +1011 +1011 +1011 +1012 +1012 +1012 +1013 +1013 +1014 +1014 +1014 +1015 +1015 +1015 +1016 +1016 +1016 +1017 +1017 +1017 +1018 +1018 +1018 +1019 +1019 +1019 +1020 +1020 +1020 +1021 +1021 +1021 +1022 +1022 +1022 +1023 +1023 +1023 +1024 +1024 +1024 +1025 +1025 +1025 +1026 +1026 +1026 +1027 +1027 +1027 +1028 +1028 +1029 +1029 +1029 +1030 +1030 +1030 +1031 +1031 +1031 +1032 +1032 +1032 +1033 +1033 +1033 +1034 +1034 +1034 +1035 +1035 +1035 +1036 +1036 +1036 +1037 +1037 +1037 +1038 +1038 +1038 +1039 +1039 +1039 +1040 +1040 +1040 +1041 +1041 +1041 +1042 +1042 +1042 +1043 +1043 +1044 +1044 +1045 +1045 +1046 +1046 +1047 +1047 +1048 +1048 +1049 +1049 +1050 +1050 +1051 +1051 +1052 +1052 +1053 +1053 +1054 +1054 +1055 +1055 +1056 +1056 +1057 +1057 +1058 +1059 +1059 +1060 +1060 +1061 +1061 +1062 +1062 +1063 +1063 +1064 +1064 +1065 +1065 +1066 +1066 +1067 +1067 +1068 +1068 +1069 +1069 +1070 +1070 +1071 +1071 +1072 +1072 +1073 +1074 +1074 +1075 +1075 +1076 +1076 +1077 +1077 +1078 +1078 +1079 +1079 +1080 +1080 +1081 +1081 +1082 +1082 +1083 +1083 +1084 +1084 +1085 +1085 +1086 +1086 +1087 +1087 +1088 +1089 +1089 +1090 +1090 +1091 +1091 +1092 +1092 +1093 +1093 +1094 +1094 +1095 +1095 +1096 +1096 +1097 +1097 +1098 +1098 +1099 +1099 +1100 +1100 +1101 +1101 +1102 +1102 +1103 +1104 +1104 +1105 +1105 +1106 +1106 +1107 +1107 +1108 +1108 +1109 +1109 +1110 +1110 +1111 +1111 +1112 +1112 +1113 +1113 +1114 +1114 +1115 +1115 +1116 +1116 +1117 +1117 +1118 +1119 +1119 +1120 +1120 +1121 +1121 +1122 +1122 +1123 +1123 +1124 +1124 +1125 +1125 +1126 +1126 +1127 +1127 +1128 +1128 +1129 +1129 +1130 +1130 +1131 +1131 +1132 +1132 +1133 +1134 +1134 +1134 +1135 +1135 +1135 +1136 +1136 +1136 +1137 +1137 +1137 +1138 +1138 +1138 +1139 +1139 +1139 +1140 +1140 +1140 +1141 +1141 +1141 +1142 +1142 +1142 +1143 +1143 +1143 +1144 +1144 +1144 +1145 +1145 +1145 +1146 +1146 +1146 +1147 +1147 +1147 +1148 +1148 +1148 +1149 +1149 +1149 +1150 +1150 +1150 +1151 +1151 +1151 +1152 +1152 +1152 +1153 +1153 +1153 +1154 +1154 +1154 +1155 +1155 +1155 +1156 +1156 +1156 +1157 +1157 +1157 +1158 +1158 +1158 +1159 +1159 +1159 +1160 +1160 +1160 +1161 +1161 +1161 +1162 +1162 +1162 +1163 +1163 +1163 +1164 +1164 +1164 +1165 +1165 +1165 +1166 +1166 +1166 +1167 +1167 +1167 +1168 +1168 +1168 +1169 +1169 +1169 +1170 +1170 +1170 +1171 +1171 +1171 +1172 +1172 +1172 +1173 +1173 +1173 +1174 +1174 +1174 +1175 +1175 +1175 +1176 +1176 +1176 +1177 +1177 +1177 +1178 +1178 +1178 +1179 +1179 +1179 +1180 +1180 +1180 +1181 +1181 +1181 +1182 +1182 +1182 +1183 +1183 +1183 +1184 +1184 +1184 +1185 +1185 +1185 +1186 +1186 +1186 +1187 +1187 +1187 +1188 +1188 +1188 +1189 +1189 +1189 +1190 +1190 +1190 +1191 +1191 +1191 +1192 +1192 +1192 +1193 +1193 +1193 +1194 +1194 +1194 +1195 +1195 +1195 +1196 +1196 +1196 +1197 +1197 +1197 +1198 +1198 +1198 +1199 +1199 +1199 +1200 +1200 +1200 +1201 +1201 +1201 +1202 +1202 +1202 +1203 +1203 +1203 +1204 +1204 +1204 +1205 +1205 +1205 +1206 +1206 +1206 +1207 +1207 +1207 +1208 +1208 +1208 +1209 +1209 +1209 +1210 +1210 +1210 +1211 +1211 +1211 +1212 +1212 +1212 +1213 +1213 +1213 +1214 +1214 +1214 +1215 +1215 +1215 +1216 +1216 +1216 +1217 +1217 +1217 +1218 +1218 +1218 +1219 +1219 +1219 +1220 +1220 +1220 +1221 +1221 +1221 +1222 +1222 +1222 +1223 +1223 +1223 +1224 +1224 +1224 +1225 +1225 +1225 +1226 +1226 +1226 +1227 +1227 +1227 +1228 +1228 +1228 +1229 +1229 +1229 +1230 +1230 +1230 +1231 +1231 +1231 +1232 +1232 +1232 +1233 +1233 +1233 +1234 +1234 +1234 +1235 +1235 +1235 +1236 +1236 +1236 +1237 +1237 +1237 +1238 +1238 +1238 +1239 +1239 +1239 +1240 +1240 +1240 +1241 +1241 +1241 +1242 +1242 +1242 +1243 +1243 +1243 +1244 +1244 +1244 +1245 +1245 +1245 +1246 +1246 +1246 +1247 +1247 +1247 +1248 +1248 +1248 +1249 +1249 +1249 +1250 +1250 +1250 +1251 +1251 +1251 +1252 +1252 +1252 +1253 +1253 +1253 +1254 +1254 +1254 +1255 +1255 +1255 +1256 +1256 +1256 +1257 +1257 +1257 +1258 +1258 +1258 +1259 +1259 +1259 +1260 +1260 +1260 +1261 +1261 +1261 +1262 +1262 +1262 +1263 +1263 +1263 +1264 +1264 +1264 +1265 +1265 +1265 +1266 +1266 +1266 +1267 +1267 +1267 +1268 +1268 +1268 +1269 +1269 +1269 +1270 +1270 +1270 +1271 +1271 +1271 +1272 +1272 +1272 +1273 +1273 +1273 +1274 +1274 +1274 +1275 +1275 +1275 +1276 +1276 +1276 +1277 +1277 +1277 +1278 +1278 +1278 +1279 +1279 +1279 +1280 +1280 +1280 +1281 +1281 +1281 +1282 +1282 +1282 +1283 +1283 +1283 +1284 +1284 +1284 +1285 +1285 +1285 +1286 +1286 +1286 +1287 +1287 +1287 +1288 +1288 +1288 +1289 +1289 +1289 +1290 +1290 +1290 +1291 +1291 +1291 +1292 +1292 +1292 +1293 +1293 +1293 +1294 +1294 +1294 +1295 +1295 +1295 +1296 +1296 +1296 +1297 +1297 +1297 +1298 +1298 +1298 +1299 +1299 +1299 +1300 +1300 +1300 +1301 +1301 +1301 +1302 +1302 +1302 +1303 +1303 +1303 +1304 +1304 +1304 +1305 +1305 +1305 +1306 +1306 +1306 +1307 +1307 +1307 +1308 +1308 +1308 +1309 +1309 +1309 +1310 +1310 +1310 +1311 +1311 +1311 +1312 +1312 +1312 +1313 +1313 +1313 +1314 +1314 +1314 +1315 +1315 +1315 +1316 +1316 +1316 +1317 +1317 +1317 +1318 +1318 +1318 +1319 +1319 +1319 +1320 +1320 +1320 +1321 +1321 +1321 +1322 +1322 +1322 +1323 +1323 +1323 +1324 +1324 +1324 +1325 +1325 +1325 +1326 +1326 +1326 +1327 +1327 +1327 +1328 +1328 +1328 +1329 +1329 +1329 +1330 +1330 +1330 +1331 +1331 +1331 +1332 +1332 +1332 +1333 +1333 +1333 +1334 +1334 +1334 +1335 +1335 +1335 +1336 +1336 +1336 +1337 +1337 +1337 +1338 +1338 +1338 +1339 +1339 +1339 +1340 +1340 +1340 +1341 +1341 +1341 +1342 +1342 +1342 +1343 +1343 +1343 +1344 +1344 +1344 +1345 +1345 +1345 +1346 +1346 +1346 +1347 +1347 +1347 +1348 +1348 +1348 +1349 +1349 +1349 +1350 +1350 +1350 +1351 +1351 +1351 +1352 +1352 +1352 +1353 +1353 +1353 +1354 +1354 +1354 +1355 +1355 +1355 +1356 +1356 +1356 +1357 +1357 +1357 +1358 +1358 +1358 +1359 +1359 +1359 +1360 +1360 +1360 +1361 +1361 +1361 +1362 +1362 +1362 +1363 +1363 +1363 +1364 +1364 +1364 +1365 +1365 +1365 +1366 +1366 +1366 +1367 +1367 +1367 +1368 +1368 +1368 +1369 +1369 +1369 +1370 +1370 +1370 +1371 +1371 +1371 +1372 +1372 +1372 +1373 +1373 +1373 +1374 +1374 +1374 +1375 +1375 +1375 +1376 +1376 +1376 +1377 +1377 +1377 +1378 +1378 +1378 +1379 +1379 +1379 +1380 +1380 +1380 +1381 +1381 +1381 +1382 +1382 +1382 +1383 +1383 +1383 +1384 +1384 +1384 +1385 +1385 +1385 +1386 +1386 +1386 +1387 +1387 +1387 +1388 +1388 +1388 +1389 +1389 +1389 +1390 +1390 +1390 +1391 +1391 +1391 +1392 +1392 +1392 +1393 +1393 +1393 +1394 +1394 +1394 +1395 +1395 +1395 +1396 +1396 +1396 +1397 +1397 +1397 +1398 +1398 +1398 +1399 +1399 +1399 +1400 +1400 +1400 +1401 +1401 +1401 +1402 +1402 +1402 +1403 +1403 +1403 +1404 +1404 +1404 +1405 +1405 +1405 +1406 +1406 +1406 +1407 +1407 +1407 +1408 +1408 +1408 +1409 +1409 +1409 +1410 +1410 +1410 +1411 +1411 +1411 +1412 +1412 +1412 +1413 +1413 +1413 +1414 +1414 +1414 +1415 +1415 +1415 +1416 +1416 +1416 +1417 +1417 +1417 +1418 +1418 +1418 +1419 +1419 +1419 +1420 +1420 +1420 +1421 +1421 +1421 +1422 +1422 +1422 +1423 +1423 +1423 +1424 +1424 +1424 +1425 +1425 +1425 +1426 +1426 +1426 +1427 +1427 +1427 +1428 +1428 +1428 +1429 +1429 +1429 +1430 +1430 +1430 +1431 +1431 +1431 +1432 +1432 +1432 +1433 +1433 +1433 +1434 +1434 +1434 +1435 +1435 +1435 +1436 +1436 +1436 +1437 +1437 +1437 +1438 +1438 +1438 +1439 +1439 +1439 +1440 +1440 +1440 +1441 +1441 +1441 +1442 +1442 +1442 +1443 +1443 +1443 +1444 +1444 +1444 +1445 +1445 +1445 +1446 +1446 +1446 +1447 +1447 +1447 +1448 +1448 +1448 +1449 +1449 +1449 +1450 +1450 +1450 +1451 +1451 +1451 +1452 +1452 +1452 +1453 +1453 +1453 +1454 +1454 +1454 +1455 +1455 +1455 +1456 +1456 +1456 +1457 +1457 +1457 +1458 +1458 +1458 +1459 +1459 +1459 +1460 +1460 +1460 +1461 +1461 +1461 +1462 +1462 +1462 +1463 +1463 +1463 +1464 +1464 +1464 +1465 +1465 +1465 +1466 +1466 +1466 +1467 +1467 +1467 +1468 +1468 +1468 +1469 +1469 +1469 +1470 +1470 +1470 +1471 +1471 +1471 +1472 +1472 +1472 +1473 +1473 +1473 +1474 +1474 +1474 +1475 +1475 +1475 +1476 +1476 +1476 +1477 +1477 +1477 +1478 +1478 +1478 +1479 +1479 +1479 +1480 +1480 +1480 +1481 +1481 +1481 +1482 +1482 +1482 +1483 +1483 +1483 +1484 +1484 +1484 +1485 +1485 +1485 +1486 +1486 +1486 +1487 +1487 +1487 +1488 +1488 +1488 +1489 +1489 +1489 +1490 +1490 +1490 +1491 +1491 +1491 +1492 +1492 +1492 +1493 +1493 +1493 +1494 +1494 +1494 +1495 +1495 +1495 +1496 +1496 +1496 +1497 +1497 +1497 +1498 +1498 +1498 +1499 +1499 +1499 +1500 +1500 +1500 +1501 +1501 +1501 +1502 +1502 +1502 +1503 +1503 +1503 +1504 +1504 +1504 +1505 +1505 +1505 +1506 +1506 +1506 +1507 +1507 +1507 +1508 +1508 +1508 +1509 +1509 +1509 +1510 +1510 +1510 +1511 +1511 +1511 +1512 +1512 +1512 +1513 +1513 +1513 +1514 +1514 +1514 +1515 +1515 +1515 +1516 +1516 +1516 +1517 +1517 +1517 +1518 +1518 +1518 +1519 +1519 +1519 +1520 +1520 +1520 +1521 +1521 +1521 +1522 +1522 +1522 +1523 +1523 +1523 +1524 +1524 +1524 +1525 +1525 +1525 +1526 +1526 +1526 +1527 +1527 +1527 +1528 +1528 +1528 +1529 +1529 +1529 +1530 +1530 +1530 +1531 +1531 +1531 +1532 +1532 +1532 +1533 +1533 +1533 +1534 +1534 +1534 +1535 +1535 +1535 +1536 +1536 +1536 +1537 +1537 +1537 +1538 +1538 +1538 +1539 +1539 +1539 +1540 +1540 +1540 +1541 +1541 +1541 +1542 +1542 +1542 +1543 +1543 +1543 +1544 +1544 +1544 +1545 +1545 +1545 +1546 +1546 +1546 +1547 +1547 +1547 +1548 +1548 +1548 +1549 +1549 +1549 +1550 +1550 +1550 +1551 +1551 +1551 +1552 +1552 +1552 +1553 +1553 +1553 +1554 +1554 +1554 +1555 +1555 +1555 +1556 +1556 +1556 +1557 +1557 +1557 +1558 +1558 +1558 +1559 +1559 +1559 +1560 +1560 +1560 +1561 +1561 +1561 +1562 +1562 +1562 +1563 +1563 +1563 +1564 +1564 +1564 +1565 +1565 +1565 +1566 +1566 +1566 +1567 +1567 +1567 +1568 +1568 +1568 +1569 +1569 +1569 +1570 +1570 +1570 +1571 +1571 +1571 +1572 +1572 +1572 +1573 +1573 +1573 +1574 +1574 +1574 +1575 +1575 +1575 +1576 +1576 +1576 +1577 +1577 +1577 +1578 +1578 +1578 +1579 +1579 +1579 +1580 +1580 +1580 +1581 +1581 +1581 +1582 +1582 +1582 +1583 +1583 +1583 +1584 +1584 +1584 +1585 +1585 +1585 +1586 +1586 +1586 +1587 +1587 +1587 +1588 +1588 +1588 +1589 +1589 +1589 +1590 +1590 +1590 +1591 +1591 +1591 +1592 +1592 +1592 +1593 +1593 +1593 +1594 +1594 +1594 +1595 +1595 +1595 +1596 +1596 +1596 +1597 +1597 +1597 +1598 +1598 +1598 +1599 +1599 +1599 +1600 +1600 +1600 +1601 +1601 +1601 +1602 +1602 +1602 +1603 +1603 +1603 +1604 +1604 +1604 +1605 +1605 +1605 +1606 +1606 +1606 +1607 +1607 +1607 +1608 +1608 +1608 +1609 +1609 +1609 +1610 +1610 +1610 +1611 +1611 +1611 +1612 +1612 +1612 +1613 +1613 +1613 +1614 +1614 +1614 +1615 +1615 +1615 +1616 +1616 +1616 +1617 +1617 +1617 +1618 +1618 +1618 +1619 +1619 +1619 +1620 +1620 +1620 +1621 +1621 +1621 +1622 +1622 +1622 +1623 +1623 +1623 +1624 +1624 +1624 +1625 +1625 +1625 +1626 +1626 +1626 +1627 +1627 +1627 +1628 +1628 +1628 +1629 +1629 +1629 +1630 +1630 +1630 +1631 +1631 +1631 +1632 +1632 +1632 +1633 +1633 +1633 +1634 +1634 +1634 +1635 +1635 +1635 +1636 +1636 +1636 +1637 +1637 +1637 +1638 +1638 +1638 +1639 +1639 +1639 +1640 +1640 +1640 +1641 +1641 +1641 +1642 +1642 +1642 +1643 +1643 +1643 +1644 +1644 +1644 +1645 +1645 +1645 +1646 +1646 +1646 +1647 +1647 +1647 +1648 +1648 +1648 +1649 +1649 +1649 +1650 +1650 +1650 +1651 +1651 +1651 +1652 +1652 +1652 +1653 +1653 +1653 +1654 +1654 +1654 +1655 +1655 +1655 +1656 +1656 +1656 +1657 +1657 +1657 +1658 +1658 +1658 +1659 +1659 +1659 +1660 +1660 +1660 +1661 +1661 +1661 +1662 +1662 +1662 +1663 +1663 +1663 +1664 +1664 +1664 +1665 +1665 +1665 +1666 +1666 +1666 +1667 +1667 +1667 +1668 +1668 +1668 +1669 +1669 +1669 +1670 +1670 +1670 +1671 +1671 +1671 +1672 +1672 +1672 +1673 +1673 +1673 +1674 +1674 +1674 +1675 +1675 +1675 +1676 +1676 +1676 +1677 +1677 +1677 +1678 +1678 +1678 +1679 +1679 +1679 +1680 +1680 +1680 +1681 +1681 +1681 +1682 +1682 +1682 +1683 +1683 +1683 +1684 +1684 +1684 +1685 +1685 +1685 +1686 +1686 +1686 +1687 +1687 +1687 +1688 +1688 +1688 +1689 +1689 +1689 +1690 +1690 +1690 +1691 +1691 +1691 +1692 +1692 +1692 +1693 +1693 +1693 +1694 +1694 +1694 +1695 +1695 +1695 +1696 +1696 +1696 +1697 +1697 +1697 +1698 +1698 +1698 +1699 +1699 +1699 +1700 +1700 +1700 +1701 +1701 +1701 +1702 +1702 +1702 +1703 +1703 +1703 +1704 +1704 +1704 +1705 +1705 +1705 +1706 +1706 +1706 +1707 +1707 +1707 +1708 +1708 +1708 +1709 +1709 +1709 +1710 +1710 +1710 +1711 +1711 +1711 +1712 +1712 +1712 +1713 +1713 +1713 +1714 +1714 +1714 +1715 +1715 +1715 +1716 +1716 +1716 +1717 +1717 +1717 +1718 +1718 +1718 +1719 +1719 +1719 +1720 +1720 +1720 +1721 +1721 +1721 +1722 +1722 +1722 +1723 +1723 +1723 +1724 +1724 +1724 +1725 +1725 +1725 +1726 +1726 +1726 +1727 +1727 +1727 +1728 +1728 +1728 +1729 +1729 +1729 +1730 +1730 +1730 +1731 +1731 +1731 +1732 +1732 +1732 +1733 +1733 +1733 +1734 +1734 +1734 +1735 +1735 +1735 +1736 +1736 +1736 +1737 +1737 +1737 +1738 +1738 +1738 +1739 +1739 +1739 +1740 +1740 +1740 +1741 +1741 +1741 +1742 +1742 +1742 +1743 +1743 +1743 +1744 +1744 +1744 +1745 +1745 +1745 +1746 +1746 +1746 +1747 +1747 +1747 +1748 +1748 +1748 +1749 +1749 +1749 +1750 +1750 +1750 +1751 +1751 +1751 +1752 +1752 +1752 +1753 +1753 +1753 +1754 +1754 +1754 +1755 +1755 +1755 +1756 +1756 +1756 +1757 +1757 +1757 +1758 +1758 +1758 +1759 +1759 +1759 +1760 +1760 +1760 +1761 +1761 +1761 +1762 +1762 +1762 +1763 +1763 +1763 +1764 +1764 +1764 +1765 +1765 +1765 +1766 +1766 +1766 +1767 +1767 +1767 +1768 +1768 +1768 +1769 +1769 +1769 +1770 +1770 +1770 +1771 +1771 +1771 +1772 +1772 +1772 +1773 +1773 +1773 +1774 +1774 +1774 +1775 +1775 +1775 +1776 +1776 +1776 +1777 +1777 +1777 +1778 +1778 +1778 +1779 +1779 +1779 +1780 +1780 +1780 +1781 +1781 +1781 +1782 +1782 +1782 +1783 +1783 +1783 +1784 +1784 +1784 +1785 +1785 +1785 +1786 +1786 +1786 +1787 +1787 +1787 +1788 +1788 +1788 +1789 +1789 +1789 +1790 +1790 +1790 +1791 +1791 +1791 +1792 +1792 +1792 +1793 +1793 +1793 +1794 +1794 +1794 +1795 +1795 +1795 +1796 +1796 +1796 +1797 +1797 +1797 +1798 +1798 +1798 +1799 +1799 +1799 +1800 +1800 +1800 +1801 +1801 +1801 +1802 +1802 +1802 +1803 +1803 +1803 +1804 +1804 +1804 +1805 +1805 +1805 +1806 +1806 +1806 +1807 +1807 +1807 +1808 +1808 +1808 +1809 +1809 +1810 +1810 +1811 +1811 +1812 +1812 +1813 +1813 +1814 +1814 +1815 +1815 +1816 +1816 +1817 +1817 +1818 +1818 +1819 +1819 +1820 +1820 +1821 +1821 +1822 +1822 +1823 +1823 +1824 +1824 +1825 +1825 +1826 +1826 +1827 +1827 +1828 +1828 +1829 +1829 +1830 +1830 +1831 +1831 +1832 +1832 +1833 +1833 +1834 +1834 +1835 +1835 +1836 +1836 +1837 +1837 +1838 +1838 +1839 +1839 +1840 +1840 +1841 +1841 +1842 +1842 +1843 +1843 +1844 +1844 +1845 +1845 +1846 +1846 +1847 +1847 +1848 +1848 +1849 +1849 +1850 +1850 +1851 +1851 +1852 +1852 +1853 +1853 +1854 +1854 +1855 +1855 +1856 +1856 +1857 +1857 +1858 +1858 +1859 +1859 +1860 +1860 +1861 +1861 +1862 +1862 +1863 +1863 +1864 +1864 +1865 +1865 +1866 +1866 +1867 +1867 +1868 +1868 +1869 +1869 +1870 +1870 +1871 +1871 +1872 +1872 +1873 +1873 +1874 +1874 +1875 +1875 +1876 +1876 +1877 +1877 +1878 +1878 +1879 +1879 +1880 +1880 +1881 +1881 +1882 +1882 +1883 +1883 +1884 +1884 +1885 +1885 +1886 +1886 +1887 +1887 +1888 +1888 +1889 +1889 +1890 +1890 +1891 +1891 +1892 +1892 +1893 +1893 +1894 +1894 +1895 +1895 +1896 +1896 +1897 +1897 +1898 +1898 +1899 +1899 +1900 +1900 +1901 +1901 +1902 +1902 +1903 +1903 +1904 +1904 +1905 +1905 +1906 +1906 +1907 +1907 +1908 +1908 +1909 +1909 +1910 +1910 +1911 +1911 +1912 +1912 +1913 +1913 +1914 +1914 +1915 +1915 +1916 +1916 +1917 +1917 +1918 +1918 +1919 +1919 +1920 +1920 +1921 +1921 +1922 +1922 +1923 +1923 +1924 +1924 +1925 +1925 +1926 +1926 +1927 +1927 +1928 +1928 +1929 +1929 +1930 +1930 +1931 +1931 +1932 +1932 +1933 +1933 +1934 +1934 +1935 +1935 +1936 +1936 +1937 +1937 +1938 +1938 +1939 +1939 +1940 +1940 +1941 +1941 +1942 +1942 +1943 +1943 +1944 +1944 +1944 +1945 +1945 +1945 +1946 +1946 +1946 +1947 +1947 +1947 +1948 +1948 +1948 +1949 +1949 +1949 +1950 +1950 +1950 +1951 +1951 +1951 +1952 +1952 +1952 +1953 +1953 +1953 +1954 +1954 +1954 +1955 +1955 +1955 +1956 +1956 +1956 +1957 +1957 +1957 +1958 +1958 +1958 +1959 +1959 +1959 +1960 +1960 +1960 +1961 +1961 +1961 +1962 +1962 +1962 +1963 +1963 +1963 +1964 +1964 +1964 +1965 +1965 +1965 +1966 +1966 +1966 +1967 +1967 +1967 +1968 +1968 +1968 +1969 +1969 +1969 +1970 +1970 +1970 +1971 +1971 +1971 +1972 +1972 +1972 +1973 +1973 +1973 +1974 +1974 +1974 +1975 +1975 +1975 +1976 +1976 +1976 +1977 +1977 +1977 +1978 +1978 +1978 +1979 +1979 +1979 +1980 +1980 +1980 +1981 +1981 +1981 +1982 +1982 +1982 +1983 +1983 +1983 +1984 +1984 +1984 +1985 +1985 +1985 +1986 +1986 +1986 +1987 +1987 +1987 +1988 +1988 +1988 +1989 +1989 +1989 +1990 +1990 +1990 +1991 +1991 +1991 +1992 +1992 +1992 +1993 +1993 +1993 +1994 +1994 +1994 +1995 +1995 +1995 +1996 +1996 +1996 +1997 +1997 +1997 +1998 +1998 +1998 +1999 +1999 +1999 +2000 +2000 +2000 +2001 +2001 +2001 +2002 +2002 +2002 +2003 +2003 +2003 +2004 +2004 +2004 +2005 +2005 +2005 +2006 +2006 +2006 +2007 +2007 +2007 +2008 +2008 +2008 +2009 +2009 +2009 +2010 +2010 +2010 +2011 +2011 +2011 +2012 +2012 +2012 +2013 +2013 +2013 +2014 +2014 +2014 +2015 +2015 +2015 +2016 +2016 +2016 +2017 +2017 +2017 +2018 +2018 +2018 +2019 +2019 +2019 +2020 +2020 +2020 +2021 +2021 +2021 +2022 +2022 +2022 +2023 +2023 +2023 +2024 +2024 +2024 +2025 +2025 +2025 +2026 +2026 +2026 +2027 +2027 +2027 +2028 +2028 +2028 +2029 +2029 +2029 +2030 +2030 +2030 +2031 +2031 +2031 +2032 +2032 +2032 +2033 +2033 +2033 +2034 +2034 +2034 +2035 +2035 +2035 +2036 +2036 +2036 +2037 +2037 +2037 +2038 +2038 +2038 +2039 +2039 +2039 +2040 +2040 +2040 +2041 +2041 +2041 +2042 +2042 +2042 +2043 +2043 +2043 +2044 +2044 +2044 +2045 +2045 +2045 +2046 +2046 +2046 +2047 +2047 +2047 +2048 +2048 +2048 +2049 +2049 +2049 +2050 +2050 +2050 +2051 +2051 +2051 +2052 +2052 +2052 +2053 +2053 +2053 +2054 +2054 +2054 +2055 +2055 +2055 +2056 +2056 +2056 +2057 +2057 +2057 +2058 +2058 +2058 +2059 +2059 +2059 +2060 +2060 +2060 +2061 +2061 +2061 +2062 +2062 +2062 +2063 +2063 +2063 +2064 +2064 +2064 +2065 +2065 +2065 +2066 +2066 +2066 +2067 +2067 +2067 +2068 +2068 +2068 +2069 +2069 +2069 +2070 +2070 +2070 +2071 +2071 +2071 +2072 +2072 +2072 +2073 +2073 +2073 +2074 +2074 +2074 +2075 +2075 +2075 +2076 +2076 +2076 +2077 +2077 +2077 +2078 +2078 +2078 +2079 +2079 +2079 +2080 +2080 +2080 +2081 +2081 +2081 +2082 +2082 +2082 +2083 +2083 +2083 +2084 +2084 +2084 +2085 +2085 +2085 +2086 +2086 +2086 +2087 +2087 +2087 +2088 +2088 +2088 +2089 +2089 +2089 +2090 +2090 +2090 +2091 +2091 +2091 +2092 +2092 +2092 +2093 +2093 +2093 +2094 +2094 +2094 +2095 +2095 +2095 +2096 +2096 +2096 +2097 +2097 +2097 +2098 +2098 +2098 +2099 +2099 +2099 +2100 +2100 +2100 +2101 +2101 +2101 +2102 +2102 +2102 +2103 +2103 +2103 +2104 +2104 +2104 +2105 +2105 +2105 +2106 +2106 +2106 +2107 +2107 +2107 +2108 +2108 +2108 +2109 +2109 +2109 +2110 +2110 +2110 +2111 +2111 +2111 +2112 +2112 +2112 +2113 +2113 +2113 +2114 +2114 +2114 +2115 +2115 +2115 +2116 +2116 +2116 +2117 +2117 +2117 +2118 +2118 +2118 +2119 +2119 +2119 +2120 +2120 +2120 +2121 +2121 +2121 +2122 +2122 +2122 +2123 +2123 +2123 +2124 +2124 +2124 +2125 +2125 +2125 +2126 +2126 +2126 +2127 +2127 +2127 +2128 +2128 +2128 +2129 +2129 +2129 +2130 +2130 +2130 +2131 +2131 +2131 +2132 +2132 +2132 +2133 +2133 +2133 +2134 +2134 +2134 +2135 +2135 +2135 +2136 +2136 +2136 +2137 +2137 +2137 +2138 +2138 +2138 +2139 +2139 +2139 +2140 +2140 +2140 +2141 +2141 +2141 +2142 +2142 +2142 +2143 +2143 +2143 +2144 +2144 +2144 +2145 +2145 +2145 +2146 +2146 +2146 +2147 +2147 +2147 +2148 +2148 +2148 +2149 +2149 +2149 +2150 +2150 +2150 +2151 +2151 +2151 +2152 +2152 +2152 +2153 +2153 +2153 +2154 +2154 +2154 +2155 +2155 +2155 +2156 +2156 +2156 +2157 +2157 +2157 +2158 +2158 +2158 +2159 +2159 +2159 +2160 +2160 +2160 +2161 +2161 +2161 +2162 +2162 +2162 +2163 +2163 +2163 +2164 +2164 +2164 +2165 +2165 +2165 +2166 +2166 +2166 +2167 +2167 +2167 +2168 +2168 +2168 +2169 +2169 +2170 +2170 +2171 +2171 +2172 +2172 +2173 +2173 +2174 +2174 +2175 +2175 +2176 +2176 +2177 +2177 +2178 +2178 +2179 +2179 +2180 +2180 +2181 +2181 +2182 +2182 +2183 +2183 +2184 +2184 +2185 +2185 +2186 +2186 +2187 +2187 +2188 +2188 +2189 +2189 +2190 +2190 +2191 +2191 +2192 +2192 +2193 +2193 +2194 +2194 +2195 +2195 +2196 +2196 +2197 +2197 +2198 +2198 +2199 +2199 +2200 +2200 +2201 +2201 +2202 +2202 +2203 +2203 +2204 +2204 +2205 +2205 +2206 +2206 +2207 +2207 +2208 +2208 +2209 +2209 +2210 +2210 +2211 +2211 +2212 +2212 +2213 +2213 +2214 +2214 +2214 +2215 +2215 +2215 +2216 +2216 +2216 +2217 +2217 +2217 +2218 +2218 +2218 +2219 +2219 +2219 +2220 +2220 +2220 +2221 +2221 +2221 +2222 +2222 +2222 +2223 +2223 +2223 +2224 +2224 +2224 +2225 +2225 +2225 +2226 +2226 +2226 +2227 +2227 +2227 +2228 +2228 +2228 +2229 +2229 +2229 +2230 +2230 +2230 +2231 +2231 +2231 +2232 +2232 +2232 +2233 +2233 +2233 +2234 +2234 +2234 +2235 +2235 +2235 +2236 +2236 +2236 +2237 +2237 +2237 +2238 +2238 +2238 +2239 +2239 +2239 +2240 +2240 +2240 +2241 +2241 +2241 +2242 +2242 +2242 +2243 +2243 +2243 +2244 +2244 +2244 +2245 +2245 +2245 +2246 +2246 +2246 +2247 +2247 +2247 +2248 +2248 +2248 +2249 +2249 +2249 +2250 +2250 +2250 +2251 +2251 +2251 +2252 +2252 +2252 +2253 +2253 +2253 +2254 +2254 +2254 +2255 +2255 +2255 +2256 +2256 +2256 +2257 +2257 +2257 +2258 +2258 +2258 +2259 +2259 +2259 +2260 +2260 +2260 +2261 +2261 +2261 +2262 +2262 +2262 +2263 +2263 +2263 +2264 +2264 +2264 +2265 +2265 +2265 +2266 +2266 +2266 +2267 +2267 +2267 +2268 +2268 +2268 +2269 +2269 +2269 +2270 +2270 +2270 +2271 +2271 +2271 +2272 +2272 +2272 +2273 +2273 +2273 +2274 +2274 +2274 +2275 +2275 +2275 +2276 +2276 +2276 +2277 +2277 +2277 +2278 +2278 +2278 +2279 +2279 +2279 +2280 +2280 +2280 +2281 +2281 +2281 +2282 +2282 +2282 +2283 +2283 +2283 +2284 +2284 +2284 +2285 +2285 +2285 +2286 +2286 +2286 +2287 +2287 +2287 +2288 +2288 +2288 +2289 +2289 +2289 +2290 +2290 +2290 +2291 +2291 +2291 +2292 +2292 +2292 +2293 +2293 +2293 +2294 +2294 +2294 +2295 +2295 +2295 +2296 +2296 +2296 +2297 +2297 +2297 +2298 +2298 +2298 +2299 +2299 +2299 +2300 +2300 +2300 +2301 +2301 +2301 +2302 +2302 +2302 +2303 +2303 +2303 +2304 +2304 +2304 +2305 +2305 +2305 +2306 +2306 +2306 +2307 +2307 +2307 +2308 +2308 +2308 +2309 +2309 +2309 +2310 +2310 +2310 +2311 +2311 +2311 +2312 +2312 +2312 +2313 +2313 +2313 +2314 +2314 +2314 +2315 +2315 +2315 +2316 +2316 +2316 +2317 +2317 +2317 +2318 +2318 +2318 +2319 +2319 +2319 +2320 +2320 +2320 +2321 +2321 +2321 +2322 +2322 +2322 +2323 +2323 +2323 +2324 +2324 +2324 +2325 +2325 +2325 +2326 +2326 +2326 +2327 +2327 +2327 +2328 +2328 +2328 +2329 +2329 +2329 +2330 +2330 +2330 +2331 +2331 +2331 +2332 +2332 +2332 +2333 +2333 +2333 +2334 +2334 +2334 +2335 +2335 +2335 +2336 +2336 +2336 +2337 +2337 +2337 +2338 +2338 +2338 +2339 +2339 +2339 +2340 +2340 +2340 +2341 +2341 +2341 +2342 +2342 +2342 +2343 +2343 +2343 +2344 +2344 +2344 +2345 +2345 +2345 +2346 +2346 +2346 +2347 +2347 +2347 +2348 +2348 +2348 +2349 +2349 +2350 +2350 +2351 +2351 +2352 +2352 +2353 +2353 +2354 +2354 +2355 +2355 +2356 +2356 +2357 +2357 +2358 +2358 +2359 +2359 +2360 +2360 +2361 +2361 +2362 +2362 +2363 +2363 +2364 +2364 +2365 +2365 +2366 +2366 +2367 +2367 +2368 +2368 +2369 +2369 +2370 +2370 +2371 +2371 +2372 +2372 +2373 +2373 +2374 +2374 +2375 +2375 +2376 +2376 +2376 +2376 +2377 +2377 +2377 +2377 +2378 +2378 +2378 +2378 +2379 +2379 +2379 +2379 +2380 +2380 +2380 +2380 +2381 +2381 +2381 +2381 +2382 +2382 +2382 +2382 +2383 +2383 +2383 +2383 +2384 +2384 +2384 +2385 +2385 +2385 +2386 +2386 +2386 +2387 +2387 +2387 +2388 +2388 +2388 +2389 +2389 +2389 +2390 +2390 +2390 +2391 +2391 +2391 +2392 +2392 +2392 +2393 +2393 +2394 +2394 +2394 +2395 +2395 +2395 +2396 +2396 +2396 +2397 +2397 +2397 +2398 +2398 +2398 +2399 +2399 +2399 +2400 +2400 +2400 +2401 +2401 +2401 +2402 +2402 +2403 +2403 +2403 +2404 +2404 +2404 +2405 +2405 +2405 +2406 +2406 +2406 +2407 +2407 +2407 +2408 +2408 +2408 +2409 +2409 +2409 +2410 +2410 +2410 +2411 +2411 +2412 +2412 +2412 +2413 +2413 +2413 +2414 +2414 +2414 +2415 +2415 +2415 +2416 +2416 +2416 +2417 +2417 +2417 +2418 +2418 +2418 +2419 +2419 +2419 +2420 +2420 +2421 +2421 +2421 +2422 +2422 +2422 +2423 +2423 +2423 +2424 +2424 +2424 +2425 +2425 +2425 +2426 +2426 +2426 +2427 +2427 +2427 +2428 +2428 +2428 +2429 +2429 +2430 +2430 +2430 +2431 +2431 +2431 +2432 +2432 +2432 +2433 +2433 +2433 +2434 +2434 +2434 +2435 +2435 +2435 +2436 +2436 +2436 +2437 +2437 +2437 +2438 +2438 +2439 +2439 +2439 +2440 +2440 +2440 +2441 +2441 +2441 +2442 +2442 +2442 +2443 +2443 +2443 +2444 +2444 +2444 +2445 +2445 +2445 +2446 +2446 +2446 +2447 +2447 +2448 +2448 +2448 +2449 +2449 +2449 +2450 +2450 +2450 +2451 +2451 +2451 +2452 +2452 +2452 +2453 +2453 +2453 +2454 +2454 +2454 +2455 +2455 +2455 +2456 +2456 +2457 +2457 +2457 +2457 +2458 +2458 +2458 +2458 +2459 +2459 +2459 +2459 +2460 +2460 +2460 +2460 +2461 +2461 +2461 +2461 +2462 +2462 +2462 +2462 +2463 +2463 +2463 +2463 +2464 +2464 +2464 +2464 +2465 +2465 +2465 +2466 +2466 +2466 +2467 +2467 +2467 +2468 +2468 +2468 +2469 +2469 +2469 +2470 +2470 +2470 +2471 +2471 +2471 +2472 +2472 +2472 +2473 +2473 +2473 +2474 +2474 +2475 +2475 +2475 +2476 +2476 +2476 +2477 +2477 +2477 +2478 +2478 +2478 +2479 +2479 +2479 +2480 +2480 +2480 +2481 +2481 +2481 +2482 +2482 +2482 +2483 +2483 +2484 +2484 +2484 +2485 +2485 +2485 +2486 +2486 +2486 +2487 +2487 +2487 +2488 +2488 +2488 +2489 +2489 +2489 +2490 +2490 +2490 +2491 +2491 +2491 +2492 +2492 +2493 +2493 +2493 +2494 +2494 +2494 +2495 +2495 +2495 +2496 +2496 +2496 +2497 +2497 +2497 +2498 +2498 +2498 +2499 +2499 +2499 +2500 +2500 +2500 +2501 +2501 +2502 +2502 +2502 +2503 +2503 +2503 +2504 +2504 +2504 +2505 +2505 +2505 +2506 +2506 +2506 +2507 +2507 +2507 +2508 +2508 +2508 +2509 +2509 +2509 +2510 +2510 +2511 +2511 +2511 +2512 +2512 +2512 +2513 +2513 +2513 +2514 +2514 +2514 +2515 +2515 +2515 +2516 +2516 +2516 +2517 +2517 +2517 +2518 +2518 +2518 +2519 +2519 +2520 +2520 +2520 +2521 +2521 +2521 +2522 +2522 +2522 +2523 +2523 +2523 +2524 +2524 +2524 +2525 +2525 +2525 +2526 +2526 +2526 +2527 +2527 +2527 +2528 +2528 +2529 +2529 +2529 +2530 +2530 +2530 +2531 +2531 +2531 +2532 +2532 +2532 +2533 +2533 +2533 +2534 +2534 +2534 +2535 +2535 +2535 +2536 +2536 +2536 +2537 +2537 +2538 +2538 +2538 +2538 +2539 +2539 +2539 +2539 +2540 +2540 +2540 +2540 +2541 +2541 +2541 +2541 +2542 +2542 +2542 +2542 +2543 +2543 +2543 +2543 +2544 +2544 +2544 +2544 +2545 +2545 +2545 +2545 +2546 +2546 +2546 +2547 +2547 +2547 +2548 +2548 +2548 +2549 +2549 +2549 +2550 +2550 +2550 +2551 +2551 +2551 +2552 +2552 +2552 +2553 +2553 +2553 +2554 +2554 +2554 +2555 +2555 +2556 +2556 +2556 +2557 +2557 +2557 +2558 +2558 +2558 +2559 +2559 +2559 +2560 +2560 +2560 +2561 +2561 +2561 +2562 +2562 +2562 +2563 +2563 +2563 +2564 +2564 +2565 +2565 +2565 +2566 +2566 +2566 +2567 +2567 +2567 +2568 +2568 +2568 +2569 +2569 +2569 +2570 +2570 +2570 +2571 +2571 +2571 +2572 +2572 +2572 +2573 +2573 +2574 +2574 +2574 +2575 +2575 +2575 +2576 +2576 +2576 +2577 +2577 +2577 +2578 +2578 +2578 +2579 +2579 +2579 +2580 +2580 +2580 +2581 +2581 +2581 +2582 +2582 +2583 +2583 +2583 +2584 +2584 +2584 +2585 +2585 +2585 +2586 +2586 +2586 +2587 +2587 +2587 +2588 +2588 +2588 +2589 +2589 +2589 +2590 +2590 +2590 +2591 +2591 +2592 +2592 +2592 +2593 +2593 +2593 +2594 +2594 +2594 +2595 +2595 +2595 +2596 +2596 +2596 +2597 +2597 +2597 +2598 +2598 +2598 +2599 +2599 +2599 +2600 +2600 +2601 +2601 +2601 +2602 +2602 +2602 +2603 +2603 +2603 +2604 +2604 +2604 +2605 +2605 +2605 +2606 +2606 +2606 +2607 +2607 +2607 +2608 +2608 +2608 +2609 +2609 +2610 +2610 +2610 +2611 +2611 +2611 +2612 +2612 +2612 +2613 +2613 +2613 +2614 +2614 +2614 +2615 +2615 +2615 +2616 +2616 +2616 +2617 +2617 +2617 +2618 +2618 +2619 +2619 +2619 +2619 +2620 +2620 +2620 +2620 +2621 +2621 +2621 +2621 +2622 +2622 +2622 +2622 +2623 +2623 +2623 +2623 +2624 +2624 +2624 +2624 +2625 +2625 +2625 +2625 +2626 +2626 +2626 +2626 +2627 +2627 +2627 +2628 +2628 +2628 +2629 +2629 +2629 +2630 +2630 +2630 +2631 +2631 +2631 +2632 +2632 +2632 +2633 +2633 +2633 +2634 +2634 +2634 +2635 +2635 +2635 +2636 +2636 +2637 +2637 +2637 +2638 +2638 +2638 +2639 +2639 +2639 +2640 +2640 +2640 +2641 +2641 +2641 +2642 +2642 +2642 +2643 +2643 +2643 +2644 +2644 +2644 +2645 +2645 +2646 +2646 +2646 +2647 +2647 +2647 +2648 +2648 +2648 +2649 +2649 +2649 +2650 +2650 +2650 +2651 +2651 +2651 +2652 +2652 +2652 +2653 +2653 +2653 +2654 +2654 +2655 +2655 +2655 +2656 +2656 +2656 +2657 +2657 +2657 +2658 +2658 +2658 +2659 +2659 +2659 +2660 +2660 +2660 +2661 +2661 +2661 +2662 +2662 +2662 +2663 +2663 +2664 +2664 +2664 +2665 +2665 +2665 +2666 +2666 +2666 +2667 +2667 +2667 +2668 +2668 +2668 +2669 +2669 +2669 +2670 +2670 +2670 +2671 +2671 +2671 +2672 +2672 +2673 +2673 +2673 +2674 +2674 +2674 +2675 +2675 +2675 +2676 +2676 +2676 +2677 +2677 +2677 +2678 +2678 +2678 +2679 +2679 +2679 +2680 +2680 +2680 +2681 +2681 +2682 +2682 +2682 +2683 +2683 +2683 +2684 +2684 +2684 +2685 +2685 +2685 +2686 +2686 +2686 +2687 +2687 +2687 +2688 +2688 +2688 +2689 +2689 +2689 +2690 +2690 +2691 +2691 +2691 +2692 +2692 +2692 +2693 +2693 +2693 +2694 +2694 +2694 +2695 +2695 +2695 +2696 +2696 +2696 +2697 +2697 +2697 +2698 +2698 +2698 +2699 +2699 +2700 +2700 +2700 +2700 +2701 +2701 +2701 +2701 +2702 +2702 +2702 +2702 +2703 +2703 +2703 +2703 +2704 +2704 +2704 +2704 +2705 +2705 +2705 +2705 +2706 +2706 +2706 +2706 +2707 +2707 +2707 +2707 +2708 +2708 +2708 +2709 +2709 +2709 +2710 +2710 +2710 +2711 +2711 +2711 +2712 +2712 +2712 +2713 +2713 +2713 +2714 +2714 +2714 +2715 +2715 +2715 +2716 +2716 +2716 +2717 +2717 +2718 +2718 +2718 +2719 +2719 +2719 +2720 +2720 +2720 +2721 +2721 +2721 +2722 +2722 +2722 +2723 +2723 +2723 +2724 +2724 +2724 +2725 +2725 +2725 +2726 +2726 +2727 +2727 +2727 +2728 +2728 +2728 +2729 +2729 +2729 +2730 +2730 +2730 +2731 +2731 +2731 +2732 +2732 +2732 +2733 +2733 +2733 +2734 +2734 +2734 +2735 +2735 +2736 +2736 +2736 +2737 +2737 +2737 +2738 +2738 +2738 +2739 +2739 +2739 +2740 +2740 +2740 +2741 +2741 +2741 +2742 +2742 +2742 +2743 +2743 +2743 +2744 +2744 +2745 +2745 +2745 +2746 +2746 +2746 +2747 +2747 +2747 +2748 +2748 +2748 +2749 +2749 +2749 +2750 +2750 +2750 +2751 +2751 +2751 +2752 +2752 +2752 +2753 +2753 +2754 +2754 +2754 +2755 +2755 +2755 +2756 +2756 +2756 +2757 +2757 +2757 +2758 +2758 +2758 +2759 +2759 +2759 +2760 +2760 +2760 +2761 +2761 +2761 +2762 +2762 +2763 +2763 +2763 +2764 +2764 +2764 +2765 +2765 +2765 +2766 +2766 +2766 +2767 +2767 +2767 +2768 +2768 +2768 +2769 +2769 +2769 +2770 +2770 +2770 +2771 +2771 +2772 +2772 +2772 +2773 +2773 +2773 +2774 +2774 +2774 +2775 +2775 +2775 +2776 +2776 +2776 +2777 +2777 +2777 +2778 +2778 +2778 +2779 +2779 +2779 +2780 +2780 +2781 +2781 +2781 +2782 +2782 +2782 +2783 +2783 +2783 +2784 +2784 +2784 +2785 +2785 +2785 +2786 +2786 +2786 +2787 +2787 +2787 +2788 +2788 +2788 +2789 +2789 +2790 +2790 +2791 +2791 +2792 +2792 +2793 +2793 +2794 +2794 +2795 +2795 +2796 +2796 +2797 +2797 +2798 +2799 +2799 +2800 +2800 +2801 +2801 +2802 +2802 +2803 +2803 +2804 +2804 +2805 +2805 +2806 +2806 +2807 +2808 +2808 +2809 +2809 +2810 +2810 +2811 +2811 +2812 +2812 +2813 +2813 +2814 +2814 +2815 +2815 +2816 +2817 +2817 +2818 +2818 +2819 +2819 +2820 +2820 +2821 +2821 +2822 +2822 +2823 +2823 +2824 +2824 +2825 +2826 +2826 +2827 +2827 +2828 +2828 +2829 +2829 +2830 +2830 +2831 +2831 +2832 +2832 +2833 +2833 +2834 +2835 +2835 +2836 +2836 +2837 +2837 +2838 +2838 +2839 +2839 +2840 +2840 +2841 +2841 +2842 +2842 +2843 +2844 +2844 +2845 +2845 +2846 +2846 +2847 +2847 +2848 +2848 +2849 +2849 +2850 +2850 +2851 +2851 +2852 +2853 +2853 +2854 +2854 +2855 +2855 +2856 +2856 +2857 +2857 +2858 +2858 +2859 +2859 +2860 +2860 +2861 +2862 +2862 +2862 +2862 +2863 +2863 +2863 +2864 +2864 +2864 +2865 +2865 +2865 +2866 +2866 +2866 +2867 +2867 +2867 +2868 +2868 +2868 +2869 +2869 +2869 +2870 +2870 +2871 +2871 +2871 +2871 +2872 +2872 +2872 +2873 +2873 +2873 +2874 +2874 +2874 +2875 +2875 +2875 +2876 +2876 +2876 +2877 +2877 +2877 +2878 +2878 +2878 +2879 +2879 +2880 +2880 +2880 +2880 +2881 +2881 +2881 +2882 +2882 +2882 +2883 +2883 +2883 +2884 +2884 +2884 +2885 +2885 +2885 +2886 +2886 +2886 +2887 +2887 +2887 +2888 +2888 +2889 +2889 +2889 +2889 +2890 +2890 +2890 +2891 +2891 +2891 +2892 +2892 +2892 +2893 +2893 +2893 +2894 +2894 +2894 +2895 +2895 +2895 +2896 +2896 +2896 +2897 +2897 +2898 +2898 +2898 +2898 +2899 +2899 +2899 +2900 +2900 +2900 +2901 +2901 +2901 +2902 +2902 +2902 +2903 +2903 +2903 +2904 +2904 +2904 +2905 +2905 +2905 +2906 +2906 +2907 +2907 +2907 +2907 +2908 +2908 +2908 +2909 +2909 +2909 +2910 +2910 +2910 +2911 +2911 +2911 +2912 +2912 +2912 +2913 +2913 +2913 +2914 +2914 +2914 +2915 +2915 +2916 +2916 +2916 +2916 +2917 +2917 +2917 +2918 +2918 +2918 +2919 +2919 +2919 +2920 +2920 +2920 +2921 +2921 +2921 +2922 +2922 +2922 +2923 +2923 +2923 +2924 +2924 +2925 +2925 +2925 +2925 +2926 +2926 +2926 +2927 +2927 +2927 +2928 +2928 +2928 +2929 +2929 +2929 +2930 +2930 +2930 +2931 +2931 +2931 +2932 +2932 +2932 +2933 +2933 +2934 +2934 +2934 +2934 +2935 +2935 +2935 +2936 +2936 +2936 +2937 +2937 +2937 +2938 +2938 +2938 +2939 +2939 +2939 +2940 +2940 +2940 +2941 +2941 +2941 +2942 +2942 +2943 +2943 +2943 +2943 +2944 +2944 +2944 +2945 +2945 +2945 +2946 +2946 +2946 +2947 +2947 +2947 +2948 +2948 +2948 +2949 +2949 +2949 +2950 +2950 +2950 +2951 +2951 +2952 +2952 +2952 +2952 +2953 +2953 +2953 +2954 +2954 +2954 +2955 +2955 +2955 +2956 +2956 +2956 +2957 +2957 +2957 +2958 +2958 +2958 +2959 +2959 +2959 +2960 +2960 +2961 +2961 +2961 +2961 +2962 +2962 +2962 +2963 +2963 +2963 +2964 +2964 +2964 +2965 +2965 +2965 +2966 +2966 +2966 +2967 +2967 +2967 +2968 +2968 +2968 +2969 +2969 +2970 +2970 +2970 +2970 +2971 +2971 +2971 +2972 +2972 +2972 +2973 +2973 +2973 +2974 +2974 +2974 +2975 +2975 +2975 +2976 +2976 +2976 +2977 +2977 +2977 +2978 +2978 +2979 +2979 +2979 +2979 +2980 +2980 +2980 +2981 +2981 +2981 +2982 +2982 +2982 +2983 +2983 +2983 +2984 +2984 +2984 +2985 +2985 +2985 +2986 +2986 +2986 +2987 +2987 +2988 +2988 +2988 +2988 +2989 +2989 +2989 +2990 +2990 +2990 +2991 +2991 +2991 +2992 +2992 +2992 +2993 +2993 +2993 +2994 +2994 +2994 +2995 +2995 +2995 +2996 +2996 +2997 +2997 +2997 +2998 +2998 +2999 +2999 +3000 +3000 +3001 +3001 +3002 +3002 +3003 +3003 +3004 +3004 +3005 +3006 +3006 +3006 +3007 +3007 +3008 +3008 +3009 +3009 +3010 +3010 +3011 +3011 +3012 +3012 +3013 +3013 +3014 +3015 +3015 +3015 +3016 +3016 +3017 +3017 +3018 +3018 +3019 +3019 +3020 +3020 +3021 +3021 +3022 +3022 +3023 +3024 +3024 +3024 +3025 +3025 +3025 +3026 +3026 +3026 +3027 +3027 +3027 +3028 +3028 +3028 +3029 +3029 +3029 +3030 +3030 +3030 +3031 +3031 +3031 +3032 +3032 +3033 +3033 +3033 +3034 +3034 +3034 +3035 +3035 +3035 +3036 +3036 +3036 +3037 +3037 +3037 +3038 +3038 +3038 +3039 +3039 +3039 +3040 +3040 +3040 +3041 +3041 +3042 +3042 +3042 +3043 +3043 +3043 +3044 +3044 +3044 +3045 +3045 +3045 +3046 +3046 +3046 +3047 +3047 +3047 +3048 +3048 +3048 +3049 +3049 +3049 +3050 +3050 +3051 +3051 +3051 +3052 +3052 +3052 +3053 +3053 +3053 +3054 +3054 +3054 +3055 +3055 +3055 +3056 +3056 +3056 +3057 +3057 +3057 +3058 +3058 +3058 +3059 +3059 +3060 +3060 +3060 +3061 +3061 +3061 +3062 +3062 +3062 +3063 +3063 +3063 +3064 +3064 +3064 +3065 +3065 +3065 +3066 +3066 +3066 +3067 +3067 +3067 +3068 +3068 +3069 +3069 +3070 +3070 +3071 +3071 +3072 +3072 +3073 +3073 +3074 +3074 +3075 +3075 +3076 +3076 +3077 +3078 +3078 +3078 +3079 +3079 +3079 +3080 +3080 +3080 +3081 +3081 +3081 +3082 +3082 +3082 +3083 +3083 +3083 +3084 +3084 +3084 +3085 +3085 +3085 +3086 +3086 +3087 +3087 +3087 +3088 +3088 +3088 +3089 +3089 +3089 +3090 +3090 +3090 +3091 +3091 +3091 +3092 +3092 +3092 +3093 +3093 +3093 +3094 +3094 +3094 +3095 +3095 +3096 +3096 +3096 +3097 +3097 +3097 +3098 +3098 +3098 +3099 +3099 +3099 +3100 +3100 +3100 +3101 +3101 +3101 +3102 +3102 +3102 +3103 +3103 +3103 +3104 +3104 +3105 +3105 +3105 +3106 +3106 +3106 +3107 +3107 +3107 +3108 +3108 +3108 +3109 +3109 +3109 +3110 +3110 +3110 +3111 +3111 +3111 +3112 +3112 +3112 +3113 +3113 +3114 +3114 +3114 +3115 +3115 +3115 +3116 +3116 +3116 +3117 +3117 +3117 +3118 +3118 +3118 +3119 +3119 +3119 +3120 +3120 +3120 +3121 +3121 +3121 +3122 +3122 +3123 +3123 +3124 +3124 +3125 +3125 +3126 +3126 +3127 +3127 +3128 +3128 +3129 +3129 +3130 +3130 +3131 +3132 +3132 +3132 +3133 +3133 +3133 +3134 +3134 +3134 +3135 +3135 +3135 +3136 +3136 +3136 +3137 +3137 +3137 +3138 +3138 +3138 +3139 +3139 +3139 +3140 +3140 +3141 +3141 +3141 +3142 +3142 +3142 +3143 +3143 +3143 +3144 +3144 +3144 +3145 +3145 +3145 +3146 +3146 +3146 +3147 +3147 +3147 +3148 +3148 +3148 +3149 +3149 +3150 +3150 +3150 +3151 +3151 +3151 +3152 +3152 +3152 +3153 +3153 +3153 +3154 +3154 +3154 +3155 +3155 +3155 +3156 +3156 +3156 +3157 +3157 +3157 +3158 +3158 +3159 +3159 +3159 +3160 +3160 +3160 +3161 +3161 +3161 +3162 +3162 +3162 +3163 +3163 +3163 +3164 +3164 +3164 +3165 +3165 +3165 +3166 +3166 +3166 +3167 +3167 +3168 +3168 +3168 +3169 +3169 +3169 +3170 +3170 +3170 +3171 +3171 +3171 +3172 +3172 +3172 +3173 +3173 +3173 +3174 +3174 +3174 +3175 +3175 +3175 +3176 +3176 +3177 +3177 +3178 +3178 +3179 +3179 +3180 +3180 +3181 +3181 +3182 +3182 +3183 +3183 +3184 +3184 +3185 +3186 +3186 +3186 +3187 +3187 +3187 +3188 +3188 +3188 +3189 +3189 +3189 +3190 +3190 +3190 +3191 +3191 +3191 +3192 +3192 +3192 +3193 +3193 +3193 +3194 +3194 +3195 +3195 +3195 +3196 +3196 +3196 +3197 +3197 +3197 +3198 +3198 +3198 +3199 +3199 +3199 +3200 +3200 +3200 +3201 +3201 +3201 +3202 +3202 +3202 +3203 +3203 +3204 +3204 +3204 +3205 +3205 +3205 +3206 +3206 +3206 +3207 +3207 +3207 +3208 +3208 +3208 +3209 +3209 +3209 +3210 +3210 +3210 +3211 +3211 +3211 +3212 +3212 +3213 +3213 +3213 +3214 +3214 +3214 +3215 +3215 +3215 +3216 +3216 +3216 +3217 +3217 +3217 +3218 +3218 +3218 +3219 +3219 +3219 +3220 +3220 +3220 +3221 +3221 +3222 +3222 +3222 +3223 +3223 +3223 +3224 +3224 +3224 +3225 +3225 +3225 +3226 +3226 +3226 +3227 +3227 +3227 +3228 +3228 +3228 +3229 +3229 +3229 +3230 +3230 +3231 +3231 +3232 +3232 +3233 +3233 +3234 +3234 +3235 +3235 +3236 +3236 +3237 +3237 +3238 +3238 +3239 +3240 +3240 +3240 +3241 +3241 +3241 +3242 +3242 +3242 +3243 +3243 +3243 +3244 +3244 +3244 +3245 +3245 +3245 +3246 +3246 +3246 +3247 +3247 +3247 +3248 +3248 +3249 +3249 +3249 +3250 +3250 +3250 +3251 +3251 +3251 +3252 +3252 +3252 +3253 +3253 +3253 +3254 +3254 +3254 +3255 +3255 +3255 +3256 +3256 +3256 +3257 +3257 +3258 +3258 +3258 +3259 +3259 +3259 +3260 +3260 +3260 +3261 +3261 +3261 +3262 +3262 +3262 +3263 +3263 +3263 +3264 +3264 +3264 +3265 +3265 +3265 +3266 +3266 +3267 +3267 +3267 +3268 +3268 +3268 +3269 +3269 +3269 +3270 +3270 +3270 +3271 +3271 +3271 +3272 +3272 +3272 +3273 +3273 +3273 +3274 +3274 +3274 +3275 +3275 +3276 +3276 +3276 +3277 +3277 +3277 +3278 +3278 +3278 +3279 +3279 +3279 +3280 +3280 +3280 +3281 +3281 +3281 +3282 +3282 +3282 +3283 +3283 +3283 +3284 +3284 +3285 +3285 +3286 +3286 +3287 +3287 +3288 +3288 +3289 +3289 +3290 +3290 +3291 +3291 +3292 +3292 +3293 +3294 +3294 +3295 +3295 +3296 +3296 +3297 +3297 +3298 +3298 +3299 +3299 +3300 +3300 +3301 +3301 +3302 +3303 +3303 +3304 +3304 +3305 +3305 +3306 +3306 +3307 +3307 +3308 +3308 +3309 +3309 +3310 +3310 +3311 +3312 +3312 +3313 +3313 +3314 +3314 +3315 +3315 +3316 +3316 +3317 +3317 +3318 +3318 +3319 +3319 +3320 +3321 +3321 +3322 +3322 +3323 +3323 +3324 +3324 +3325 +3325 +3326 +3326 +3327 +3327 +3328 +3328 +3329 +3330 +3330 +3331 +3331 +3332 +3332 +3333 +3333 +3334 +3334 +3335 +3335 +3336 +3336 +3337 +3337 +3338 +3339 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3348 +3348 +3348 +3349 +3349 +3349 +3350 +3350 +3350 +3351 +3351 +3351 +3352 +3352 +3352 +3353 +3353 +3353 +3354 +3354 +3354 +3355 +3355 +3355 +3356 +3356 +3356 +3357 +3357 +3357 +3358 +3358 +3358 +3359 +3359 +3359 +3360 +3360 +3360 +3361 +3361 +3361 +3362 +3362 +3362 +3363 +3363 +3363 +3364 +3364 +3364 +3365 +3365 +3365 +3366 +3366 +3366 +3367 +3367 +3367 +3368 +3368 +3368 +3369 +3369 +3369 +3370 +3370 +3370 +3371 +3371 +3371 +3372 +3372 +3372 +3373 +3373 +3373 +3374 +3374 +3374 +3375 +3375 +3375 +3376 +3376 +3376 +3377 +3377 +3377 +3378 +3378 +3379 +3379 +3380 +3380 +3381 +3381 +3382 +3382 +3383 +3383 +3384 +3384 +3385 +3385 +3386 +3386 +3387 +3387 +3388 +3388 +3389 +3389 +3390 +3390 +3391 +3391 +3392 +3392 +3393 +3393 +3393 +3394 +3394 +3394 +3395 +3395 +3395 +3396 +3396 +3396 +3397 +3397 +3397 +3398 +3398 +3398 +3399 +3399 +3399 +3400 +3400 +3400 +3401 +3401 +3401 +3402 +3402 +3402 +3403 +3403 +3403 +3404 +3404 +3404 +3405 +3405 +3405 +3406 +3406 +3406 +3407 +3407 +3407 +3408 +3408 +3408 +3409 +3409 +3409 +3410 +3410 +3410 +3411 +3411 +3411 +3412 +3412 +3412 +3413 +3413 +3413 +3414 +3414 +3414 +3415 +3415 +3415 +3416 +3416 +3416 +3417 +3417 +3417 +3418 +3418 +3418 +3419 +3419 +3419 +3420 +3420 +3420 +3421 +3421 +3421 +3422 +3422 +3422 +3423 +3423 +3424 +3424 +3425 +3425 +3426 +3426 +3427 +3427 +3428 +3428 +3429 +3429 +3430 +3430 +3431 +3431 +3432 +3432 +3433 +3433 +3434 +3434 +3435 +3435 +3436 +3436 +3437 +3437 +3438 +3438 +3438 +3439 +3439 +3439 +3440 +3440 +3440 +3441 +3441 +3441 +3442 +3442 +3442 +3443 +3443 +3443 +3444 +3444 +3444 +3445 +3445 +3445 +3446 +3446 +3446 +3447 +3447 +3447 +3448 +3448 +3448 +3449 +3449 +3449 +3450 +3450 +3450 +3451 +3451 +3451 +3452 +3452 +3452 +3453 +3453 +3453 +3454 +3454 +3454 +3455 +3455 +3455 +3456 +3456 +3456 +3457 +3457 +3457 +3458 +3458 +3458 +3459 +3459 +3459 +3460 +3460 +3460 +3461 +3461 +3461 +3462 +3462 +3462 +3463 +3463 +3463 +3464 +3464 +3464 +3465 +3465 +3465 +3466 +3466 +3466 +3467 +3467 +3467 +3468 +3468 +3469 +3469 +3470 +3470 +3471 +3471 +3472 +3472 +3473 +3473 +3474 +3474 +3475 +3475 +3476 +3476 +3477 +3477 +3478 +3478 +3479 +3479 +3480 +3480 +3481 +3481 +3482 +3482 +3483 +3483 +3483 +3484 +3484 +3484 +3485 +3485 +3485 +3486 +3486 +3486 +3487 +3487 +3487 +3488 +3488 +3488 +3489 +3489 +3489 +3490 +3490 +3490 +3491 +3491 +3491 +3492 +3492 +3492 +3493 +3493 +3493 +3494 +3494 +3494 +3495 +3495 +3495 +3496 +3496 +3496 +3497 +3497 +3497 +3498 +3498 +3498 +3499 +3499 +3499 +3500 +3500 +3500 +3501 +3501 +3501 +3502 +3502 +3502 +3503 +3503 +3503 +3504 +3504 +3504 +3505 +3505 +3505 +3506 +3506 +3506 +3507 +3507 +3507 +3508 +3508 +3508 +3509 +3509 +3509 +3510 +3510 +3510 +3511 +3511 +3511 +3512 +3512 +3512 +3513 +3513 +3514 +3514 +3515 +3515 +3516 +3516 +3517 +3517 +3518 +3518 +3519 +3519 +3520 +3520 +3521 +3521 +3522 +3522 +3523 +3523 +3524 +3524 +3525 +3525 +3526 +3526 +3527 +3527 +3528 +3528 +3528 +3529 +3529 +3529 +3530 +3530 +3530 +3531 +3531 +3531 +3532 +3532 +3532 +3533 +3533 +3533 +3534 +3534 +3534 +3535 +3535 +3535 +3536 +3536 +3536 +3537 +3537 +3537 +3538 +3538 +3538 +3539 +3539 +3539 +3540 +3540 +3540 +3541 +3541 +3541 +3542 +3542 +3542 +3543 +3543 +3543 +3544 +3544 +3544 +3545 +3545 +3545 +3546 +3546 +3546 +3547 +3547 +3547 +3548 +3548 +3548 +3549 +3549 +3549 +3550 +3550 +3550 +3551 +3551 +3551 +3552 +3552 +3552 +3553 +3553 +3553 +3554 +3554 +3554 +3555 +3555 +3555 +3556 +3556 +3556 +3557 +3557 +3557 +3558 +3558 +3559 +3559 +3560 +3560 +3561 +3561 +3562 +3562 +3563 +3563 +3564 +3564 +3565 +3565 +3566 +3566 +3567 +3567 +3568 +3568 +3569 +3569 +3570 +3570 +3571 +3571 +3572 +3572 +3573 +3573 +3574 +3574 +3575 +3575 +3576 +3576 +3577 +3577 +3578 +3578 +3579 +3579 +3580 +3580 +3581 +3581 +3582 +3582 +3583 +3583 +3584 +3584 +3585 +3585 +3586 +3586 +3587 +3587 +3588 +3588 +3589 +3589 +3590 +3590 +3591 +3591 +3592 +3592 +3593 +3593 +3594 +3594 +3595 +3595 +3596 +3596 +3597 +3597 +3598 +3598 +3599 +3599 +3600 +3600 +3601 +3601 +3602 +3602 +3603 +3604 +3605 +3606 +3607 +3608 +3609 +3610 +3611 +3612 +3613 +3614 +3615 +3616 +3617 +3618 +3618 +3618 +3618 +3619 +3619 +3619 +3619 +3620 +3620 +3620 +3620 +3621 +3621 +3621 +3622 +3622 +3622 +3623 +3623 +3623 +3624 +3624 +3625 +3625 +3626 +3626 +3627 +3627 +3627 +3627 +3628 +3628 +3628 +3628 +3629 +3629 +3629 +3629 +3630 +3630 +3630 +3631 +3631 +3631 +3632 +3632 +3632 +3633 +3633 +3634 +3634 +3635 +3635 +3636 +3636 +3636 +3636 +3637 +3637 +3637 +3637 +3638 +3638 +3638 +3638 +3639 +3639 +3639 +3640 +3640 +3640 +3641 +3641 +3641 +3642 +3642 +3643 +3643 +3644 +3644 +3645 +3645 +3645 +3645 +3646 +3646 +3646 +3646 +3647 +3647 +3647 +3647 +3648 +3648 +3648 +3649 +3649 +3649 +3650 +3650 +3650 +3651 +3651 +3652 +3652 +3653 +3653 +3654 +3654 +3654 +3654 +3655 +3655 +3655 +3655 +3656 +3656 +3656 +3656 +3657 +3657 +3657 +3658 +3658 +3658 +3659 +3659 +3659 +3660 +3660 +3661 +3661 +3662 +3662 +3663 +3663 +3663 +3664 +3664 +3664 +3665 +3665 +3665 +3666 +3666 +3667 +3667 +3668 +3668 +3669 +3670 +3671 +3672 +3672 +3672 +3673 +3673 +3673 +3674 +3674 +3675 +3675 +3675 +3676 +3676 +3676 +3677 +3677 +3678 +3678 +3679 +3679 +3680 +3681 +3681 +3681 +3682 +3682 +3682 +3683 +3683 +3684 +3684 +3684 +3685 +3685 +3685 +3686 +3686 +3687 +3687 +3688 +3688 +3689 +3690 +3690 +3690 +3691 +3691 +3691 +3692 +3692 +3693 +3693 +3693 +3694 +3694 +3694 +3695 +3695 +3696 +3696 +3697 +3697 +3698 +3699 +3699 +3699 +3700 +3700 +3700 +3701 +3701 +3702 +3702 +3702 +3703 +3703 +3703 +3704 +3704 +3705 +3705 +3706 +3706 +3707 +3708 +3708 +3708 +3709 +3709 +3709 +3710 +3710 +3711 +3711 +3711 +3712 +3712 +3712 +3713 +3713 +3714 +3714 +3715 +3715 +3716 +3717 +3717 +3718 +3718 +3719 +3720 +3720 +3721 +3721 +3722 +3723 +3724 +3726 +3726 +3726 +3727 +3727 +3727 +3728 +3728 +3728 +3729 +3729 +3729 +3730 +3730 +3730 +3731 +3731 +3731 +3732 +3732 +3732 +3733 +3733 +3733 +3734 +3734 +3735 +3735 +3735 +3736 +3736 +3736 +3737 +3737 +3737 +3738 +3738 +3738 +3739 +3739 +3739 +3740 +3740 +3740 +3741 +3741 +3741 +3742 +3742 +3742 +3743 +3743 +3744 +3744 +3745 +3745 +3746 +3746 +3747 +3747 +3748 +3748 +3749 +3749 +3750 +3750 +3751 +3751 +3752 +3753 +3753 +3753 +3754 +3754 +3754 +3755 +3755 +3755 +3756 +3756 +3756 +3757 +3757 +3757 +3758 +3758 +3758 +3759 +3759 +3759 +3760 +3760 +3760 +3761 +3761 +3762 +3762 +3762 +3763 +3763 +3763 +3764 +3764 +3764 +3765 +3765 +3765 +3766 +3766 +3766 +3767 +3767 +3767 +3768 +3768 +3768 +3769 +3769 +3769 +3770 +3770 +3771 +3771 +3772 +3772 +3773 +3773 +3774 +3774 +3775 +3775 +3776 +3776 +3777 +3777 +3778 +3778 +3779 +3780 +3780 +3780 +3781 +3781 +3781 +3782 +3782 +3782 +3783 +3783 +3783 +3784 +3784 +3784 +3785 +3785 +3785 +3786 +3786 +3786 +3787 +3787 +3787 +3788 +3788 +3789 +3789 +3789 +3790 +3790 +3790 +3791 +3791 +3791 +3792 +3792 +3792 +3793 +3793 +3793 +3794 +3794 +3794 +3795 +3795 +3795 +3796 +3796 +3796 +3797 +3797 +3798 +3798 +3799 +3799 +3800 +3800 +3801 +3801 +3802 +3802 +3803 +3803 +3804 +3804 +3805 +3805 +3806 +3807 +3807 +3807 +3808 +3808 +3808 +3809 +3809 +3809 +3810 +3810 +3810 +3811 +3811 +3811 +3812 +3812 +3812 +3813 +3813 +3813 +3814 +3814 +3814 +3815 +3815 +3816 +3816 +3816 +3817 +3817 +3817 +3818 +3818 +3818 +3819 +3819 +3819 +3820 +3820 +3820 +3821 +3821 +3821 +3822 +3822 +3822 +3823 +3823 +3823 +3824 +3824 +3825 +3825 +3826 +3826 +3827 +3827 +3828 +3828 +3829 +3829 +3830 +3830 +3831 +3831 +3832 +3832 +3833 +3834 +3834 +3834 +3835 +3835 +3835 +3836 +3836 +3836 +3837 +3837 +3837 +3838 +3838 +3838 +3839 +3839 +3839 +3840 +3840 +3840 +3841 +3841 +3841 +3842 +3842 +3843 +3843 +3843 +3844 +3844 +3844 +3845 +3845 +3845 +3846 +3846 +3846 +3847 +3847 +3847 +3848 +3848 +3848 +3849 +3849 +3849 +3850 +3850 +3850 +3851 +3851 +3852 +3852 +3853 +3853 +3854 +3854 +3855 +3855 +3856 +3856 +3857 +3857 +3858 +3858 +3859 +3859 +3860 +3861 +3861 +3862 +3862 +3863 +3863 +3864 +3864 +3865 +3865 +3866 +3866 +3867 +3867 +3868 +3868 +3869 +3870 +3870 +3871 +3871 +3872 +3872 +3873 +3873 +3874 +3874 +3875 +3875 +3876 +3876 +3877 +3877 +3878 +3879 +3880 +3881 +3882 +3883 +3884 +3885 +3886 +0 +15 +30 +45 +60 +75 +90 +105 +120 +135 +150 +165 +180 +195 +210 +225 +240 +255 +594 +609 +624 +639 +654 +669 +684 +699 +714 +729 +744 +759 +774 +789 +804 +819 +834 +849 +864 +879 +894 +909 +924 +939 +954 +969 +984 +999 +1014 +1029 +1044 +1059 +1074 +1089 +1104 +1119 +1134 +1149 +1164 +1179 +1194 +1209 +1224 +1239 +1254 +1269 +1284 +1299 +1314 +1329 +1344 +1359 +1374 +1389 +1404 +1419 +1434 +1449 +1464 +1479 +1494 +1509 +1524 +1539 +1554 +1569 +1584 +1599 +1614 +1629 +1644 +1659 +1674 +1689 +1704 +1719 +1734 +1749 +1764 +1779 +1794 +1809 +1824 +1839 +1854 +1869 +1884 +1899 +1914 +1929 +1944 +1959 +1974 +1989 +2004 +2019 +2034 +2049 +2064 +2079 +2094 +2109 +2124 +2139 +2154 +2169 +2184 +2199 +3348 +3363 +3378 +3393 +3408 +3423 +3438 +3453 +3468 +3483 +3498 +3513 +3528 +3543 +3558 +3573 +3588 +3603 +440 +449 +458 +467 +476 +485 +494 +503 +512 +521 +530 +539 +548 +557 +566 +575 +584 +593 +3032 +3041 +3050 +3059 +3068 +3077 +3086 +3095 +3104 +3113 +3122 +3131 +3140 +3149 +3158 +3167 +3176 +3185 +3194 +3203 +3212 +3221 +3230 +3239 +3248 +3257 +3266 +3275 +3284 +3293 +3302 +3311 +3320 +3329 +3338 +3347 +2384 +2393 +2402 +2411 +2420 +2429 +2438 +2447 +2456 +2465 +2474 +2483 +2492 +2501 +2510 +2519 +2528 +2537 +2546 +2555 +2564 +2573 +2582 +2591 +2600 +2609 +2618 +2627 +2636 +2645 +2654 +2663 +2672 +2681 +2690 +2699 +2708 +2717 +2726 +2735 +2744 +2753 +2762 +2771 +2780 +2789 +2798 +2807 +2816 +2825 +2834 +2843 +2852 +2861 +2870 +2879 +2888 +2897 +2906 +2915 +2924 +2933 +2942 +2951 +2960 +2969 +2978 +2987 +2996 +3005 +3014 +3023 +3734 +3743 +3752 +3761 +3770 +3779 +3788 +3797 +3806 +3815 +3824 +3833 +3842 +3851 +3860 +3869 +3878 +3887 +0 +15 +30 +1 +16 +31 +2 +17 +32 +3 +18 +33 +4 +19 +34 +5 +20 +35 +6 +21 +36 +7 +22 +37 +8 +23 +38 +9 +24 +39 +10 +25 +40 +11 +26 +41 +12 +27 +42 +13 +28 +43 +14 +29 +44 +270 +273 +276 +271 +274 +277 +272 +275 +278 +432 +441 +450 +433 +442 +451 +434 +443 +452 +435 +444 +453 +436 +445 +454 +437 +446 +455 +438 +447 +456 +439 +448 +457 +440 +449 +458 +324 +327 +330 +333 +336 +339 +325 +328 +331 +334 +337 +340 +326 +329 +332 +335 +338 +341 +594 +609 +624 +639 +654 +669 +595 +610 +625 +640 +655 +670 +596 +611 +626 +641 +656 +671 +597 +612 +627 +642 +657 +672 +598 +613 +628 +643 +658 +673 +599 +614 +629 +644 +659 +674 +600 +615 +630 +645 +660 +675 +601 +616 +631 +646 +661 +676 +602 +617 +632 +647 +662 +677 +603 +618 +633 +648 +663 +678 +604 +619 +634 +649 +664 +679 +605 +620 +635 +650 +665 +680 +606 +621 +636 +651 +666 +681 +607 +622 +637 +652 +667 +682 +608 +623 +638 +653 +668 +683 +3024 +3033 +3042 +3051 +3060 +3069 +3025 +3034 +3043 +3052 +3061 +3070 +3026 +3035 +3044 +3053 +3062 +3071 +3027 +3036 +3045 +3054 +3063 +3072 +3028 +3037 +3046 +3055 +3064 +3073 +3029 +3038 +3047 +3056 +3065 +3074 +3030 +3039 +3048 +3057 +3066 +3075 +3031 +3040 +3049 +3058 +3067 +3076 +3032 +3041 +3050 +3059 +3068 +3077 +1134 +1149 +1164 +1179 +1194 +1209 +1224 +1239 +1254 +1135 +1150 +1165 +1180 +1195 +1210 +1225 +1240 +1255 +1136 +1151 +1166 +1181 +1196 +1211 +1226 +1241 +1256 +1137 +1152 +1167 +1182 +1197 +1212 +1227 +1242 +1257 +1138 +1153 +1168 +1183 +1198 +1213 +1228 +1243 +1258 +1139 +1154 +1169 +1184 +1199 +1214 +1229 +1244 +1259 +1140 +1155 +1170 +1185 +1200 +1215 +1230 +1245 +1260 +1141 +1156 +1171 +1186 +1201 +1216 +1231 +1246 +1261 +1142 +1157 +1172 +1187 +1202 +1217 +1232 +1247 +1262 +1143 +1158 +1173 +1188 +1203 +1218 +1233 +1248 +1263 +1144 +1159 +1174 +1189 +1204 +1219 +1234 +1249 +1264 +1145 +1160 +1175 +1190 +1205 +1220 +1235 +1250 +1265 +1146 +1161 +1176 +1191 +1206 +1221 +1236 +1251 +1266 +1147 +1162 +1177 +1192 +1207 +1222 +1237 +1252 +1267 +1148 +1163 +1178 +1193 +1208 +1223 +1238 +1253 +1268 +2376 +2385 +2394 +2403 +2412 +2421 +2430 +2439 +2448 +2377 +2386 +2395 +2404 +2413 +2422 +2431 +2440 +2449 +2378 +2387 +2396 +2405 +2414 +2423 +2432 +2441 +2450 +2379 +2388 +2397 +2406 +2415 +2424 +2433 +2442 +2451 +2380 +2389 +2398 +2407 +2416 +2425 +2434 +2443 +2452 +2381 +2390 +2399 +2408 +2417 +2426 +2435 +2444 +2453 +2382 +2391 +2400 +2409 +2418 +2427 +2436 +2445 +2454 +2383 +2392 +2401 +2410 +2419 +2428 +2437 +2446 +2455 +2384 +2393 +2402 +2411 +2420 +2429 +2438 +2447 +2456 +2214 +2217 +2220 +2223 +2226 +2229 +2232 +2235 +2238 +2215 +2218 +2221 +2224 +2227 +2230 +2233 +2236 +2239 +2216 +2219 +2222 +2225 +2228 +2231 +2234 +2237 +2240 +1944 +1959 +1974 +1945 +1960 +1975 +1946 +1961 +1976 +1947 +1962 +1977 +1948 +1963 +1978 +1949 +1964 +1979 +1950 +1965 +1980 +1951 +1966 +1981 +1952 +1967 +1982 +1953 +1968 +1983 +1954 +1969 +1984 +1955 +1970 +1985 +1956 +1971 +1986 +1957 +1972 +1987 +1958 +1973 +1988 +2862 +2871 +2880 +2863 +2872 +2881 +2864 +2873 +2882 +2865 +2874 +2883 +2866 +2875 +2884 +2867 +2876 +2885 +2868 +2877 +2886 +2869 +2878 +2887 +2870 +2879 +2888 +3348 +3363 +3378 +3349 +3364 +3379 +3350 +3365 +3380 +3351 +3366 +3381 +3352 +3367 +3382 +3353 +3368 +3383 +3354 +3369 +3384 +3355 +3370 +3385 +3356 +3371 +3386 +3357 +3372 +3387 +3358 +3373 +3388 +3359 +3374 +3389 +3360 +3375 +3390 +3361 +3376 +3391 +3362 +3377 +3392 +3726 +3735 +3744 +3727 +3736 +3745 +3728 +3737 +3746 +3729 +3738 +3747 +3730 +3739 +3748 +3731 +3740 +3749 +3732 +3741 +3750 +3733 +3742 +3751 +3734 +3743 +3752 +3618 +3621 +3624 +3619 +3622 +3625 +3620 +3623 +3626 +3672 +3675 +3678 +3673 +3676 +3679 +3674 +3677 +3680 +225 +240 +255 +226 +241 +256 +227 +242 +257 +228 +243 +258 +229 +244 +259 +230 +245 +260 +231 +246 +261 +232 +247 +262 +233 +248 +263 +234 +249 +264 +235 +250 +265 +236 +251 +266 +237 +252 +267 +238 +253 +268 +239 +254 +269 +315 +318 +321 +316 +319 +322 +317 +320 +323 +567 +576 +585 +568 +577 +586 +569 +578 +587 +570 +579 +588 +571 +580 +589 +572 +581 +590 +573 +582 +591 +574 +583 +592 +575 +584 +593 +414 +417 +420 +423 +426 +429 +415 +418 +421 +424 +427 +430 +416 +419 +422 +425 +428 +431 +1044 +1059 +1074 +1089 +1104 +1119 +1045 +1060 +1075 +1090 +1105 +1120 +1046 +1061 +1076 +1091 +1106 +1121 +1047 +1062 +1077 +1092 +1107 +1122 +1048 +1063 +1078 +1093 +1108 +1123 +1049 +1064 +1079 +1094 +1109 +1124 +1050 +1065 +1080 +1095 +1110 +1125 +1051 +1066 +1081 +1096 +1111 +1126 +1052 +1067 +1082 +1097 +1112 +1127 +1053 +1068 +1083 +1098 +1113 +1128 +1054 +1069 +1084 +1099 +1114 +1129 +1055 +1070 +1085 +1100 +1115 +1130 +1056 +1071 +1086 +1101 +1116 +1131 +1057 +1072 +1087 +1102 +1117 +1132 +1058 +1073 +1088 +1103 +1118 +1133 +3294 +3303 +3312 +3321 +3330 +3339 +3295 +3304 +3313 +3322 +3331 +3340 +3296 +3305 +3314 +3323 +3332 +3341 +3297 +3306 +3315 +3324 +3333 +3342 +3298 +3307 +3316 +3325 +3334 +3343 +3299 +3308 +3317 +3326 +3335 +3344 +3300 +3309 +3318 +3327 +3336 +3345 +3301 +3310 +3319 +3328 +3337 +3346 +3302 +3311 +3320 +3329 +3338 +3347 +1809 +1824 +1839 +1854 +1869 +1884 +1899 +1914 +1929 +1810 +1825 +1840 +1855 +1870 +1885 +1900 +1915 +1930 +1811 +1826 +1841 +1856 +1871 +1886 +1901 +1916 +1931 +1812 +1827 +1842 +1857 +1872 +1887 +1902 +1917 +1932 +1813 +1828 +1843 +1858 +1873 +1888 +1903 +1918 +1933 +1814 +1829 +1844 +1859 +1874 +1889 +1904 +1919 +1934 +1815 +1830 +1845 +1860 +1875 +1890 +1905 +1920 +1935 +1816 +1831 +1846 +1861 +1876 +1891 +1906 +1921 +1936 +1817 +1832 +1847 +1862 +1877 +1892 +1907 +1922 +1937 +1818 +1833 +1848 +1863 +1878 +1893 +1908 +1923 +1938 +1819 +1834 +1849 +1864 +1879 +1894 +1909 +1924 +1939 +1820 +1835 +1850 +1865 +1880 +1895 +1910 +1925 +1940 +1821 +1836 +1851 +1866 +1881 +1896 +1911 +1926 +1941 +1822 +1837 +1852 +1867 +1882 +1897 +1912 +1927 +1942 +1823 +1838 +1853 +1868 +1883 +1898 +1913 +1928 +1943 +2781 +2790 +2799 +2808 +2817 +2826 +2835 +2844 +2853 +2782 +2791 +2800 +2809 +2818 +2827 +2836 +2845 +2854 +2783 +2792 +2801 +2810 +2819 +2828 +2837 +2846 +2855 +2784 +2793 +2802 +2811 +2820 +2829 +2838 +2847 +2856 +2785 +2794 +2803 +2812 +2821 +2830 +2839 +2848 +2857 +2786 +2795 +2804 +2813 +2822 +2831 +2840 +2849 +2858 +2787 +2796 +2805 +2814 +2823 +2832 +2841 +2850 +2859 +2788 +2797 +2806 +2815 +2824 +2833 +2842 +2851 +2860 +2789 +2798 +2807 +2816 +2825 +2834 +2843 +2852 +2861 +2349 +2352 +2355 +2358 +2361 +2364 +2367 +2370 +2373 +2350 +2353 +2356 +2359 +2362 +2365 +2368 +2371 +2374 +2351 +2354 +2357 +2360 +2363 +2366 +2369 +2372 +2375 +2169 +2184 +2199 +2170 +2185 +2200 +2171 +2186 +2201 +2172 +2187 +2202 +2173 +2188 +2203 +2174 +2189 +2204 +2175 +2190 +2205 +2176 +2191 +2206 +2177 +2192 +2207 +2178 +2193 +2208 +2179 +2194 +2209 +2180 +2195 +2210 +2181 +2196 +2211 +2182 +2197 +2212 +2183 +2198 +2213 +2997 +3006 +3015 +2998 +3007 +3016 +2999 +3008 +3017 +3000 +3009 +3018 +3001 +3010 +3019 +3002 +3011 +3020 +3003 +3012 +3021 +3004 +3013 +3022 +3005 +3014 +3023 +3573 +3588 +3603 +3574 +3589 +3604 +3575 +3590 +3605 +3576 +3591 +3606 +3577 +3592 +3607 +3578 +3593 +3608 +3579 +3594 +3609 +3580 +3595 +3610 +3581 +3596 +3611 +3582 +3597 +3612 +3583 +3598 +3613 +3584 +3599 +3614 +3585 +3600 +3615 +3586 +3601 +3616 +3587 +3602 +3617 +3861 +3870 +3879 +3862 +3871 +3880 +3863 +3872 +3881 +3864 +3873 +3882 +3865 +3874 +3883 +3866 +3875 +3884 +3867 +3876 +3885 +3868 +3877 +3886 +3869 +3878 +3887 +3663 +3666 +3669 +3664 +3667 +3670 +3665 +3668 +3671 +3717 +3720 +3723 +3718 +3721 +3724 +3719 +3722 +3725 +0 +45 +90 +135 +180 +225 +1 +46 +91 +136 +181 +226 +2 +47 +92 +137 +182 +227 +3 +48 +93 +138 +183 +228 +4 +49 +94 +139 +184 +229 +5 +50 +95 +140 +185 +230 +6 +51 +96 +141 +186 +231 +7 +52 +97 +142 +187 +232 +8 +53 +98 +143 +188 +233 +9 +54 +99 +144 +189 +234 +10 +55 +100 +145 +190 +235 +11 +56 +101 +146 +191 +236 +12 +57 +102 +147 +192 +237 +13 +58 +103 +148 +193 +238 +14 +59 +104 +149 +194 +239 +270 +279 +288 +297 +306 +315 +271 +280 +289 +298 +307 +316 +272 +281 +290 +299 +308 +317 +432 +459 +486 +513 +540 +567 +433 +460 +487 +514 +541 +568 +434 +461 +488 +515 +542 +569 +435 +462 +489 +516 +543 +570 +436 +463 +490 +517 +544 +571 +437 +464 +491 +518 +545 +572 +438 +465 +492 +519 +546 +573 +439 +466 +493 +520 +547 +574 +440 +467 +494 +521 +548 +575 +3378 +3423 +3468 +3513 +3558 +3603 +3379 +3424 +3469 +3514 +3559 +3604 +3380 +3425 +3470 +3515 +3560 +3605 +3381 +3426 +3471 +3516 +3561 +3606 +3382 +3427 +3472 +3517 +3562 +3607 +3383 +3428 +3473 +3518 +3563 +3608 +3384 +3429 +3474 +3519 +3564 +3609 +3385 +3430 +3475 +3520 +3565 +3610 +3386 +3431 +3476 +3521 +3566 +3611 +3387 +3432 +3477 +3522 +3567 +3612 +3388 +3433 +3478 +3523 +3568 +3613 +3389 +3434 +3479 +3524 +3569 +3614 +3390 +3435 +3480 +3525 +3570 +3615 +3391 +3436 +3481 +3526 +3571 +3616 +3392 +3437 +3482 +3527 +3572 +3617 +3744 +3771 +3798 +3825 +3852 +3879 +3745 +3772 +3799 +3826 +3853 +3880 +3746 +3773 +3800 +3827 +3854 +3881 +3747 +3774 +3801 +3828 +3855 +3882 +3748 +3775 +3802 +3829 +3856 +3883 +3749 +3776 +3803 +3830 +3857 +3884 +3750 +3777 +3804 +3831 +3858 +3885 +3751 +3778 +3805 +3832 +3859 +3886 +3752 +3779 +3806 +3833 +3860 +3887 +3624 +3633 +3642 +3651 +3660 +3669 +3625 +3634 +3643 +3652 +3661 +3670 +3626 +3635 +3644 +3653 +3662 +3671 +) + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/points b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/points new file mode 100644 index 0000000000000000000000000000000000000000..281433e4a7158f0a2b5144511cb03796969396cf --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/points @@ -0,0 +1,4924 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class vectorField; + location "constant/polyMesh"; + object points; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +4900 +( +(0 0 0) +(2.5e-10 0 0) +(5e-10 0 0) +(7.5e-10 0 0) +(1e-09 0 0) +(1.25e-09 0 0) +(1.5e-09 0 0) +(1.75e-09 0 0) +(2e-09 0 0) +(2.25e-09 0 0) +(2.5e-09 0 0) +(2.75e-09 0 0) +(3e-09 0 0) +(3.25e-09 0 0) +(3.5e-09 0 0) +(3.75e-09 0 0) +(0 2.5e-10 0) +(2.5e-10 2.5e-10 0) +(5e-10 2.5e-10 0) +(7.5e-10 2.5e-10 0) +(1e-09 2.5e-10 0) +(1.25e-09 2.5e-10 0) +(1.5e-09 2.5e-10 0) +(1.75e-09 2.5e-10 0) +(2e-09 2.5e-10 0) +(2.25e-09 2.5e-10 0) +(2.5e-09 2.5e-10 0) +(2.75e-09 2.5e-10 0) +(3e-09 2.5e-10 0) +(3.25e-09 2.5e-10 0) +(3.5e-09 2.5e-10 0) +(3.75e-09 2.5e-10 0) +(0 5e-10 0) +(2.5e-10 5e-10 0) +(5e-10 5e-10 0) +(7.5e-10 5e-10 0) +(1e-09 5e-10 0) +(1.25e-09 5e-10 0) +(1.5e-09 5e-10 0) +(1.75e-09 5e-10 0) +(2e-09 5e-10 0) +(2.25e-09 5e-10 0) +(2.5e-09 5e-10 0) +(2.75e-09 5e-10 0) +(3e-09 5e-10 0) +(3.25e-09 5e-10 0) +(3.5e-09 5e-10 0) +(3.75e-09 5e-10 0) +(0 7.5e-10 0) +(2.5e-10 7.5e-10 0) +(5e-10 7.5e-10 0) +(7.5e-10 7.5e-10 0) +(1e-09 7.5e-10 0) +(1.25e-09 7.5e-10 0) +(1.5e-09 7.5e-10 0) +(1.75e-09 7.5e-10 0) +(2e-09 7.5e-10 0) +(2.25e-09 7.5e-10 0) +(2.5e-09 7.5e-10 0) +(2.75e-09 7.5e-10 0) +(3e-09 7.5e-10 0) +(3.25e-09 7.5e-10 0) +(3.5e-09 7.5e-10 0) +(3.75e-09 7.5e-10 0) +(0 0 5e-10) +(2.5e-10 0 5e-10) +(5e-10 0 5e-10) +(7.5e-10 0 5e-10) +(1e-09 0 5e-10) +(1.25e-09 0 5e-10) +(1.5e-09 0 5e-10) +(1.75e-09 0 5e-10) +(2e-09 0 5e-10) +(2.25e-09 0 5e-10) +(2.5e-09 0 5e-10) +(2.75e-09 0 5e-10) +(3e-09 0 5e-10) +(3.25e-09 0 5e-10) +(3.5e-09 0 5e-10) +(3.75e-09 0 5e-10) +(0 2.5e-10 5e-10) +(2.5e-10 2.5e-10 5e-10) +(5e-10 2.5e-10 5e-10) +(7.5e-10 2.5e-10 5e-10) +(1e-09 2.5e-10 5e-10) +(1.25e-09 2.5e-10 5e-10) +(1.5e-09 2.5e-10 5e-10) +(1.75e-09 2.5e-10 5e-10) +(2e-09 2.5e-10 5e-10) +(2.25e-09 2.5e-10 5e-10) +(2.5e-09 2.5e-10 5e-10) +(2.75e-09 2.5e-10 5e-10) +(3e-09 2.5e-10 5e-10) +(3.25e-09 2.5e-10 5e-10) +(3.5e-09 2.5e-10 5e-10) +(3.75e-09 2.5e-10 5e-10) +(0 5e-10 5e-10) +(2.5e-10 5e-10 5e-10) +(5e-10 5e-10 5e-10) +(7.5e-10 5e-10 5e-10) +(1e-09 5e-10 5e-10) +(1.25e-09 5e-10 5e-10) +(1.5e-09 5e-10 5e-10) +(1.75e-09 5e-10 5e-10) +(2e-09 5e-10 5e-10) +(2.25e-09 5e-10 5e-10) +(2.5e-09 5e-10 5e-10) +(2.75e-09 5e-10 5e-10) +(3e-09 5e-10 5e-10) +(3.25e-09 5e-10 5e-10) +(3.5e-09 5e-10 5e-10) +(3.75e-09 5e-10 5e-10) +(0 7.5e-10 5e-10) +(2.5e-10 7.5e-10 5e-10) +(5e-10 7.5e-10 5e-10) +(7.5e-10 7.5e-10 5e-10) +(1e-09 7.5e-10 5e-10) +(1.25e-09 7.5e-10 5e-10) +(1.5e-09 7.5e-10 5e-10) +(1.75e-09 7.5e-10 5e-10) +(2e-09 7.5e-10 5e-10) +(2.25e-09 7.5e-10 5e-10) +(2.5e-09 7.5e-10 5e-10) +(2.75e-09 7.5e-10 5e-10) +(3e-09 7.5e-10 5e-10) +(3.25e-09 7.5e-10 5e-10) +(3.5e-09 7.5e-10 5e-10) +(3.75e-09 7.5e-10 5e-10) +(0 0 1e-09) +(2.5e-10 0 1e-09) +(5e-10 0 1e-09) +(7.5e-10 0 1e-09) +(1e-09 0 1e-09) +(1.25e-09 0 1e-09) +(1.5e-09 0 1e-09) +(1.75e-09 0 1e-09) +(2e-09 0 1e-09) +(2.25e-09 0 1e-09) +(2.5e-09 0 1e-09) +(2.75e-09 0 1e-09) +(3e-09 0 1e-09) +(3.25e-09 0 1e-09) +(3.5e-09 0 1e-09) +(3.75e-09 0 1e-09) +(0 2.5e-10 1e-09) +(2.5e-10 2.5e-10 1e-09) +(5e-10 2.5e-10 1e-09) +(7.5e-10 2.5e-10 1e-09) +(1e-09 2.5e-10 1e-09) +(1.25e-09 2.5e-10 1e-09) +(1.5e-09 2.5e-10 1e-09) +(1.75e-09 2.5e-10 1e-09) +(2e-09 2.5e-10 1e-09) +(2.25e-09 2.5e-10 1e-09) +(2.5e-09 2.5e-10 1e-09) +(2.75e-09 2.5e-10 1e-09) +(3e-09 2.5e-10 1e-09) +(3.25e-09 2.5e-10 1e-09) +(3.5e-09 2.5e-10 1e-09) +(3.75e-09 2.5e-10 1e-09) +(0 5e-10 1e-09) +(2.5e-10 5e-10 1e-09) +(5e-10 5e-10 1e-09) +(7.5e-10 5e-10 1e-09) +(1e-09 5e-10 1e-09) +(1.25e-09 5e-10 1e-09) +(1.5e-09 5e-10 1e-09) +(1.75e-09 5e-10 1e-09) +(2e-09 5e-10 1e-09) +(2.25e-09 5e-10 1e-09) +(2.5e-09 5e-10 1e-09) +(2.75e-09 5e-10 1e-09) +(3e-09 5e-10 1e-09) +(3.25e-09 5e-10 1e-09) +(3.5e-09 5e-10 1e-09) +(3.75e-09 5e-10 1e-09) +(0 7.5e-10 1e-09) +(2.5e-10 7.5e-10 1e-09) +(5e-10 7.5e-10 1e-09) +(7.5e-10 7.5e-10 1e-09) +(1e-09 7.5e-10 1e-09) +(1.25e-09 7.5e-10 1e-09) +(1.5e-09 7.5e-10 1e-09) +(1.75e-09 7.5e-10 1e-09) +(2e-09 7.5e-10 1e-09) +(2.25e-09 7.5e-10 1e-09) +(2.5e-09 7.5e-10 1e-09) +(2.75e-09 7.5e-10 1e-09) +(3e-09 7.5e-10 1e-09) +(3.25e-09 7.5e-10 1e-09) +(3.5e-09 7.5e-10 1e-09) +(3.75e-09 7.5e-10 1e-09) +(0 0 1.5e-09) +(2.5e-10 0 1.5e-09) +(5e-10 0 1.5e-09) +(7.5e-10 0 1.5e-09) +(1e-09 0 1.5e-09) +(1.25e-09 0 1.5e-09) +(1.5e-09 0 1.5e-09) +(1.75e-09 0 1.5e-09) +(2e-09 0 1.5e-09) +(2.25e-09 0 1.5e-09) +(2.5e-09 0 1.5e-09) +(2.75e-09 0 1.5e-09) +(3e-09 0 1.5e-09) +(3.25e-09 0 1.5e-09) +(3.5e-09 0 1.5e-09) +(3.75e-09 0 1.5e-09) +(0 2.5e-10 1.5e-09) +(2.5e-10 2.5e-10 1.5e-09) +(5e-10 2.5e-10 1.5e-09) +(7.5e-10 2.5e-10 1.5e-09) +(1e-09 2.5e-10 1.5e-09) +(1.25e-09 2.5e-10 1.5e-09) +(1.5e-09 2.5e-10 1.5e-09) +(1.75e-09 2.5e-10 1.5e-09) +(2e-09 2.5e-10 1.5e-09) +(2.25e-09 2.5e-10 1.5e-09) +(2.5e-09 2.5e-10 1.5e-09) +(2.75e-09 2.5e-10 1.5e-09) +(3e-09 2.5e-10 1.5e-09) +(3.25e-09 2.5e-10 1.5e-09) +(3.5e-09 2.5e-10 1.5e-09) +(3.75e-09 2.5e-10 1.5e-09) +(0 5e-10 1.5e-09) +(2.5e-10 5e-10 1.5e-09) +(5e-10 5e-10 1.5e-09) +(7.5e-10 5e-10 1.5e-09) +(1e-09 5e-10 1.5e-09) +(1.25e-09 5e-10 1.5e-09) +(1.5e-09 5e-10 1.5e-09) +(1.75e-09 5e-10 1.5e-09) +(2e-09 5e-10 1.5e-09) +(2.25e-09 5e-10 1.5e-09) +(2.5e-09 5e-10 1.5e-09) +(2.75e-09 5e-10 1.5e-09) +(3e-09 5e-10 1.5e-09) +(3.25e-09 5e-10 1.5e-09) +(3.5e-09 5e-10 1.5e-09) +(3.75e-09 5e-10 1.5e-09) +(0 7.5e-10 1.5e-09) +(2.5e-10 7.5e-10 1.5e-09) +(5e-10 7.5e-10 1.5e-09) +(7.5e-10 7.5e-10 1.5e-09) +(1e-09 7.5e-10 1.5e-09) +(1.25e-09 7.5e-10 1.5e-09) +(1.5e-09 7.5e-10 1.5e-09) +(1.75e-09 7.5e-10 1.5e-09) +(2e-09 7.5e-10 1.5e-09) +(2.25e-09 7.5e-10 1.5e-09) +(2.5e-09 7.5e-10 1.5e-09) +(2.75e-09 7.5e-10 1.5e-09) +(3e-09 7.5e-10 1.5e-09) +(3.25e-09 7.5e-10 1.5e-09) +(3.5e-09 7.5e-10 1.5e-09) +(3.75e-09 7.5e-10 1.5e-09) +(0 0 2e-09) +(2.5e-10 0 2e-09) +(5e-10 0 2e-09) +(7.5e-10 0 2e-09) +(1e-09 0 2e-09) +(1.25e-09 0 2e-09) +(1.5e-09 0 2e-09) +(1.75e-09 0 2e-09) +(2e-09 0 2e-09) +(2.25e-09 0 2e-09) +(2.5e-09 0 2e-09) +(2.75e-09 0 2e-09) +(3e-09 0 2e-09) +(3.25e-09 0 2e-09) +(3.5e-09 0 2e-09) +(3.75e-09 0 2e-09) +(0 2.5e-10 2e-09) +(2.5e-10 2.5e-10 2e-09) +(5e-10 2.5e-10 2e-09) +(7.5e-10 2.5e-10 2e-09) +(1e-09 2.5e-10 2e-09) +(1.25e-09 2.5e-10 2e-09) +(1.5e-09 2.5e-10 2e-09) +(1.75e-09 2.5e-10 2e-09) +(2e-09 2.5e-10 2e-09) +(2.25e-09 2.5e-10 2e-09) +(2.5e-09 2.5e-10 2e-09) +(2.75e-09 2.5e-10 2e-09) +(3e-09 2.5e-10 2e-09) +(3.25e-09 2.5e-10 2e-09) +(3.5e-09 2.5e-10 2e-09) +(3.75e-09 2.5e-10 2e-09) +(0 5e-10 2e-09) +(2.5e-10 5e-10 2e-09) +(5e-10 5e-10 2e-09) +(7.5e-10 5e-10 2e-09) +(1e-09 5e-10 2e-09) +(1.25e-09 5e-10 2e-09) +(1.5e-09 5e-10 2e-09) +(1.75e-09 5e-10 2e-09) +(2e-09 5e-10 2e-09) +(2.25e-09 5e-10 2e-09) +(2.5e-09 5e-10 2e-09) +(2.75e-09 5e-10 2e-09) +(3e-09 5e-10 2e-09) +(3.25e-09 5e-10 2e-09) +(3.5e-09 5e-10 2e-09) +(3.75e-09 5e-10 2e-09) +(0 7.5e-10 2e-09) +(2.5e-10 7.5e-10 2e-09) +(5e-10 7.5e-10 2e-09) +(7.5e-10 7.5e-10 2e-09) +(1e-09 7.5e-10 2e-09) +(1.25e-09 7.5e-10 2e-09) +(1.5e-09 7.5e-10 2e-09) +(1.75e-09 7.5e-10 2e-09) +(2e-09 7.5e-10 2e-09) +(2.25e-09 7.5e-10 2e-09) +(2.5e-09 7.5e-10 2e-09) +(2.75e-09 7.5e-10 2e-09) +(3e-09 7.5e-10 2e-09) +(3.25e-09 7.5e-10 2e-09) +(3.5e-09 7.5e-10 2e-09) +(3.75e-09 7.5e-10 2e-09) +(0 0 2.5e-09) +(2.5e-10 0 2.5e-09) +(5e-10 0 2.5e-09) +(7.5e-10 0 2.5e-09) +(1e-09 0 2.5e-09) +(1.25e-09 0 2.5e-09) +(1.5e-09 0 2.5e-09) +(1.75e-09 0 2.5e-09) +(2e-09 0 2.5e-09) +(2.25e-09 0 2.5e-09) +(2.5e-09 0 2.5e-09) +(2.75e-09 0 2.5e-09) +(3e-09 0 2.5e-09) +(3.25e-09 0 2.5e-09) +(3.5e-09 0 2.5e-09) +(3.75e-09 0 2.5e-09) +(0 2.5e-10 2.5e-09) +(2.5e-10 2.5e-10 2.5e-09) +(5e-10 2.5e-10 2.5e-09) +(7.5e-10 2.5e-10 2.5e-09) +(1e-09 2.5e-10 2.5e-09) +(1.25e-09 2.5e-10 2.5e-09) +(1.5e-09 2.5e-10 2.5e-09) +(1.75e-09 2.5e-10 2.5e-09) +(2e-09 2.5e-10 2.5e-09) +(2.25e-09 2.5e-10 2.5e-09) +(2.5e-09 2.5e-10 2.5e-09) +(2.75e-09 2.5e-10 2.5e-09) +(3e-09 2.5e-10 2.5e-09) +(3.25e-09 2.5e-10 2.5e-09) +(3.5e-09 2.5e-10 2.5e-09) +(3.75e-09 2.5e-10 2.5e-09) +(0 5e-10 2.5e-09) +(2.5e-10 5e-10 2.5e-09) +(5e-10 5e-10 2.5e-09) +(7.5e-10 5e-10 2.5e-09) +(1e-09 5e-10 2.5e-09) +(1.25e-09 5e-10 2.5e-09) +(1.5e-09 5e-10 2.5e-09) +(1.75e-09 5e-10 2.5e-09) +(2e-09 5e-10 2.5e-09) +(2.25e-09 5e-10 2.5e-09) +(2.5e-09 5e-10 2.5e-09) +(2.75e-09 5e-10 2.5e-09) +(3e-09 5e-10 2.5e-09) +(3.25e-09 5e-10 2.5e-09) +(3.5e-09 5e-10 2.5e-09) +(3.75e-09 5e-10 2.5e-09) +(0 7.5e-10 2.5e-09) +(2.5e-10 7.5e-10 2.5e-09) +(5e-10 7.5e-10 2.5e-09) +(7.5e-10 7.5e-10 2.5e-09) +(1e-09 7.5e-10 2.5e-09) +(1.25e-09 7.5e-10 2.5e-09) +(1.5e-09 7.5e-10 2.5e-09) +(1.75e-09 7.5e-10 2.5e-09) +(2e-09 7.5e-10 2.5e-09) +(2.25e-09 7.5e-10 2.5e-09) +(2.5e-09 7.5e-10 2.5e-09) +(2.75e-09 7.5e-10 2.5e-09) +(3e-09 7.5e-10 2.5e-09) +(3.25e-09 7.5e-10 2.5e-09) +(3.5e-09 7.5e-10 2.5e-09) +(3.75e-09 7.5e-10 2.5e-09) +(0 0 3e-09) +(2.5e-10 0 3e-09) +(5e-10 0 3e-09) +(7.5e-10 0 3e-09) +(1e-09 0 3e-09) +(1.25e-09 0 3e-09) +(1.5e-09 0 3e-09) +(1.75e-09 0 3e-09) +(2e-09 0 3e-09) +(2.25e-09 0 3e-09) +(2.5e-09 0 3e-09) +(2.75e-09 0 3e-09) +(3e-09 0 3e-09) +(3.25e-09 0 3e-09) +(3.5e-09 0 3e-09) +(3.75e-09 0 3e-09) +(0 2.5e-10 3e-09) +(2.5e-10 2.5e-10 3e-09) +(5e-10 2.5e-10 3e-09) +(7.5e-10 2.5e-10 3e-09) +(1e-09 2.5e-10 3e-09) +(1.25e-09 2.5e-10 3e-09) +(1.5e-09 2.5e-10 3e-09) +(1.75e-09 2.5e-10 3e-09) +(2e-09 2.5e-10 3e-09) +(2.25e-09 2.5e-10 3e-09) +(2.5e-09 2.5e-10 3e-09) +(2.75e-09 2.5e-10 3e-09) +(3e-09 2.5e-10 3e-09) +(3.25e-09 2.5e-10 3e-09) +(3.5e-09 2.5e-10 3e-09) +(3.75e-09 2.5e-10 3e-09) +(0 5e-10 3e-09) +(2.5e-10 5e-10 3e-09) +(5e-10 5e-10 3e-09) +(7.5e-10 5e-10 3e-09) +(1e-09 5e-10 3e-09) +(1.25e-09 5e-10 3e-09) +(1.5e-09 5e-10 3e-09) +(1.75e-09 5e-10 3e-09) +(2e-09 5e-10 3e-09) +(2.25e-09 5e-10 3e-09) +(2.5e-09 5e-10 3e-09) +(2.75e-09 5e-10 3e-09) +(3e-09 5e-10 3e-09) +(3.25e-09 5e-10 3e-09) +(3.5e-09 5e-10 3e-09) +(3.75e-09 5e-10 3e-09) +(0 7.5e-10 3e-09) +(2.5e-10 7.5e-10 3e-09) +(5e-10 7.5e-10 3e-09) +(7.5e-10 7.5e-10 3e-09) +(1e-09 7.5e-10 3e-09) +(1.25e-09 7.5e-10 3e-09) +(1.5e-09 7.5e-10 3e-09) +(1.75e-09 7.5e-10 3e-09) +(2e-09 7.5e-10 3e-09) +(2.25e-09 7.5e-10 3e-09) +(2.5e-09 7.5e-10 3e-09) +(2.75e-09 7.5e-10 3e-09) +(3e-09 7.5e-10 3e-09) +(3.25e-09 7.5e-10 3e-09) +(3.5e-09 7.5e-10 3e-09) +(3.75e-09 7.5e-10 3e-09) +(4.333333333e-09 0 0) +(4.916666667e-09 0 0) +(5.5e-09 0 0) +(4.333333333e-09 2.5e-10 0) +(4.916666667e-09 2.5e-10 0) +(5.5e-09 2.5e-10 0) +(4.333333333e-09 5e-10 0) +(4.916666667e-09 5e-10 0) +(5.5e-09 5e-10 0) +(4.333333333e-09 7.5e-10 0) +(4.916666667e-09 7.5e-10 0) +(5.5e-09 7.5e-10 0) +(4.333333333e-09 0 5e-10) +(4.916666667e-09 0 5e-10) +(5.5e-09 0 5e-10) +(4.333333333e-09 2.5e-10 5e-10) +(4.916666667e-09 2.5e-10 5e-10) +(5.5e-09 2.5e-10 5e-10) +(4.333333333e-09 5e-10 5e-10) +(4.916666667e-09 5e-10 5e-10) +(5.5e-09 5e-10 5e-10) +(4.333333333e-09 7.5e-10 5e-10) +(4.916666667e-09 7.5e-10 5e-10) +(5.5e-09 7.5e-10 5e-10) +(4.333333333e-09 0 1e-09) +(4.916666667e-09 0 1e-09) +(5.5e-09 0 1e-09) +(4.333333333e-09 2.5e-10 1e-09) +(4.916666667e-09 2.5e-10 1e-09) +(5.5e-09 2.5e-10 1e-09) +(4.333333333e-09 5e-10 1e-09) +(4.916666667e-09 5e-10 1e-09) +(5.5e-09 5e-10 1e-09) +(4.333333333e-09 7.5e-10 1e-09) +(4.916666667e-09 7.5e-10 1e-09) +(5.5e-09 7.5e-10 1e-09) +(4.333333333e-09 0 1.5e-09) +(4.916666667e-09 0 1.5e-09) +(5.5e-09 0 1.5e-09) +(4.333333333e-09 2.5e-10 1.5e-09) +(4.916666667e-09 2.5e-10 1.5e-09) +(5.5e-09 2.5e-10 1.5e-09) +(4.333333333e-09 5e-10 1.5e-09) +(4.916666667e-09 5e-10 1.5e-09) +(5.5e-09 5e-10 1.5e-09) +(4.333333333e-09 7.5e-10 1.5e-09) +(4.916666667e-09 7.5e-10 1.5e-09) +(5.5e-09 7.5e-10 1.5e-09) +(4.333333333e-09 0 2e-09) +(4.916666667e-09 0 2e-09) +(5.5e-09 0 2e-09) +(4.333333333e-09 2.5e-10 2e-09) +(4.916666667e-09 2.5e-10 2e-09) +(5.5e-09 2.5e-10 2e-09) +(4.333333333e-09 5e-10 2e-09) +(4.916666667e-09 5e-10 2e-09) +(5.5e-09 5e-10 2e-09) +(4.333333333e-09 7.5e-10 2e-09) +(4.916666667e-09 7.5e-10 2e-09) +(5.5e-09 7.5e-10 2e-09) +(4.333333333e-09 0 2.5e-09) +(4.916666667e-09 0 2.5e-09) +(5.5e-09 0 2.5e-09) +(4.333333333e-09 2.5e-10 2.5e-09) +(4.916666667e-09 2.5e-10 2.5e-09) +(5.5e-09 2.5e-10 2.5e-09) +(4.333333333e-09 5e-10 2.5e-09) +(4.916666667e-09 5e-10 2.5e-09) +(5.5e-09 5e-10 2.5e-09) +(4.333333333e-09 7.5e-10 2.5e-09) +(4.916666667e-09 7.5e-10 2.5e-09) +(5.5e-09 7.5e-10 2.5e-09) +(4.333333333e-09 0 3e-09) +(4.916666667e-09 0 3e-09) +(5.5e-09 0 3e-09) +(4.333333333e-09 2.5e-10 3e-09) +(4.916666667e-09 2.5e-10 3e-09) +(5.5e-09 2.5e-10 3e-09) +(4.333333333e-09 5e-10 3e-09) +(4.916666667e-09 5e-10 3e-09) +(5.5e-09 5e-10 3e-09) +(4.333333333e-09 7.5e-10 3e-09) +(4.916666667e-09 7.5e-10 3e-09) +(5.5e-09 7.5e-10 3e-09) +(3.833333333e-09 1e-09 0) +(4.361111111e-09 1e-09 0) +(4.888888889e-09 1e-09 0) +(5.416666667e-09 1e-09 0) +(3.916666667e-09 1.25e-09 0) +(4.388888889e-09 1.25e-09 0) +(4.861111111e-09 1.25e-09 0) +(5.333333333e-09 1.25e-09 0) +(4e-09 1.5e-09 0) +(4.416666667e-09 1.5e-09 0) +(4.833333333e-09 1.5e-09 0) +(5.25e-09 1.5e-09 0) +(4.083333333e-09 1.75e-09 0) +(4.444444444e-09 1.75e-09 0) +(4.805555556e-09 1.75e-09 0) +(5.166666667e-09 1.75e-09 0) +(4.166666667e-09 2e-09 0) +(4.472222222e-09 2e-09 0) +(4.777777778e-09 2e-09 0) +(5.083333333e-09 2e-09 0) +(4.25e-09 2.25e-09 0) +(4.5e-09 2.25e-09 0) +(4.75e-09 2.25e-09 0) +(5e-09 2.25e-09 0) +(3.833333333e-09 1e-09 5e-10) +(4.361111111e-09 1e-09 5e-10) +(4.888888889e-09 1e-09 5e-10) +(5.416666667e-09 1e-09 5e-10) +(3.916666667e-09 1.25e-09 5e-10) +(4.388888889e-09 1.25e-09 5e-10) +(4.861111111e-09 1.25e-09 5e-10) +(5.333333333e-09 1.25e-09 5e-10) +(4e-09 1.5e-09 5e-10) +(4.416666667e-09 1.5e-09 5e-10) +(4.833333333e-09 1.5e-09 5e-10) +(5.25e-09 1.5e-09 5e-10) +(4.083333333e-09 1.75e-09 5e-10) +(4.444444444e-09 1.75e-09 5e-10) +(4.805555556e-09 1.75e-09 5e-10) +(5.166666667e-09 1.75e-09 5e-10) +(4.166666667e-09 2e-09 5e-10) +(4.472222222e-09 2e-09 5e-10) +(4.777777778e-09 2e-09 5e-10) +(5.083333333e-09 2e-09 5e-10) +(4.25e-09 2.25e-09 5e-10) +(4.5e-09 2.25e-09 5e-10) +(4.75e-09 2.25e-09 5e-10) +(5e-09 2.25e-09 5e-10) +(3.833333333e-09 1e-09 1e-09) +(4.361111111e-09 1e-09 1e-09) +(4.888888889e-09 1e-09 1e-09) +(5.416666667e-09 1e-09 1e-09) +(3.916666667e-09 1.25e-09 1e-09) +(4.388888889e-09 1.25e-09 1e-09) +(4.861111111e-09 1.25e-09 1e-09) +(5.333333333e-09 1.25e-09 1e-09) +(4e-09 1.5e-09 1e-09) +(4.416666667e-09 1.5e-09 1e-09) +(4.833333333e-09 1.5e-09 1e-09) +(5.25e-09 1.5e-09 1e-09) +(4.083333333e-09 1.75e-09 1e-09) +(4.444444444e-09 1.75e-09 1e-09) +(4.805555556e-09 1.75e-09 1e-09) +(5.166666667e-09 1.75e-09 1e-09) +(4.166666667e-09 2e-09 1e-09) +(4.472222222e-09 2e-09 1e-09) +(4.777777778e-09 2e-09 1e-09) +(5.083333333e-09 2e-09 1e-09) +(4.25e-09 2.25e-09 1e-09) +(4.5e-09 2.25e-09 1e-09) +(4.75e-09 2.25e-09 1e-09) +(5e-09 2.25e-09 1e-09) +(3.833333333e-09 1e-09 1.5e-09) +(4.361111111e-09 1e-09 1.5e-09) +(4.888888889e-09 1e-09 1.5e-09) +(5.416666667e-09 1e-09 1.5e-09) +(3.916666667e-09 1.25e-09 1.5e-09) +(4.388888889e-09 1.25e-09 1.5e-09) +(4.861111111e-09 1.25e-09 1.5e-09) +(5.333333333e-09 1.25e-09 1.5e-09) +(4e-09 1.5e-09 1.5e-09) +(4.416666667e-09 1.5e-09 1.5e-09) +(4.833333333e-09 1.5e-09 1.5e-09) +(5.25e-09 1.5e-09 1.5e-09) +(4.083333333e-09 1.75e-09 1.5e-09) +(4.444444444e-09 1.75e-09 1.5e-09) +(4.805555556e-09 1.75e-09 1.5e-09) +(5.166666667e-09 1.75e-09 1.5e-09) +(4.166666667e-09 2e-09 1.5e-09) +(4.472222222e-09 2e-09 1.5e-09) +(4.777777778e-09 2e-09 1.5e-09) +(5.083333333e-09 2e-09 1.5e-09) +(4.25e-09 2.25e-09 1.5e-09) +(4.5e-09 2.25e-09 1.5e-09) +(4.75e-09 2.25e-09 1.5e-09) +(5e-09 2.25e-09 1.5e-09) +(3.833333333e-09 1e-09 2e-09) +(4.361111111e-09 1e-09 2e-09) +(4.888888889e-09 1e-09 2e-09) +(5.416666667e-09 1e-09 2e-09) +(3.916666667e-09 1.25e-09 2e-09) +(4.388888889e-09 1.25e-09 2e-09) +(4.861111111e-09 1.25e-09 2e-09) +(5.333333333e-09 1.25e-09 2e-09) +(4e-09 1.5e-09 2e-09) +(4.416666667e-09 1.5e-09 2e-09) +(4.833333333e-09 1.5e-09 2e-09) +(5.25e-09 1.5e-09 2e-09) +(4.083333333e-09 1.75e-09 2e-09) +(4.444444444e-09 1.75e-09 2e-09) +(4.805555556e-09 1.75e-09 2e-09) +(5.166666667e-09 1.75e-09 2e-09) +(4.166666667e-09 2e-09 2e-09) +(4.472222222e-09 2e-09 2e-09) +(4.777777778e-09 2e-09 2e-09) +(5.083333333e-09 2e-09 2e-09) +(4.25e-09 2.25e-09 2e-09) +(4.5e-09 2.25e-09 2e-09) +(4.75e-09 2.25e-09 2e-09) +(5e-09 2.25e-09 2e-09) +(3.833333333e-09 1e-09 2.5e-09) +(4.361111111e-09 1e-09 2.5e-09) +(4.888888889e-09 1e-09 2.5e-09) +(5.416666667e-09 1e-09 2.5e-09) +(3.916666667e-09 1.25e-09 2.5e-09) +(4.388888889e-09 1.25e-09 2.5e-09) +(4.861111111e-09 1.25e-09 2.5e-09) +(5.333333333e-09 1.25e-09 2.5e-09) +(4e-09 1.5e-09 2.5e-09) +(4.416666667e-09 1.5e-09 2.5e-09) +(4.833333333e-09 1.5e-09 2.5e-09) +(5.25e-09 1.5e-09 2.5e-09) +(4.083333333e-09 1.75e-09 2.5e-09) +(4.444444444e-09 1.75e-09 2.5e-09) +(4.805555556e-09 1.75e-09 2.5e-09) +(5.166666667e-09 1.75e-09 2.5e-09) +(4.166666667e-09 2e-09 2.5e-09) +(4.472222222e-09 2e-09 2.5e-09) +(4.777777778e-09 2e-09 2.5e-09) +(5.083333333e-09 2e-09 2.5e-09) +(4.25e-09 2.25e-09 2.5e-09) +(4.5e-09 2.25e-09 2.5e-09) +(4.75e-09 2.25e-09 2.5e-09) +(5e-09 2.25e-09 2.5e-09) +(3.833333333e-09 1e-09 3e-09) +(4.361111111e-09 1e-09 3e-09) +(4.888888889e-09 1e-09 3e-09) +(5.416666667e-09 1e-09 3e-09) +(3.916666667e-09 1.25e-09 3e-09) +(4.388888889e-09 1.25e-09 3e-09) +(4.861111111e-09 1.25e-09 3e-09) +(5.333333333e-09 1.25e-09 3e-09) +(4e-09 1.5e-09 3e-09) +(4.416666667e-09 1.5e-09 3e-09) +(4.833333333e-09 1.5e-09 3e-09) +(5.25e-09 1.5e-09 3e-09) +(4.083333333e-09 1.75e-09 3e-09) +(4.444444444e-09 1.75e-09 3e-09) +(4.805555556e-09 1.75e-09 3e-09) +(5.166666667e-09 1.75e-09 3e-09) +(4.166666667e-09 2e-09 3e-09) +(4.472222222e-09 2e-09 3e-09) +(4.777777778e-09 2e-09 3e-09) +(5.083333333e-09 2e-09 3e-09) +(4.25e-09 2.25e-09 3e-09) +(4.5e-09 2.25e-09 3e-09) +(4.75e-09 2.25e-09 3e-09) +(5e-09 2.25e-09 3e-09) +(5.75e-09 0 0) +(6e-09 0 0) +(6.25e-09 0 0) +(6.5e-09 0 0) +(6.75e-09 0 0) +(7e-09 0 0) +(7.25e-09 0 0) +(7.5e-09 0 0) +(7.75e-09 0 0) +(5.75e-09 2.5e-10 0) +(6e-09 2.5e-10 0) +(6.25e-09 2.5e-10 0) +(6.5e-09 2.5e-10 0) +(6.75e-09 2.5e-10 0) +(7e-09 2.5e-10 0) +(7.25e-09 2.5e-10 0) +(7.5e-09 2.5e-10 0) +(7.75e-09 2.5e-10 0) +(5.75e-09 5e-10 0) +(6e-09 5e-10 0) +(6.25e-09 5e-10 0) +(6.5e-09 5e-10 0) +(6.75e-09 5e-10 0) +(7e-09 5e-10 0) +(7.25e-09 5e-10 0) +(7.5e-09 5e-10 0) +(7.75e-09 5e-10 0) +(5.75e-09 7.5e-10 0) +(6e-09 7.5e-10 0) +(6.25e-09 7.5e-10 0) +(6.5e-09 7.5e-10 0) +(6.75e-09 7.5e-10 0) +(7e-09 7.5e-10 0) +(7.25e-09 7.5e-10 0) +(7.5e-09 7.5e-10 0) +(7.75e-09 7.5e-10 0) +(5.75e-09 0 5e-10) +(6e-09 0 5e-10) +(6.25e-09 0 5e-10) +(6.5e-09 0 5e-10) +(6.75e-09 0 5e-10) +(7e-09 0 5e-10) +(7.25e-09 0 5e-10) +(7.5e-09 0 5e-10) +(7.75e-09 0 5e-10) +(5.75e-09 2.5e-10 5e-10) +(6e-09 2.5e-10 5e-10) +(6.25e-09 2.5e-10 5e-10) +(6.5e-09 2.5e-10 5e-10) +(6.75e-09 2.5e-10 5e-10) +(7e-09 2.5e-10 5e-10) +(7.25e-09 2.5e-10 5e-10) +(7.5e-09 2.5e-10 5e-10) +(7.75e-09 2.5e-10 5e-10) +(5.75e-09 5e-10 5e-10) +(6e-09 5e-10 5e-10) +(6.25e-09 5e-10 5e-10) +(6.5e-09 5e-10 5e-10) +(6.75e-09 5e-10 5e-10) +(7e-09 5e-10 5e-10) +(7.25e-09 5e-10 5e-10) +(7.5e-09 5e-10 5e-10) +(7.75e-09 5e-10 5e-10) +(5.75e-09 7.5e-10 5e-10) +(6e-09 7.5e-10 5e-10) +(6.25e-09 7.5e-10 5e-10) +(6.5e-09 7.5e-10 5e-10) +(6.75e-09 7.5e-10 5e-10) +(7e-09 7.5e-10 5e-10) +(7.25e-09 7.5e-10 5e-10) +(7.5e-09 7.5e-10 5e-10) +(7.75e-09 7.5e-10 5e-10) +(5.75e-09 0 1e-09) +(6e-09 0 1e-09) +(6.25e-09 0 1e-09) +(6.5e-09 0 1e-09) +(6.75e-09 0 1e-09) +(7e-09 0 1e-09) +(7.25e-09 0 1e-09) +(7.5e-09 0 1e-09) +(7.75e-09 0 1e-09) +(5.75e-09 2.5e-10 1e-09) +(6e-09 2.5e-10 1e-09) +(6.25e-09 2.5e-10 1e-09) +(6.5e-09 2.5e-10 1e-09) +(6.75e-09 2.5e-10 1e-09) +(7e-09 2.5e-10 1e-09) +(7.25e-09 2.5e-10 1e-09) +(7.5e-09 2.5e-10 1e-09) +(7.75e-09 2.5e-10 1e-09) +(5.75e-09 5e-10 1e-09) +(6e-09 5e-10 1e-09) +(6.25e-09 5e-10 1e-09) +(6.5e-09 5e-10 1e-09) +(6.75e-09 5e-10 1e-09) +(7e-09 5e-10 1e-09) +(7.25e-09 5e-10 1e-09) +(7.5e-09 5e-10 1e-09) +(7.75e-09 5e-10 1e-09) +(5.75e-09 7.5e-10 1e-09) +(6e-09 7.5e-10 1e-09) +(6.25e-09 7.5e-10 1e-09) +(6.5e-09 7.5e-10 1e-09) +(6.75e-09 7.5e-10 1e-09) +(7e-09 7.5e-10 1e-09) +(7.25e-09 7.5e-10 1e-09) +(7.5e-09 7.5e-10 1e-09) +(7.75e-09 7.5e-10 1e-09) +(5.75e-09 0 1.5e-09) +(6e-09 0 1.5e-09) +(6.25e-09 0 1.5e-09) +(6.5e-09 0 1.5e-09) +(6.75e-09 0 1.5e-09) +(7e-09 0 1.5e-09) +(7.25e-09 0 1.5e-09) +(7.5e-09 0 1.5e-09) +(7.75e-09 0 1.5e-09) +(5.75e-09 2.5e-10 1.5e-09) +(6e-09 2.5e-10 1.5e-09) +(6.25e-09 2.5e-10 1.5e-09) +(6.5e-09 2.5e-10 1.5e-09) +(6.75e-09 2.5e-10 1.5e-09) +(7e-09 2.5e-10 1.5e-09) +(7.25e-09 2.5e-10 1.5e-09) +(7.5e-09 2.5e-10 1.5e-09) +(7.75e-09 2.5e-10 1.5e-09) +(5.75e-09 5e-10 1.5e-09) +(6e-09 5e-10 1.5e-09) +(6.25e-09 5e-10 1.5e-09) +(6.5e-09 5e-10 1.5e-09) +(6.75e-09 5e-10 1.5e-09) +(7e-09 5e-10 1.5e-09) +(7.25e-09 5e-10 1.5e-09) +(7.5e-09 5e-10 1.5e-09) +(7.75e-09 5e-10 1.5e-09) +(5.75e-09 7.5e-10 1.5e-09) +(6e-09 7.5e-10 1.5e-09) +(6.25e-09 7.5e-10 1.5e-09) +(6.5e-09 7.5e-10 1.5e-09) +(6.75e-09 7.5e-10 1.5e-09) +(7e-09 7.5e-10 1.5e-09) +(7.25e-09 7.5e-10 1.5e-09) +(7.5e-09 7.5e-10 1.5e-09) +(7.75e-09 7.5e-10 1.5e-09) +(5.75e-09 0 2e-09) +(6e-09 0 2e-09) +(6.25e-09 0 2e-09) +(6.5e-09 0 2e-09) +(6.75e-09 0 2e-09) +(7e-09 0 2e-09) +(7.25e-09 0 2e-09) +(7.5e-09 0 2e-09) +(7.75e-09 0 2e-09) +(5.75e-09 2.5e-10 2e-09) +(6e-09 2.5e-10 2e-09) +(6.25e-09 2.5e-10 2e-09) +(6.5e-09 2.5e-10 2e-09) +(6.75e-09 2.5e-10 2e-09) +(7e-09 2.5e-10 2e-09) +(7.25e-09 2.5e-10 2e-09) +(7.5e-09 2.5e-10 2e-09) +(7.75e-09 2.5e-10 2e-09) +(5.75e-09 5e-10 2e-09) +(6e-09 5e-10 2e-09) +(6.25e-09 5e-10 2e-09) +(6.5e-09 5e-10 2e-09) +(6.75e-09 5e-10 2e-09) +(7e-09 5e-10 2e-09) +(7.25e-09 5e-10 2e-09) +(7.5e-09 5e-10 2e-09) +(7.75e-09 5e-10 2e-09) +(5.75e-09 7.5e-10 2e-09) +(6e-09 7.5e-10 2e-09) +(6.25e-09 7.5e-10 2e-09) +(6.5e-09 7.5e-10 2e-09) +(6.75e-09 7.5e-10 2e-09) +(7e-09 7.5e-10 2e-09) +(7.25e-09 7.5e-10 2e-09) +(7.5e-09 7.5e-10 2e-09) +(7.75e-09 7.5e-10 2e-09) +(5.75e-09 0 2.5e-09) +(6e-09 0 2.5e-09) +(6.25e-09 0 2.5e-09) +(6.5e-09 0 2.5e-09) +(6.75e-09 0 2.5e-09) +(7e-09 0 2.5e-09) +(7.25e-09 0 2.5e-09) +(7.5e-09 0 2.5e-09) +(7.75e-09 0 2.5e-09) +(5.75e-09 2.5e-10 2.5e-09) +(6e-09 2.5e-10 2.5e-09) +(6.25e-09 2.5e-10 2.5e-09) +(6.5e-09 2.5e-10 2.5e-09) +(6.75e-09 2.5e-10 2.5e-09) +(7e-09 2.5e-10 2.5e-09) +(7.25e-09 2.5e-10 2.5e-09) +(7.5e-09 2.5e-10 2.5e-09) +(7.75e-09 2.5e-10 2.5e-09) +(5.75e-09 5e-10 2.5e-09) +(6e-09 5e-10 2.5e-09) +(6.25e-09 5e-10 2.5e-09) +(6.5e-09 5e-10 2.5e-09) +(6.75e-09 5e-10 2.5e-09) +(7e-09 5e-10 2.5e-09) +(7.25e-09 5e-10 2.5e-09) +(7.5e-09 5e-10 2.5e-09) +(7.75e-09 5e-10 2.5e-09) +(5.75e-09 7.5e-10 2.5e-09) +(6e-09 7.5e-10 2.5e-09) +(6.25e-09 7.5e-10 2.5e-09) +(6.5e-09 7.5e-10 2.5e-09) +(6.75e-09 7.5e-10 2.5e-09) +(7e-09 7.5e-10 2.5e-09) +(7.25e-09 7.5e-10 2.5e-09) +(7.5e-09 7.5e-10 2.5e-09) +(7.75e-09 7.5e-10 2.5e-09) +(5.75e-09 0 3e-09) +(6e-09 0 3e-09) +(6.25e-09 0 3e-09) +(6.5e-09 0 3e-09) +(6.75e-09 0 3e-09) +(7e-09 0 3e-09) +(7.25e-09 0 3e-09) +(7.5e-09 0 3e-09) +(7.75e-09 0 3e-09) +(5.75e-09 2.5e-10 3e-09) +(6e-09 2.5e-10 3e-09) +(6.25e-09 2.5e-10 3e-09) +(6.5e-09 2.5e-10 3e-09) +(6.75e-09 2.5e-10 3e-09) +(7e-09 2.5e-10 3e-09) +(7.25e-09 2.5e-10 3e-09) +(7.5e-09 2.5e-10 3e-09) +(7.75e-09 2.5e-10 3e-09) +(5.75e-09 5e-10 3e-09) +(6e-09 5e-10 3e-09) +(6.25e-09 5e-10 3e-09) +(6.5e-09 5e-10 3e-09) +(6.75e-09 5e-10 3e-09) +(7e-09 5e-10 3e-09) +(7.25e-09 5e-10 3e-09) +(7.5e-09 5e-10 3e-09) +(7.75e-09 5e-10 3e-09) +(5.75e-09 7.5e-10 3e-09) +(6e-09 7.5e-10 3e-09) +(6.25e-09 7.5e-10 3e-09) +(6.5e-09 7.5e-10 3e-09) +(6.75e-09 7.5e-10 3e-09) +(7e-09 7.5e-10 3e-09) +(7.25e-09 7.5e-10 3e-09) +(7.5e-09 7.5e-10 3e-09) +(7.75e-09 7.5e-10 3e-09) +(0 1e-09 0) +(2.555555556e-10 1e-09 0) +(5.111111111e-10 1e-09 0) +(7.666666667e-10 1e-09 0) +(1.022222222e-09 1e-09 0) +(1.277777778e-09 1e-09 0) +(1.533333333e-09 1e-09 0) +(1.788888889e-09 1e-09 0) +(2.044444444e-09 1e-09 0) +(2.3e-09 1e-09 0) +(2.555555556e-09 1e-09 0) +(2.811111111e-09 1e-09 0) +(3.066666667e-09 1e-09 0) +(3.322222222e-09 1e-09 0) +(3.577777778e-09 1e-09 0) +(0 1.25e-09 0) +(2.611111111e-10 1.25e-09 0) +(5.222222222e-10 1.25e-09 0) +(7.833333333e-10 1.25e-09 0) +(1.044444444e-09 1.25e-09 0) +(1.305555556e-09 1.25e-09 0) +(1.566666667e-09 1.25e-09 0) +(1.827777778e-09 1.25e-09 0) +(2.088888889e-09 1.25e-09 0) +(2.35e-09 1.25e-09 0) +(2.611111111e-09 1.25e-09 0) +(2.872222222e-09 1.25e-09 0) +(3.133333333e-09 1.25e-09 0) +(3.394444444e-09 1.25e-09 0) +(3.655555556e-09 1.25e-09 0) +(0 1.5e-09 0) +(2.666666667e-10 1.5e-09 0) +(5.333333333e-10 1.5e-09 0) +(8e-10 1.5e-09 0) +(1.066666667e-09 1.5e-09 0) +(1.333333333e-09 1.5e-09 0) +(1.6e-09 1.5e-09 0) +(1.866666667e-09 1.5e-09 0) +(2.133333333e-09 1.5e-09 0) +(2.4e-09 1.5e-09 0) +(2.666666667e-09 1.5e-09 0) +(2.933333333e-09 1.5e-09 0) +(3.2e-09 1.5e-09 0) +(3.466666667e-09 1.5e-09 0) +(3.733333333e-09 1.5e-09 0) +(0 1.75e-09 0) +(2.722222222e-10 1.75e-09 0) +(5.444444444e-10 1.75e-09 0) +(8.166666667e-10 1.75e-09 0) +(1.088888889e-09 1.75e-09 0) +(1.361111111e-09 1.75e-09 0) +(1.633333333e-09 1.75e-09 0) +(1.905555556e-09 1.75e-09 0) +(2.177777778e-09 1.75e-09 0) +(2.45e-09 1.75e-09 0) +(2.722222222e-09 1.75e-09 0) +(2.994444444e-09 1.75e-09 0) +(3.266666667e-09 1.75e-09 0) +(3.538888889e-09 1.75e-09 0) +(3.811111111e-09 1.75e-09 0) +(0 2e-09 0) +(2.777777778e-10 2e-09 0) +(5.555555556e-10 2e-09 0) +(8.333333333e-10 2e-09 0) +(1.111111111e-09 2e-09 0) +(1.388888889e-09 2e-09 0) +(1.666666667e-09 2e-09 0) +(1.944444444e-09 2e-09 0) +(2.222222222e-09 2e-09 0) +(2.5e-09 2e-09 0) +(2.777777778e-09 2e-09 0) +(3.055555556e-09 2e-09 0) +(3.333333333e-09 2e-09 0) +(3.611111111e-09 2e-09 0) +(3.888888889e-09 2e-09 0) +(0 2.25e-09 0) +(2.833333333e-10 2.25e-09 0) +(5.666666667e-10 2.25e-09 0) +(8.5e-10 2.25e-09 0) +(1.133333333e-09 2.25e-09 0) +(1.416666667e-09 2.25e-09 0) +(1.7e-09 2.25e-09 0) +(1.983333333e-09 2.25e-09 0) +(2.266666667e-09 2.25e-09 0) +(2.55e-09 2.25e-09 0) +(2.833333333e-09 2.25e-09 0) +(3.116666667e-09 2.25e-09 0) +(3.4e-09 2.25e-09 0) +(3.683333333e-09 2.25e-09 0) +(3.966666667e-09 2.25e-09 0) +(0 1e-09 5e-10) +(2.555555556e-10 1e-09 5e-10) +(5.111111111e-10 1e-09 5e-10) +(7.666666667e-10 1e-09 5e-10) +(1.022222222e-09 1e-09 5e-10) +(1.277777778e-09 1e-09 5e-10) +(1.533333333e-09 1e-09 5e-10) +(1.788888889e-09 1e-09 5e-10) +(2.044444444e-09 1e-09 5e-10) +(2.3e-09 1e-09 5e-10) +(2.555555556e-09 1e-09 5e-10) +(2.811111111e-09 1e-09 5e-10) +(3.066666667e-09 1e-09 5e-10) +(3.322222222e-09 1e-09 5e-10) +(3.577777778e-09 1e-09 5e-10) +(0 1.25e-09 5e-10) +(2.611111111e-10 1.25e-09 5e-10) +(5.222222222e-10 1.25e-09 5e-10) +(7.833333333e-10 1.25e-09 5e-10) +(1.044444444e-09 1.25e-09 5e-10) +(1.305555556e-09 1.25e-09 5e-10) +(1.566666667e-09 1.25e-09 5e-10) +(1.827777778e-09 1.25e-09 5e-10) +(2.088888889e-09 1.25e-09 5e-10) +(2.35e-09 1.25e-09 5e-10) +(2.611111111e-09 1.25e-09 5e-10) +(2.872222222e-09 1.25e-09 5e-10) +(3.133333333e-09 1.25e-09 5e-10) +(3.394444444e-09 1.25e-09 5e-10) +(3.655555556e-09 1.25e-09 5e-10) +(0 1.5e-09 5e-10) +(2.666666667e-10 1.5e-09 5e-10) +(5.333333333e-10 1.5e-09 5e-10) +(8e-10 1.5e-09 5e-10) +(1.066666667e-09 1.5e-09 5e-10) +(1.333333333e-09 1.5e-09 5e-10) +(1.6e-09 1.5e-09 5e-10) +(1.866666667e-09 1.5e-09 5e-10) +(2.133333333e-09 1.5e-09 5e-10) +(2.4e-09 1.5e-09 5e-10) +(2.666666667e-09 1.5e-09 5e-10) +(2.933333333e-09 1.5e-09 5e-10) +(3.2e-09 1.5e-09 5e-10) +(3.466666667e-09 1.5e-09 5e-10) +(3.733333333e-09 1.5e-09 5e-10) +(0 1.75e-09 5e-10) +(2.722222222e-10 1.75e-09 5e-10) +(5.444444444e-10 1.75e-09 5e-10) +(8.166666667e-10 1.75e-09 5e-10) +(1.088888889e-09 1.75e-09 5e-10) +(1.361111111e-09 1.75e-09 5e-10) +(1.633333333e-09 1.75e-09 5e-10) +(1.905555556e-09 1.75e-09 5e-10) +(2.177777778e-09 1.75e-09 5e-10) +(2.45e-09 1.75e-09 5e-10) +(2.722222222e-09 1.75e-09 5e-10) +(2.994444444e-09 1.75e-09 5e-10) +(3.266666667e-09 1.75e-09 5e-10) +(3.538888889e-09 1.75e-09 5e-10) +(3.811111111e-09 1.75e-09 5e-10) +(0 2e-09 5e-10) +(2.777777778e-10 2e-09 5e-10) +(5.555555556e-10 2e-09 5e-10) +(8.333333333e-10 2e-09 5e-10) +(1.111111111e-09 2e-09 5e-10) +(1.388888889e-09 2e-09 5e-10) +(1.666666667e-09 2e-09 5e-10) +(1.944444444e-09 2e-09 5e-10) +(2.222222222e-09 2e-09 5e-10) +(2.5e-09 2e-09 5e-10) +(2.777777778e-09 2e-09 5e-10) +(3.055555556e-09 2e-09 5e-10) +(3.333333333e-09 2e-09 5e-10) +(3.611111111e-09 2e-09 5e-10) +(3.888888889e-09 2e-09 5e-10) +(0 2.25e-09 5e-10) +(2.833333333e-10 2.25e-09 5e-10) +(5.666666667e-10 2.25e-09 5e-10) +(8.5e-10 2.25e-09 5e-10) +(1.133333333e-09 2.25e-09 5e-10) +(1.416666667e-09 2.25e-09 5e-10) +(1.7e-09 2.25e-09 5e-10) +(1.983333333e-09 2.25e-09 5e-10) +(2.266666667e-09 2.25e-09 5e-10) +(2.55e-09 2.25e-09 5e-10) +(2.833333333e-09 2.25e-09 5e-10) +(3.116666667e-09 2.25e-09 5e-10) +(3.4e-09 2.25e-09 5e-10) +(3.683333333e-09 2.25e-09 5e-10) +(3.966666667e-09 2.25e-09 5e-10) +(0 1e-09 1e-09) +(2.555555556e-10 1e-09 1e-09) +(5.111111111e-10 1e-09 1e-09) +(7.666666667e-10 1e-09 1e-09) +(1.022222222e-09 1e-09 1e-09) +(1.277777778e-09 1e-09 1e-09) +(1.533333333e-09 1e-09 1e-09) +(1.788888889e-09 1e-09 1e-09) +(2.044444444e-09 1e-09 1e-09) +(2.3e-09 1e-09 1e-09) +(2.555555556e-09 1e-09 1e-09) +(2.811111111e-09 1e-09 1e-09) +(3.066666667e-09 1e-09 1e-09) +(3.322222222e-09 1e-09 1e-09) +(3.577777778e-09 1e-09 1e-09) +(0 1.25e-09 1e-09) +(2.611111111e-10 1.25e-09 1e-09) +(5.222222222e-10 1.25e-09 1e-09) +(7.833333333e-10 1.25e-09 1e-09) +(1.044444444e-09 1.25e-09 1e-09) +(1.305555556e-09 1.25e-09 1e-09) +(1.566666667e-09 1.25e-09 1e-09) +(1.827777778e-09 1.25e-09 1e-09) +(2.088888889e-09 1.25e-09 1e-09) +(2.35e-09 1.25e-09 1e-09) +(2.611111111e-09 1.25e-09 1e-09) +(2.872222222e-09 1.25e-09 1e-09) +(3.133333333e-09 1.25e-09 1e-09) +(3.394444444e-09 1.25e-09 1e-09) +(3.655555556e-09 1.25e-09 1e-09) +(0 1.5e-09 1e-09) +(2.666666667e-10 1.5e-09 1e-09) +(5.333333333e-10 1.5e-09 1e-09) +(8e-10 1.5e-09 1e-09) +(1.066666667e-09 1.5e-09 1e-09) +(1.333333333e-09 1.5e-09 1e-09) +(1.6e-09 1.5e-09 1e-09) +(1.866666667e-09 1.5e-09 1e-09) +(2.133333333e-09 1.5e-09 1e-09) +(2.4e-09 1.5e-09 1e-09) +(2.666666667e-09 1.5e-09 1e-09) +(2.933333333e-09 1.5e-09 1e-09) +(3.2e-09 1.5e-09 1e-09) +(3.466666667e-09 1.5e-09 1e-09) +(3.733333333e-09 1.5e-09 1e-09) +(0 1.75e-09 1e-09) +(2.722222222e-10 1.75e-09 1e-09) +(5.444444444e-10 1.75e-09 1e-09) +(8.166666667e-10 1.75e-09 1e-09) +(1.088888889e-09 1.75e-09 1e-09) +(1.361111111e-09 1.75e-09 1e-09) +(1.633333333e-09 1.75e-09 1e-09) +(1.905555556e-09 1.75e-09 1e-09) +(2.177777778e-09 1.75e-09 1e-09) +(2.45e-09 1.75e-09 1e-09) +(2.722222222e-09 1.75e-09 1e-09) +(2.994444444e-09 1.75e-09 1e-09) +(3.266666667e-09 1.75e-09 1e-09) +(3.538888889e-09 1.75e-09 1e-09) +(3.811111111e-09 1.75e-09 1e-09) +(0 2e-09 1e-09) +(2.777777778e-10 2e-09 1e-09) +(5.555555556e-10 2e-09 1e-09) +(8.333333333e-10 2e-09 1e-09) +(1.111111111e-09 2e-09 1e-09) +(1.388888889e-09 2e-09 1e-09) +(1.666666667e-09 2e-09 1e-09) +(1.944444444e-09 2e-09 1e-09) +(2.222222222e-09 2e-09 1e-09) +(2.5e-09 2e-09 1e-09) +(2.777777778e-09 2e-09 1e-09) +(3.055555556e-09 2e-09 1e-09) +(3.333333333e-09 2e-09 1e-09) +(3.611111111e-09 2e-09 1e-09) +(3.888888889e-09 2e-09 1e-09) +(0 2.25e-09 1e-09) +(2.833333333e-10 2.25e-09 1e-09) +(5.666666667e-10 2.25e-09 1e-09) +(8.5e-10 2.25e-09 1e-09) +(1.133333333e-09 2.25e-09 1e-09) +(1.416666667e-09 2.25e-09 1e-09) +(1.7e-09 2.25e-09 1e-09) +(1.983333333e-09 2.25e-09 1e-09) +(2.266666667e-09 2.25e-09 1e-09) +(2.55e-09 2.25e-09 1e-09) +(2.833333333e-09 2.25e-09 1e-09) +(3.116666667e-09 2.25e-09 1e-09) +(3.4e-09 2.25e-09 1e-09) +(3.683333333e-09 2.25e-09 1e-09) +(3.966666667e-09 2.25e-09 1e-09) +(0 1e-09 1.5e-09) +(2.555555556e-10 1e-09 1.5e-09) +(5.111111111e-10 1e-09 1.5e-09) +(7.666666667e-10 1e-09 1.5e-09) +(1.022222222e-09 1e-09 1.5e-09) +(1.277777778e-09 1e-09 1.5e-09) +(1.533333333e-09 1e-09 1.5e-09) +(1.788888889e-09 1e-09 1.5e-09) +(2.044444444e-09 1e-09 1.5e-09) +(2.3e-09 1e-09 1.5e-09) +(2.555555556e-09 1e-09 1.5e-09) +(2.811111111e-09 1e-09 1.5e-09) +(3.066666667e-09 1e-09 1.5e-09) +(3.322222222e-09 1e-09 1.5e-09) +(3.577777778e-09 1e-09 1.5e-09) +(0 1.25e-09 1.5e-09) +(2.611111111e-10 1.25e-09 1.5e-09) +(5.222222222e-10 1.25e-09 1.5e-09) +(7.833333333e-10 1.25e-09 1.5e-09) +(1.044444444e-09 1.25e-09 1.5e-09) +(1.305555556e-09 1.25e-09 1.5e-09) +(1.566666667e-09 1.25e-09 1.5e-09) +(1.827777778e-09 1.25e-09 1.5e-09) +(2.088888889e-09 1.25e-09 1.5e-09) +(2.35e-09 1.25e-09 1.5e-09) +(2.611111111e-09 1.25e-09 1.5e-09) +(2.872222222e-09 1.25e-09 1.5e-09) +(3.133333333e-09 1.25e-09 1.5e-09) +(3.394444444e-09 1.25e-09 1.5e-09) +(3.655555556e-09 1.25e-09 1.5e-09) +(0 1.5e-09 1.5e-09) +(2.666666667e-10 1.5e-09 1.5e-09) +(5.333333333e-10 1.5e-09 1.5e-09) +(8e-10 1.5e-09 1.5e-09) +(1.066666667e-09 1.5e-09 1.5e-09) +(1.333333333e-09 1.5e-09 1.5e-09) +(1.6e-09 1.5e-09 1.5e-09) +(1.866666667e-09 1.5e-09 1.5e-09) +(2.133333333e-09 1.5e-09 1.5e-09) +(2.4e-09 1.5e-09 1.5e-09) +(2.666666667e-09 1.5e-09 1.5e-09) +(2.933333333e-09 1.5e-09 1.5e-09) +(3.2e-09 1.5e-09 1.5e-09) +(3.466666667e-09 1.5e-09 1.5e-09) +(3.733333333e-09 1.5e-09 1.5e-09) +(0 1.75e-09 1.5e-09) +(2.722222222e-10 1.75e-09 1.5e-09) +(5.444444444e-10 1.75e-09 1.5e-09) +(8.166666667e-10 1.75e-09 1.5e-09) +(1.088888889e-09 1.75e-09 1.5e-09) +(1.361111111e-09 1.75e-09 1.5e-09) +(1.633333333e-09 1.75e-09 1.5e-09) +(1.905555556e-09 1.75e-09 1.5e-09) +(2.177777778e-09 1.75e-09 1.5e-09) +(2.45e-09 1.75e-09 1.5e-09) +(2.722222222e-09 1.75e-09 1.5e-09) +(2.994444444e-09 1.75e-09 1.5e-09) +(3.266666667e-09 1.75e-09 1.5e-09) +(3.538888889e-09 1.75e-09 1.5e-09) +(3.811111111e-09 1.75e-09 1.5e-09) +(0 2e-09 1.5e-09) +(2.777777778e-10 2e-09 1.5e-09) +(5.555555556e-10 2e-09 1.5e-09) +(8.333333333e-10 2e-09 1.5e-09) +(1.111111111e-09 2e-09 1.5e-09) +(1.388888889e-09 2e-09 1.5e-09) +(1.666666667e-09 2e-09 1.5e-09) +(1.944444444e-09 2e-09 1.5e-09) +(2.222222222e-09 2e-09 1.5e-09) +(2.5e-09 2e-09 1.5e-09) +(2.777777778e-09 2e-09 1.5e-09) +(3.055555556e-09 2e-09 1.5e-09) +(3.333333333e-09 2e-09 1.5e-09) +(3.611111111e-09 2e-09 1.5e-09) +(3.888888889e-09 2e-09 1.5e-09) +(0 2.25e-09 1.5e-09) +(2.833333333e-10 2.25e-09 1.5e-09) +(5.666666667e-10 2.25e-09 1.5e-09) +(8.5e-10 2.25e-09 1.5e-09) +(1.133333333e-09 2.25e-09 1.5e-09) +(1.416666667e-09 2.25e-09 1.5e-09) +(1.7e-09 2.25e-09 1.5e-09) +(1.983333333e-09 2.25e-09 1.5e-09) +(2.266666667e-09 2.25e-09 1.5e-09) +(2.55e-09 2.25e-09 1.5e-09) +(2.833333333e-09 2.25e-09 1.5e-09) +(3.116666667e-09 2.25e-09 1.5e-09) +(3.4e-09 2.25e-09 1.5e-09) +(3.683333333e-09 2.25e-09 1.5e-09) +(3.966666667e-09 2.25e-09 1.5e-09) +(0 1e-09 2e-09) +(2.555555556e-10 1e-09 2e-09) +(5.111111111e-10 1e-09 2e-09) +(7.666666667e-10 1e-09 2e-09) +(1.022222222e-09 1e-09 2e-09) +(1.277777778e-09 1e-09 2e-09) +(1.533333333e-09 1e-09 2e-09) +(1.788888889e-09 1e-09 2e-09) +(2.044444444e-09 1e-09 2e-09) +(2.3e-09 1e-09 2e-09) +(2.555555556e-09 1e-09 2e-09) +(2.811111111e-09 1e-09 2e-09) +(3.066666667e-09 1e-09 2e-09) +(3.322222222e-09 1e-09 2e-09) +(3.577777778e-09 1e-09 2e-09) +(0 1.25e-09 2e-09) +(2.611111111e-10 1.25e-09 2e-09) +(5.222222222e-10 1.25e-09 2e-09) +(7.833333333e-10 1.25e-09 2e-09) +(1.044444444e-09 1.25e-09 2e-09) +(1.305555556e-09 1.25e-09 2e-09) +(1.566666667e-09 1.25e-09 2e-09) +(1.827777778e-09 1.25e-09 2e-09) +(2.088888889e-09 1.25e-09 2e-09) +(2.35e-09 1.25e-09 2e-09) +(2.611111111e-09 1.25e-09 2e-09) +(2.872222222e-09 1.25e-09 2e-09) +(3.133333333e-09 1.25e-09 2e-09) +(3.394444444e-09 1.25e-09 2e-09) +(3.655555556e-09 1.25e-09 2e-09) +(0 1.5e-09 2e-09) +(2.666666667e-10 1.5e-09 2e-09) +(5.333333333e-10 1.5e-09 2e-09) +(8e-10 1.5e-09 2e-09) +(1.066666667e-09 1.5e-09 2e-09) +(1.333333333e-09 1.5e-09 2e-09) +(1.6e-09 1.5e-09 2e-09) +(1.866666667e-09 1.5e-09 2e-09) +(2.133333333e-09 1.5e-09 2e-09) +(2.4e-09 1.5e-09 2e-09) +(2.666666667e-09 1.5e-09 2e-09) +(2.933333333e-09 1.5e-09 2e-09) +(3.2e-09 1.5e-09 2e-09) +(3.466666667e-09 1.5e-09 2e-09) +(3.733333333e-09 1.5e-09 2e-09) +(0 1.75e-09 2e-09) +(2.722222222e-10 1.75e-09 2e-09) +(5.444444444e-10 1.75e-09 2e-09) +(8.166666667e-10 1.75e-09 2e-09) +(1.088888889e-09 1.75e-09 2e-09) +(1.361111111e-09 1.75e-09 2e-09) +(1.633333333e-09 1.75e-09 2e-09) +(1.905555556e-09 1.75e-09 2e-09) +(2.177777778e-09 1.75e-09 2e-09) +(2.45e-09 1.75e-09 2e-09) +(2.722222222e-09 1.75e-09 2e-09) +(2.994444444e-09 1.75e-09 2e-09) +(3.266666667e-09 1.75e-09 2e-09) +(3.538888889e-09 1.75e-09 2e-09) +(3.811111111e-09 1.75e-09 2e-09) +(0 2e-09 2e-09) +(2.777777778e-10 2e-09 2e-09) +(5.555555556e-10 2e-09 2e-09) +(8.333333333e-10 2e-09 2e-09) +(1.111111111e-09 2e-09 2e-09) +(1.388888889e-09 2e-09 2e-09) +(1.666666667e-09 2e-09 2e-09) +(1.944444444e-09 2e-09 2e-09) +(2.222222222e-09 2e-09 2e-09) +(2.5e-09 2e-09 2e-09) +(2.777777778e-09 2e-09 2e-09) +(3.055555556e-09 2e-09 2e-09) +(3.333333333e-09 2e-09 2e-09) +(3.611111111e-09 2e-09 2e-09) +(3.888888889e-09 2e-09 2e-09) +(0 2.25e-09 2e-09) +(2.833333333e-10 2.25e-09 2e-09) +(5.666666667e-10 2.25e-09 2e-09) +(8.5e-10 2.25e-09 2e-09) +(1.133333333e-09 2.25e-09 2e-09) +(1.416666667e-09 2.25e-09 2e-09) +(1.7e-09 2.25e-09 2e-09) +(1.983333333e-09 2.25e-09 2e-09) +(2.266666667e-09 2.25e-09 2e-09) +(2.55e-09 2.25e-09 2e-09) +(2.833333333e-09 2.25e-09 2e-09) +(3.116666667e-09 2.25e-09 2e-09) +(3.4e-09 2.25e-09 2e-09) +(3.683333333e-09 2.25e-09 2e-09) +(3.966666667e-09 2.25e-09 2e-09) +(0 1e-09 2.5e-09) +(2.555555556e-10 1e-09 2.5e-09) +(5.111111111e-10 1e-09 2.5e-09) +(7.666666667e-10 1e-09 2.5e-09) +(1.022222222e-09 1e-09 2.5e-09) +(1.277777778e-09 1e-09 2.5e-09) +(1.533333333e-09 1e-09 2.5e-09) +(1.788888889e-09 1e-09 2.5e-09) +(2.044444444e-09 1e-09 2.5e-09) +(2.3e-09 1e-09 2.5e-09) +(2.555555556e-09 1e-09 2.5e-09) +(2.811111111e-09 1e-09 2.5e-09) +(3.066666667e-09 1e-09 2.5e-09) +(3.322222222e-09 1e-09 2.5e-09) +(3.577777778e-09 1e-09 2.5e-09) +(0 1.25e-09 2.5e-09) +(2.611111111e-10 1.25e-09 2.5e-09) +(5.222222222e-10 1.25e-09 2.5e-09) +(7.833333333e-10 1.25e-09 2.5e-09) +(1.044444444e-09 1.25e-09 2.5e-09) +(1.305555556e-09 1.25e-09 2.5e-09) +(1.566666667e-09 1.25e-09 2.5e-09) +(1.827777778e-09 1.25e-09 2.5e-09) +(2.088888889e-09 1.25e-09 2.5e-09) +(2.35e-09 1.25e-09 2.5e-09) +(2.611111111e-09 1.25e-09 2.5e-09) +(2.872222222e-09 1.25e-09 2.5e-09) +(3.133333333e-09 1.25e-09 2.5e-09) +(3.394444444e-09 1.25e-09 2.5e-09) +(3.655555556e-09 1.25e-09 2.5e-09) +(0 1.5e-09 2.5e-09) +(2.666666667e-10 1.5e-09 2.5e-09) +(5.333333333e-10 1.5e-09 2.5e-09) +(8e-10 1.5e-09 2.5e-09) +(1.066666667e-09 1.5e-09 2.5e-09) +(1.333333333e-09 1.5e-09 2.5e-09) +(1.6e-09 1.5e-09 2.5e-09) +(1.866666667e-09 1.5e-09 2.5e-09) +(2.133333333e-09 1.5e-09 2.5e-09) +(2.4e-09 1.5e-09 2.5e-09) +(2.666666667e-09 1.5e-09 2.5e-09) +(2.933333333e-09 1.5e-09 2.5e-09) +(3.2e-09 1.5e-09 2.5e-09) +(3.466666667e-09 1.5e-09 2.5e-09) +(3.733333333e-09 1.5e-09 2.5e-09) +(0 1.75e-09 2.5e-09) +(2.722222222e-10 1.75e-09 2.5e-09) +(5.444444444e-10 1.75e-09 2.5e-09) +(8.166666667e-10 1.75e-09 2.5e-09) +(1.088888889e-09 1.75e-09 2.5e-09) +(1.361111111e-09 1.75e-09 2.5e-09) +(1.633333333e-09 1.75e-09 2.5e-09) +(1.905555556e-09 1.75e-09 2.5e-09) +(2.177777778e-09 1.75e-09 2.5e-09) +(2.45e-09 1.75e-09 2.5e-09) +(2.722222222e-09 1.75e-09 2.5e-09) +(2.994444444e-09 1.75e-09 2.5e-09) +(3.266666667e-09 1.75e-09 2.5e-09) +(3.538888889e-09 1.75e-09 2.5e-09) +(3.811111111e-09 1.75e-09 2.5e-09) +(0 2e-09 2.5e-09) +(2.777777778e-10 2e-09 2.5e-09) +(5.555555556e-10 2e-09 2.5e-09) +(8.333333333e-10 2e-09 2.5e-09) +(1.111111111e-09 2e-09 2.5e-09) +(1.388888889e-09 2e-09 2.5e-09) +(1.666666667e-09 2e-09 2.5e-09) +(1.944444444e-09 2e-09 2.5e-09) +(2.222222222e-09 2e-09 2.5e-09) +(2.5e-09 2e-09 2.5e-09) +(2.777777778e-09 2e-09 2.5e-09) +(3.055555556e-09 2e-09 2.5e-09) +(3.333333333e-09 2e-09 2.5e-09) +(3.611111111e-09 2e-09 2.5e-09) +(3.888888889e-09 2e-09 2.5e-09) +(0 2.25e-09 2.5e-09) +(2.833333333e-10 2.25e-09 2.5e-09) +(5.666666667e-10 2.25e-09 2.5e-09) +(8.5e-10 2.25e-09 2.5e-09) +(1.133333333e-09 2.25e-09 2.5e-09) +(1.416666667e-09 2.25e-09 2.5e-09) +(1.7e-09 2.25e-09 2.5e-09) +(1.983333333e-09 2.25e-09 2.5e-09) +(2.266666667e-09 2.25e-09 2.5e-09) +(2.55e-09 2.25e-09 2.5e-09) +(2.833333333e-09 2.25e-09 2.5e-09) +(3.116666667e-09 2.25e-09 2.5e-09) +(3.4e-09 2.25e-09 2.5e-09) +(3.683333333e-09 2.25e-09 2.5e-09) +(3.966666667e-09 2.25e-09 2.5e-09) +(0 1e-09 3e-09) +(2.555555556e-10 1e-09 3e-09) +(5.111111111e-10 1e-09 3e-09) +(7.666666667e-10 1e-09 3e-09) +(1.022222222e-09 1e-09 3e-09) +(1.277777778e-09 1e-09 3e-09) +(1.533333333e-09 1e-09 3e-09) +(1.788888889e-09 1e-09 3e-09) +(2.044444444e-09 1e-09 3e-09) +(2.3e-09 1e-09 3e-09) +(2.555555556e-09 1e-09 3e-09) +(2.811111111e-09 1e-09 3e-09) +(3.066666667e-09 1e-09 3e-09) +(3.322222222e-09 1e-09 3e-09) +(3.577777778e-09 1e-09 3e-09) +(0 1.25e-09 3e-09) +(2.611111111e-10 1.25e-09 3e-09) +(5.222222222e-10 1.25e-09 3e-09) +(7.833333333e-10 1.25e-09 3e-09) +(1.044444444e-09 1.25e-09 3e-09) +(1.305555556e-09 1.25e-09 3e-09) +(1.566666667e-09 1.25e-09 3e-09) +(1.827777778e-09 1.25e-09 3e-09) +(2.088888889e-09 1.25e-09 3e-09) +(2.35e-09 1.25e-09 3e-09) +(2.611111111e-09 1.25e-09 3e-09) +(2.872222222e-09 1.25e-09 3e-09) +(3.133333333e-09 1.25e-09 3e-09) +(3.394444444e-09 1.25e-09 3e-09) +(3.655555556e-09 1.25e-09 3e-09) +(0 1.5e-09 3e-09) +(2.666666667e-10 1.5e-09 3e-09) +(5.333333333e-10 1.5e-09 3e-09) +(8e-10 1.5e-09 3e-09) +(1.066666667e-09 1.5e-09 3e-09) +(1.333333333e-09 1.5e-09 3e-09) +(1.6e-09 1.5e-09 3e-09) +(1.866666667e-09 1.5e-09 3e-09) +(2.133333333e-09 1.5e-09 3e-09) +(2.4e-09 1.5e-09 3e-09) +(2.666666667e-09 1.5e-09 3e-09) +(2.933333333e-09 1.5e-09 3e-09) +(3.2e-09 1.5e-09 3e-09) +(3.466666667e-09 1.5e-09 3e-09) +(3.733333333e-09 1.5e-09 3e-09) +(0 1.75e-09 3e-09) +(2.722222222e-10 1.75e-09 3e-09) +(5.444444444e-10 1.75e-09 3e-09) +(8.166666667e-10 1.75e-09 3e-09) +(1.088888889e-09 1.75e-09 3e-09) +(1.361111111e-09 1.75e-09 3e-09) +(1.633333333e-09 1.75e-09 3e-09) +(1.905555556e-09 1.75e-09 3e-09) +(2.177777778e-09 1.75e-09 3e-09) +(2.45e-09 1.75e-09 3e-09) +(2.722222222e-09 1.75e-09 3e-09) +(2.994444444e-09 1.75e-09 3e-09) +(3.266666667e-09 1.75e-09 3e-09) +(3.538888889e-09 1.75e-09 3e-09) +(3.811111111e-09 1.75e-09 3e-09) +(0 2e-09 3e-09) +(2.777777778e-10 2e-09 3e-09) +(5.555555556e-10 2e-09 3e-09) +(8.333333333e-10 2e-09 3e-09) +(1.111111111e-09 2e-09 3e-09) +(1.388888889e-09 2e-09 3e-09) +(1.666666667e-09 2e-09 3e-09) +(1.944444444e-09 2e-09 3e-09) +(2.222222222e-09 2e-09 3e-09) +(2.5e-09 2e-09 3e-09) +(2.777777778e-09 2e-09 3e-09) +(3.055555556e-09 2e-09 3e-09) +(3.333333333e-09 2e-09 3e-09) +(3.611111111e-09 2e-09 3e-09) +(3.888888889e-09 2e-09 3e-09) +(0 2.25e-09 3e-09) +(2.833333333e-10 2.25e-09 3e-09) +(5.666666667e-10 2.25e-09 3e-09) +(8.5e-10 2.25e-09 3e-09) +(1.133333333e-09 2.25e-09 3e-09) +(1.416666667e-09 2.25e-09 3e-09) +(1.7e-09 2.25e-09 3e-09) +(1.983333333e-09 2.25e-09 3e-09) +(2.266666667e-09 2.25e-09 3e-09) +(2.55e-09 2.25e-09 3e-09) +(2.833333333e-09 2.25e-09 3e-09) +(3.116666667e-09 2.25e-09 3e-09) +(3.4e-09 2.25e-09 3e-09) +(3.683333333e-09 2.25e-09 3e-09) +(3.966666667e-09 2.25e-09 3e-09) +(0 2.5e-09 0) +(2.833333333e-10 2.5e-09 0) +(5.666666667e-10 2.5e-09 0) +(8.5e-10 2.5e-09 0) +(1.133333333e-09 2.5e-09 0) +(1.416666667e-09 2.5e-09 0) +(1.7e-09 2.5e-09 0) +(1.983333333e-09 2.5e-09 0) +(2.266666667e-09 2.5e-09 0) +(2.55e-09 2.5e-09 0) +(2.833333333e-09 2.5e-09 0) +(3.116666667e-09 2.5e-09 0) +(3.4e-09 2.5e-09 0) +(3.683333333e-09 2.5e-09 0) +(3.966666667e-09 2.5e-09 0) +(4.25e-09 2.5e-09 0) +(0 2.75e-09 0) +(2.833333333e-10 2.75e-09 0) +(5.666666667e-10 2.75e-09 0) +(8.5e-10 2.75e-09 0) +(1.133333333e-09 2.75e-09 0) +(1.416666667e-09 2.75e-09 0) +(1.7e-09 2.75e-09 0) +(1.983333333e-09 2.75e-09 0) +(2.266666667e-09 2.75e-09 0) +(2.55e-09 2.75e-09 0) +(2.833333333e-09 2.75e-09 0) +(3.116666667e-09 2.75e-09 0) +(3.4e-09 2.75e-09 0) +(3.683333333e-09 2.75e-09 0) +(3.966666667e-09 2.75e-09 0) +(4.25e-09 2.75e-09 0) +(0 3e-09 0) +(2.833333333e-10 3e-09 0) +(5.666666667e-10 3e-09 0) +(8.5e-10 3e-09 0) +(1.133333333e-09 3e-09 0) +(1.416666667e-09 3e-09 0) +(1.7e-09 3e-09 0) +(1.983333333e-09 3e-09 0) +(2.266666667e-09 3e-09 0) +(2.55e-09 3e-09 0) +(2.833333333e-09 3e-09 0) +(3.116666667e-09 3e-09 0) +(3.4e-09 3e-09 0) +(3.683333333e-09 3e-09 0) +(3.966666667e-09 3e-09 0) +(4.25e-09 3e-09 0) +(0 3.25e-09 0) +(2.833333333e-10 3.25e-09 0) +(5.666666667e-10 3.25e-09 0) +(8.5e-10 3.25e-09 0) +(1.133333333e-09 3.25e-09 0) +(1.416666667e-09 3.25e-09 0) +(1.7e-09 3.25e-09 0) +(1.983333333e-09 3.25e-09 0) +(2.266666667e-09 3.25e-09 0) +(2.55e-09 3.25e-09 0) +(2.833333333e-09 3.25e-09 0) +(3.116666667e-09 3.25e-09 0) +(3.4e-09 3.25e-09 0) +(3.683333333e-09 3.25e-09 0) +(3.966666667e-09 3.25e-09 0) +(4.25e-09 3.25e-09 0) +(0 3.5e-09 0) +(2.833333333e-10 3.5e-09 0) +(5.666666667e-10 3.5e-09 0) +(8.5e-10 3.5e-09 0) +(1.133333333e-09 3.5e-09 0) +(1.416666667e-09 3.5e-09 0) +(1.7e-09 3.5e-09 0) +(1.983333333e-09 3.5e-09 0) +(2.266666667e-09 3.5e-09 0) +(2.55e-09 3.5e-09 0) +(2.833333333e-09 3.5e-09 0) +(3.116666667e-09 3.5e-09 0) +(3.4e-09 3.5e-09 0) +(3.683333333e-09 3.5e-09 0) +(3.966666667e-09 3.5e-09 0) +(4.25e-09 3.5e-09 0) +(0 3.75e-09 0) +(2.833333333e-10 3.75e-09 0) +(5.666666667e-10 3.75e-09 0) +(8.5e-10 3.75e-09 0) +(1.133333333e-09 3.75e-09 0) +(1.416666667e-09 3.75e-09 0) +(1.7e-09 3.75e-09 0) +(1.983333333e-09 3.75e-09 0) +(2.266666667e-09 3.75e-09 0) +(2.55e-09 3.75e-09 0) +(2.833333333e-09 3.75e-09 0) +(3.116666667e-09 3.75e-09 0) +(3.4e-09 3.75e-09 0) +(3.683333333e-09 3.75e-09 0) +(3.966666667e-09 3.75e-09 0) +(4.25e-09 3.75e-09 0) +(0 4e-09 0) +(2.833333333e-10 4e-09 0) +(5.666666667e-10 4e-09 0) +(8.5e-10 4e-09 0) +(1.133333333e-09 4e-09 0) +(1.416666667e-09 4e-09 0) +(1.7e-09 4e-09 0) +(1.983333333e-09 4e-09 0) +(2.266666667e-09 4e-09 0) +(2.55e-09 4e-09 0) +(2.833333333e-09 4e-09 0) +(3.116666667e-09 4e-09 0) +(3.4e-09 4e-09 0) +(3.683333333e-09 4e-09 0) +(3.966666667e-09 4e-09 0) +(4.25e-09 4e-09 0) +(0 4.25e-09 0) +(2.833333333e-10 4.25e-09 0) +(5.666666667e-10 4.25e-09 0) +(8.5e-10 4.25e-09 0) +(1.133333333e-09 4.25e-09 0) +(1.416666667e-09 4.25e-09 0) +(1.7e-09 4.25e-09 0) +(1.983333333e-09 4.25e-09 0) +(2.266666667e-09 4.25e-09 0) +(2.55e-09 4.25e-09 0) +(2.833333333e-09 4.25e-09 0) +(3.116666667e-09 4.25e-09 0) +(3.4e-09 4.25e-09 0) +(3.683333333e-09 4.25e-09 0) +(3.966666667e-09 4.25e-09 0) +(4.25e-09 4.25e-09 0) +(0 4.5e-09 0) +(2.833333333e-10 4.5e-09 0) +(5.666666667e-10 4.5e-09 0) +(8.5e-10 4.5e-09 0) +(1.133333333e-09 4.5e-09 0) +(1.416666667e-09 4.5e-09 0) +(1.7e-09 4.5e-09 0) +(1.983333333e-09 4.5e-09 0) +(2.266666667e-09 4.5e-09 0) +(2.55e-09 4.5e-09 0) +(2.833333333e-09 4.5e-09 0) +(3.116666667e-09 4.5e-09 0) +(3.4e-09 4.5e-09 0) +(3.683333333e-09 4.5e-09 0) +(3.966666667e-09 4.5e-09 0) +(4.25e-09 4.5e-09 0) +(0 2.5e-09 5e-10) +(2.833333333e-10 2.5e-09 5e-10) +(5.666666667e-10 2.5e-09 5e-10) +(8.5e-10 2.5e-09 5e-10) +(1.133333333e-09 2.5e-09 5e-10) +(1.416666667e-09 2.5e-09 5e-10) +(1.7e-09 2.5e-09 5e-10) +(1.983333333e-09 2.5e-09 5e-10) +(2.266666667e-09 2.5e-09 5e-10) +(2.55e-09 2.5e-09 5e-10) +(2.833333333e-09 2.5e-09 5e-10) +(3.116666667e-09 2.5e-09 5e-10) +(3.4e-09 2.5e-09 5e-10) +(3.683333333e-09 2.5e-09 5e-10) +(3.966666667e-09 2.5e-09 5e-10) +(4.25e-09 2.5e-09 5e-10) +(0 2.75e-09 5e-10) +(2.833333333e-10 2.75e-09 5e-10) +(5.666666667e-10 2.75e-09 5e-10) +(8.5e-10 2.75e-09 5e-10) +(1.133333333e-09 2.75e-09 5e-10) +(1.416666667e-09 2.75e-09 5e-10) +(1.7e-09 2.75e-09 5e-10) +(1.983333333e-09 2.75e-09 5e-10) +(2.266666667e-09 2.75e-09 5e-10) +(2.55e-09 2.75e-09 5e-10) +(2.833333333e-09 2.75e-09 5e-10) +(3.116666667e-09 2.75e-09 5e-10) +(3.4e-09 2.75e-09 5e-10) +(3.683333333e-09 2.75e-09 5e-10) +(3.966666667e-09 2.75e-09 5e-10) +(4.25e-09 2.75e-09 5e-10) +(0 3e-09 5e-10) +(2.833333333e-10 3e-09 5e-10) +(5.666666667e-10 3e-09 5e-10) +(8.5e-10 3e-09 5e-10) +(1.133333333e-09 3e-09 5e-10) +(1.416666667e-09 3e-09 5e-10) +(1.7e-09 3e-09 5e-10) +(1.983333333e-09 3e-09 5e-10) +(2.266666667e-09 3e-09 5e-10) +(2.55e-09 3e-09 5e-10) +(2.833333333e-09 3e-09 5e-10) +(3.116666667e-09 3e-09 5e-10) +(3.4e-09 3e-09 5e-10) +(3.683333333e-09 3e-09 5e-10) +(3.966666667e-09 3e-09 5e-10) +(4.25e-09 3e-09 5e-10) +(0 3.25e-09 5e-10) +(2.833333333e-10 3.25e-09 5e-10) +(5.666666667e-10 3.25e-09 5e-10) +(8.5e-10 3.25e-09 5e-10) +(1.133333333e-09 3.25e-09 5e-10) +(1.416666667e-09 3.25e-09 5e-10) +(1.7e-09 3.25e-09 5e-10) +(1.983333333e-09 3.25e-09 5e-10) +(2.266666667e-09 3.25e-09 5e-10) +(2.55e-09 3.25e-09 5e-10) +(2.833333333e-09 3.25e-09 5e-10) +(3.116666667e-09 3.25e-09 5e-10) +(3.4e-09 3.25e-09 5e-10) +(3.683333333e-09 3.25e-09 5e-10) +(3.966666667e-09 3.25e-09 5e-10) +(4.25e-09 3.25e-09 5e-10) +(0 3.5e-09 5e-10) +(2.833333333e-10 3.5e-09 5e-10) +(5.666666667e-10 3.5e-09 5e-10) +(8.5e-10 3.5e-09 5e-10) +(1.133333333e-09 3.5e-09 5e-10) +(1.416666667e-09 3.5e-09 5e-10) +(1.7e-09 3.5e-09 5e-10) +(1.983333333e-09 3.5e-09 5e-10) +(2.266666667e-09 3.5e-09 5e-10) +(2.55e-09 3.5e-09 5e-10) +(2.833333333e-09 3.5e-09 5e-10) +(3.116666667e-09 3.5e-09 5e-10) +(3.4e-09 3.5e-09 5e-10) +(3.683333333e-09 3.5e-09 5e-10) +(3.966666667e-09 3.5e-09 5e-10) +(4.25e-09 3.5e-09 5e-10) +(0 3.75e-09 5e-10) +(2.833333333e-10 3.75e-09 5e-10) +(5.666666667e-10 3.75e-09 5e-10) +(8.5e-10 3.75e-09 5e-10) +(1.133333333e-09 3.75e-09 5e-10) +(1.416666667e-09 3.75e-09 5e-10) +(1.7e-09 3.75e-09 5e-10) +(1.983333333e-09 3.75e-09 5e-10) +(2.266666667e-09 3.75e-09 5e-10) +(2.55e-09 3.75e-09 5e-10) +(2.833333333e-09 3.75e-09 5e-10) +(3.116666667e-09 3.75e-09 5e-10) +(3.4e-09 3.75e-09 5e-10) +(3.683333333e-09 3.75e-09 5e-10) +(3.966666667e-09 3.75e-09 5e-10) +(4.25e-09 3.75e-09 5e-10) +(0 4e-09 5e-10) +(2.833333333e-10 4e-09 5e-10) +(5.666666667e-10 4e-09 5e-10) +(8.5e-10 4e-09 5e-10) +(1.133333333e-09 4e-09 5e-10) +(1.416666667e-09 4e-09 5e-10) +(1.7e-09 4e-09 5e-10) +(1.983333333e-09 4e-09 5e-10) +(2.266666667e-09 4e-09 5e-10) +(2.55e-09 4e-09 5e-10) +(2.833333333e-09 4e-09 5e-10) +(3.116666667e-09 4e-09 5e-10) +(3.4e-09 4e-09 5e-10) +(3.683333333e-09 4e-09 5e-10) +(3.966666667e-09 4e-09 5e-10) +(4.25e-09 4e-09 5e-10) +(0 4.25e-09 5e-10) +(2.833333333e-10 4.25e-09 5e-10) +(5.666666667e-10 4.25e-09 5e-10) +(8.5e-10 4.25e-09 5e-10) +(1.133333333e-09 4.25e-09 5e-10) +(1.416666667e-09 4.25e-09 5e-10) +(1.7e-09 4.25e-09 5e-10) +(1.983333333e-09 4.25e-09 5e-10) +(2.266666667e-09 4.25e-09 5e-10) +(2.55e-09 4.25e-09 5e-10) +(2.833333333e-09 4.25e-09 5e-10) +(3.116666667e-09 4.25e-09 5e-10) +(3.4e-09 4.25e-09 5e-10) +(3.683333333e-09 4.25e-09 5e-10) +(3.966666667e-09 4.25e-09 5e-10) +(4.25e-09 4.25e-09 5e-10) +(0 4.5e-09 5e-10) +(2.833333333e-10 4.5e-09 5e-10) +(5.666666667e-10 4.5e-09 5e-10) +(8.5e-10 4.5e-09 5e-10) +(1.133333333e-09 4.5e-09 5e-10) +(1.416666667e-09 4.5e-09 5e-10) +(1.7e-09 4.5e-09 5e-10) +(1.983333333e-09 4.5e-09 5e-10) +(2.266666667e-09 4.5e-09 5e-10) +(2.55e-09 4.5e-09 5e-10) +(2.833333333e-09 4.5e-09 5e-10) +(3.116666667e-09 4.5e-09 5e-10) +(3.4e-09 4.5e-09 5e-10) +(3.683333333e-09 4.5e-09 5e-10) +(3.966666667e-09 4.5e-09 5e-10) +(4.25e-09 4.5e-09 5e-10) +(0 2.5e-09 1e-09) +(2.833333333e-10 2.5e-09 1e-09) +(5.666666667e-10 2.5e-09 1e-09) +(8.5e-10 2.5e-09 1e-09) +(1.133333333e-09 2.5e-09 1e-09) +(1.416666667e-09 2.5e-09 1e-09) +(1.7e-09 2.5e-09 1e-09) +(1.983333333e-09 2.5e-09 1e-09) +(2.266666667e-09 2.5e-09 1e-09) +(2.55e-09 2.5e-09 1e-09) +(2.833333333e-09 2.5e-09 1e-09) +(3.116666667e-09 2.5e-09 1e-09) +(3.4e-09 2.5e-09 1e-09) +(3.683333333e-09 2.5e-09 1e-09) +(3.966666667e-09 2.5e-09 1e-09) +(4.25e-09 2.5e-09 1e-09) +(0 2.75e-09 1e-09) +(2.833333333e-10 2.75e-09 1e-09) +(5.666666667e-10 2.75e-09 1e-09) +(8.5e-10 2.75e-09 1e-09) +(1.133333333e-09 2.75e-09 1e-09) +(1.416666667e-09 2.75e-09 1e-09) +(1.7e-09 2.75e-09 1e-09) +(1.983333333e-09 2.75e-09 1e-09) +(2.266666667e-09 2.75e-09 1e-09) +(2.55e-09 2.75e-09 1e-09) +(2.833333333e-09 2.75e-09 1e-09) +(3.116666667e-09 2.75e-09 1e-09) +(3.4e-09 2.75e-09 1e-09) +(3.683333333e-09 2.75e-09 1e-09) +(3.966666667e-09 2.75e-09 1e-09) +(4.25e-09 2.75e-09 1e-09) +(0 3e-09 1e-09) +(2.833333333e-10 3e-09 1e-09) +(5.666666667e-10 3e-09 1e-09) +(8.5e-10 3e-09 1e-09) +(1.133333333e-09 3e-09 1e-09) +(1.416666667e-09 3e-09 1e-09) +(1.7e-09 3e-09 1e-09) +(1.983333333e-09 3e-09 1e-09) +(2.266666667e-09 3e-09 1e-09) +(2.55e-09 3e-09 1e-09) +(2.833333333e-09 3e-09 1e-09) +(3.116666667e-09 3e-09 1e-09) +(3.4e-09 3e-09 1e-09) +(3.683333333e-09 3e-09 1e-09) +(3.966666667e-09 3e-09 1e-09) +(4.25e-09 3e-09 1e-09) +(0 3.25e-09 1e-09) +(2.833333333e-10 3.25e-09 1e-09) +(5.666666667e-10 3.25e-09 1e-09) +(8.5e-10 3.25e-09 1e-09) +(1.133333333e-09 3.25e-09 1e-09) +(1.416666667e-09 3.25e-09 1e-09) +(1.7e-09 3.25e-09 1e-09) +(1.983333333e-09 3.25e-09 1e-09) +(2.266666667e-09 3.25e-09 1e-09) +(2.55e-09 3.25e-09 1e-09) +(2.833333333e-09 3.25e-09 1e-09) +(3.116666667e-09 3.25e-09 1e-09) +(3.4e-09 3.25e-09 1e-09) +(3.683333333e-09 3.25e-09 1e-09) +(3.966666667e-09 3.25e-09 1e-09) +(4.25e-09 3.25e-09 1e-09) +(0 3.5e-09 1e-09) +(2.833333333e-10 3.5e-09 1e-09) +(5.666666667e-10 3.5e-09 1e-09) +(8.5e-10 3.5e-09 1e-09) +(1.133333333e-09 3.5e-09 1e-09) +(1.416666667e-09 3.5e-09 1e-09) +(1.7e-09 3.5e-09 1e-09) +(1.983333333e-09 3.5e-09 1e-09) +(2.266666667e-09 3.5e-09 1e-09) +(2.55e-09 3.5e-09 1e-09) +(2.833333333e-09 3.5e-09 1e-09) +(3.116666667e-09 3.5e-09 1e-09) +(3.4e-09 3.5e-09 1e-09) +(3.683333333e-09 3.5e-09 1e-09) +(3.966666667e-09 3.5e-09 1e-09) +(4.25e-09 3.5e-09 1e-09) +(0 3.75e-09 1e-09) +(2.833333333e-10 3.75e-09 1e-09) +(5.666666667e-10 3.75e-09 1e-09) +(8.5e-10 3.75e-09 1e-09) +(1.133333333e-09 3.75e-09 1e-09) +(1.416666667e-09 3.75e-09 1e-09) +(1.7e-09 3.75e-09 1e-09) +(1.983333333e-09 3.75e-09 1e-09) +(2.266666667e-09 3.75e-09 1e-09) +(2.55e-09 3.75e-09 1e-09) +(2.833333333e-09 3.75e-09 1e-09) +(3.116666667e-09 3.75e-09 1e-09) +(3.4e-09 3.75e-09 1e-09) +(3.683333333e-09 3.75e-09 1e-09) +(3.966666667e-09 3.75e-09 1e-09) +(4.25e-09 3.75e-09 1e-09) +(0 4e-09 1e-09) +(2.833333333e-10 4e-09 1e-09) +(5.666666667e-10 4e-09 1e-09) +(8.5e-10 4e-09 1e-09) +(1.133333333e-09 4e-09 1e-09) +(1.416666667e-09 4e-09 1e-09) +(1.7e-09 4e-09 1e-09) +(1.983333333e-09 4e-09 1e-09) +(2.266666667e-09 4e-09 1e-09) +(2.55e-09 4e-09 1e-09) +(2.833333333e-09 4e-09 1e-09) +(3.116666667e-09 4e-09 1e-09) +(3.4e-09 4e-09 1e-09) +(3.683333333e-09 4e-09 1e-09) +(3.966666667e-09 4e-09 1e-09) +(4.25e-09 4e-09 1e-09) +(0 4.25e-09 1e-09) +(2.833333333e-10 4.25e-09 1e-09) +(5.666666667e-10 4.25e-09 1e-09) +(8.5e-10 4.25e-09 1e-09) +(1.133333333e-09 4.25e-09 1e-09) +(1.416666667e-09 4.25e-09 1e-09) +(1.7e-09 4.25e-09 1e-09) +(1.983333333e-09 4.25e-09 1e-09) +(2.266666667e-09 4.25e-09 1e-09) +(2.55e-09 4.25e-09 1e-09) +(2.833333333e-09 4.25e-09 1e-09) +(3.116666667e-09 4.25e-09 1e-09) +(3.4e-09 4.25e-09 1e-09) +(3.683333333e-09 4.25e-09 1e-09) +(3.966666667e-09 4.25e-09 1e-09) +(4.25e-09 4.25e-09 1e-09) +(0 4.5e-09 1e-09) +(2.833333333e-10 4.5e-09 1e-09) +(5.666666667e-10 4.5e-09 1e-09) +(8.5e-10 4.5e-09 1e-09) +(1.133333333e-09 4.5e-09 1e-09) +(1.416666667e-09 4.5e-09 1e-09) +(1.7e-09 4.5e-09 1e-09) +(1.983333333e-09 4.5e-09 1e-09) +(2.266666667e-09 4.5e-09 1e-09) +(2.55e-09 4.5e-09 1e-09) +(2.833333333e-09 4.5e-09 1e-09) +(3.116666667e-09 4.5e-09 1e-09) +(3.4e-09 4.5e-09 1e-09) +(3.683333333e-09 4.5e-09 1e-09) +(3.966666667e-09 4.5e-09 1e-09) +(4.25e-09 4.5e-09 1e-09) +(0 2.5e-09 1.5e-09) +(2.833333333e-10 2.5e-09 1.5e-09) +(5.666666667e-10 2.5e-09 1.5e-09) +(8.5e-10 2.5e-09 1.5e-09) +(1.133333333e-09 2.5e-09 1.5e-09) +(1.416666667e-09 2.5e-09 1.5e-09) +(1.7e-09 2.5e-09 1.5e-09) +(1.983333333e-09 2.5e-09 1.5e-09) +(2.266666667e-09 2.5e-09 1.5e-09) +(2.55e-09 2.5e-09 1.5e-09) +(2.833333333e-09 2.5e-09 1.5e-09) +(3.116666667e-09 2.5e-09 1.5e-09) +(3.4e-09 2.5e-09 1.5e-09) +(3.683333333e-09 2.5e-09 1.5e-09) +(3.966666667e-09 2.5e-09 1.5e-09) +(4.25e-09 2.5e-09 1.5e-09) +(0 2.75e-09 1.5e-09) +(2.833333333e-10 2.75e-09 1.5e-09) +(5.666666667e-10 2.75e-09 1.5e-09) +(8.5e-10 2.75e-09 1.5e-09) +(1.133333333e-09 2.75e-09 1.5e-09) +(1.416666667e-09 2.75e-09 1.5e-09) +(1.7e-09 2.75e-09 1.5e-09) +(1.983333333e-09 2.75e-09 1.5e-09) +(2.266666667e-09 2.75e-09 1.5e-09) +(2.55e-09 2.75e-09 1.5e-09) +(2.833333333e-09 2.75e-09 1.5e-09) +(3.116666667e-09 2.75e-09 1.5e-09) +(3.4e-09 2.75e-09 1.5e-09) +(3.683333333e-09 2.75e-09 1.5e-09) +(3.966666667e-09 2.75e-09 1.5e-09) +(4.25e-09 2.75e-09 1.5e-09) +(0 3e-09 1.5e-09) +(2.833333333e-10 3e-09 1.5e-09) +(5.666666667e-10 3e-09 1.5e-09) +(8.5e-10 3e-09 1.5e-09) +(1.133333333e-09 3e-09 1.5e-09) +(1.416666667e-09 3e-09 1.5e-09) +(1.7e-09 3e-09 1.5e-09) +(1.983333333e-09 3e-09 1.5e-09) +(2.266666667e-09 3e-09 1.5e-09) +(2.55e-09 3e-09 1.5e-09) +(2.833333333e-09 3e-09 1.5e-09) +(3.116666667e-09 3e-09 1.5e-09) +(3.4e-09 3e-09 1.5e-09) +(3.683333333e-09 3e-09 1.5e-09) +(3.966666667e-09 3e-09 1.5e-09) +(4.25e-09 3e-09 1.5e-09) +(0 3.25e-09 1.5e-09) +(2.833333333e-10 3.25e-09 1.5e-09) +(5.666666667e-10 3.25e-09 1.5e-09) +(8.5e-10 3.25e-09 1.5e-09) +(1.133333333e-09 3.25e-09 1.5e-09) +(1.416666667e-09 3.25e-09 1.5e-09) +(1.7e-09 3.25e-09 1.5e-09) +(1.983333333e-09 3.25e-09 1.5e-09) +(2.266666667e-09 3.25e-09 1.5e-09) +(2.55e-09 3.25e-09 1.5e-09) +(2.833333333e-09 3.25e-09 1.5e-09) +(3.116666667e-09 3.25e-09 1.5e-09) +(3.4e-09 3.25e-09 1.5e-09) +(3.683333333e-09 3.25e-09 1.5e-09) +(3.966666667e-09 3.25e-09 1.5e-09) +(4.25e-09 3.25e-09 1.5e-09) +(0 3.5e-09 1.5e-09) +(2.833333333e-10 3.5e-09 1.5e-09) +(5.666666667e-10 3.5e-09 1.5e-09) +(8.5e-10 3.5e-09 1.5e-09) +(1.133333333e-09 3.5e-09 1.5e-09) +(1.416666667e-09 3.5e-09 1.5e-09) +(1.7e-09 3.5e-09 1.5e-09) +(1.983333333e-09 3.5e-09 1.5e-09) +(2.266666667e-09 3.5e-09 1.5e-09) +(2.55e-09 3.5e-09 1.5e-09) +(2.833333333e-09 3.5e-09 1.5e-09) +(3.116666667e-09 3.5e-09 1.5e-09) +(3.4e-09 3.5e-09 1.5e-09) +(3.683333333e-09 3.5e-09 1.5e-09) +(3.966666667e-09 3.5e-09 1.5e-09) +(4.25e-09 3.5e-09 1.5e-09) +(0 3.75e-09 1.5e-09) +(2.833333333e-10 3.75e-09 1.5e-09) +(5.666666667e-10 3.75e-09 1.5e-09) +(8.5e-10 3.75e-09 1.5e-09) +(1.133333333e-09 3.75e-09 1.5e-09) +(1.416666667e-09 3.75e-09 1.5e-09) +(1.7e-09 3.75e-09 1.5e-09) +(1.983333333e-09 3.75e-09 1.5e-09) +(2.266666667e-09 3.75e-09 1.5e-09) +(2.55e-09 3.75e-09 1.5e-09) +(2.833333333e-09 3.75e-09 1.5e-09) +(3.116666667e-09 3.75e-09 1.5e-09) +(3.4e-09 3.75e-09 1.5e-09) +(3.683333333e-09 3.75e-09 1.5e-09) +(3.966666667e-09 3.75e-09 1.5e-09) +(4.25e-09 3.75e-09 1.5e-09) +(0 4e-09 1.5e-09) +(2.833333333e-10 4e-09 1.5e-09) +(5.666666667e-10 4e-09 1.5e-09) +(8.5e-10 4e-09 1.5e-09) +(1.133333333e-09 4e-09 1.5e-09) +(1.416666667e-09 4e-09 1.5e-09) +(1.7e-09 4e-09 1.5e-09) +(1.983333333e-09 4e-09 1.5e-09) +(2.266666667e-09 4e-09 1.5e-09) +(2.55e-09 4e-09 1.5e-09) +(2.833333333e-09 4e-09 1.5e-09) +(3.116666667e-09 4e-09 1.5e-09) +(3.4e-09 4e-09 1.5e-09) +(3.683333333e-09 4e-09 1.5e-09) +(3.966666667e-09 4e-09 1.5e-09) +(4.25e-09 4e-09 1.5e-09) +(0 4.25e-09 1.5e-09) +(2.833333333e-10 4.25e-09 1.5e-09) +(5.666666667e-10 4.25e-09 1.5e-09) +(8.5e-10 4.25e-09 1.5e-09) +(1.133333333e-09 4.25e-09 1.5e-09) +(1.416666667e-09 4.25e-09 1.5e-09) +(1.7e-09 4.25e-09 1.5e-09) +(1.983333333e-09 4.25e-09 1.5e-09) +(2.266666667e-09 4.25e-09 1.5e-09) +(2.55e-09 4.25e-09 1.5e-09) +(2.833333333e-09 4.25e-09 1.5e-09) +(3.116666667e-09 4.25e-09 1.5e-09) +(3.4e-09 4.25e-09 1.5e-09) +(3.683333333e-09 4.25e-09 1.5e-09) +(3.966666667e-09 4.25e-09 1.5e-09) +(4.25e-09 4.25e-09 1.5e-09) +(0 4.5e-09 1.5e-09) +(2.833333333e-10 4.5e-09 1.5e-09) +(5.666666667e-10 4.5e-09 1.5e-09) +(8.5e-10 4.5e-09 1.5e-09) +(1.133333333e-09 4.5e-09 1.5e-09) +(1.416666667e-09 4.5e-09 1.5e-09) +(1.7e-09 4.5e-09 1.5e-09) +(1.983333333e-09 4.5e-09 1.5e-09) +(2.266666667e-09 4.5e-09 1.5e-09) +(2.55e-09 4.5e-09 1.5e-09) +(2.833333333e-09 4.5e-09 1.5e-09) +(3.116666667e-09 4.5e-09 1.5e-09) +(3.4e-09 4.5e-09 1.5e-09) +(3.683333333e-09 4.5e-09 1.5e-09) +(3.966666667e-09 4.5e-09 1.5e-09) +(4.25e-09 4.5e-09 1.5e-09) +(0 2.5e-09 2e-09) +(2.833333333e-10 2.5e-09 2e-09) +(5.666666667e-10 2.5e-09 2e-09) +(8.5e-10 2.5e-09 2e-09) +(1.133333333e-09 2.5e-09 2e-09) +(1.416666667e-09 2.5e-09 2e-09) +(1.7e-09 2.5e-09 2e-09) +(1.983333333e-09 2.5e-09 2e-09) +(2.266666667e-09 2.5e-09 2e-09) +(2.55e-09 2.5e-09 2e-09) +(2.833333333e-09 2.5e-09 2e-09) +(3.116666667e-09 2.5e-09 2e-09) +(3.4e-09 2.5e-09 2e-09) +(3.683333333e-09 2.5e-09 2e-09) +(3.966666667e-09 2.5e-09 2e-09) +(4.25e-09 2.5e-09 2e-09) +(0 2.75e-09 2e-09) +(2.833333333e-10 2.75e-09 2e-09) +(5.666666667e-10 2.75e-09 2e-09) +(8.5e-10 2.75e-09 2e-09) +(1.133333333e-09 2.75e-09 2e-09) +(1.416666667e-09 2.75e-09 2e-09) +(1.7e-09 2.75e-09 2e-09) +(1.983333333e-09 2.75e-09 2e-09) +(2.266666667e-09 2.75e-09 2e-09) +(2.55e-09 2.75e-09 2e-09) +(2.833333333e-09 2.75e-09 2e-09) +(3.116666667e-09 2.75e-09 2e-09) +(3.4e-09 2.75e-09 2e-09) +(3.683333333e-09 2.75e-09 2e-09) +(3.966666667e-09 2.75e-09 2e-09) +(4.25e-09 2.75e-09 2e-09) +(0 3e-09 2e-09) +(2.833333333e-10 3e-09 2e-09) +(5.666666667e-10 3e-09 2e-09) +(8.5e-10 3e-09 2e-09) +(1.133333333e-09 3e-09 2e-09) +(1.416666667e-09 3e-09 2e-09) +(1.7e-09 3e-09 2e-09) +(1.983333333e-09 3e-09 2e-09) +(2.266666667e-09 3e-09 2e-09) +(2.55e-09 3e-09 2e-09) +(2.833333333e-09 3e-09 2e-09) +(3.116666667e-09 3e-09 2e-09) +(3.4e-09 3e-09 2e-09) +(3.683333333e-09 3e-09 2e-09) +(3.966666667e-09 3e-09 2e-09) +(4.25e-09 3e-09 2e-09) +(0 3.25e-09 2e-09) +(2.833333333e-10 3.25e-09 2e-09) +(5.666666667e-10 3.25e-09 2e-09) +(8.5e-10 3.25e-09 2e-09) +(1.133333333e-09 3.25e-09 2e-09) +(1.416666667e-09 3.25e-09 2e-09) +(1.7e-09 3.25e-09 2e-09) +(1.983333333e-09 3.25e-09 2e-09) +(2.266666667e-09 3.25e-09 2e-09) +(2.55e-09 3.25e-09 2e-09) +(2.833333333e-09 3.25e-09 2e-09) +(3.116666667e-09 3.25e-09 2e-09) +(3.4e-09 3.25e-09 2e-09) +(3.683333333e-09 3.25e-09 2e-09) +(3.966666667e-09 3.25e-09 2e-09) +(4.25e-09 3.25e-09 2e-09) +(0 3.5e-09 2e-09) +(2.833333333e-10 3.5e-09 2e-09) +(5.666666667e-10 3.5e-09 2e-09) +(8.5e-10 3.5e-09 2e-09) +(1.133333333e-09 3.5e-09 2e-09) +(1.416666667e-09 3.5e-09 2e-09) +(1.7e-09 3.5e-09 2e-09) +(1.983333333e-09 3.5e-09 2e-09) +(2.266666667e-09 3.5e-09 2e-09) +(2.55e-09 3.5e-09 2e-09) +(2.833333333e-09 3.5e-09 2e-09) +(3.116666667e-09 3.5e-09 2e-09) +(3.4e-09 3.5e-09 2e-09) +(3.683333333e-09 3.5e-09 2e-09) +(3.966666667e-09 3.5e-09 2e-09) +(4.25e-09 3.5e-09 2e-09) +(0 3.75e-09 2e-09) +(2.833333333e-10 3.75e-09 2e-09) +(5.666666667e-10 3.75e-09 2e-09) +(8.5e-10 3.75e-09 2e-09) +(1.133333333e-09 3.75e-09 2e-09) +(1.416666667e-09 3.75e-09 2e-09) +(1.7e-09 3.75e-09 2e-09) +(1.983333333e-09 3.75e-09 2e-09) +(2.266666667e-09 3.75e-09 2e-09) +(2.55e-09 3.75e-09 2e-09) +(2.833333333e-09 3.75e-09 2e-09) +(3.116666667e-09 3.75e-09 2e-09) +(3.4e-09 3.75e-09 2e-09) +(3.683333333e-09 3.75e-09 2e-09) +(3.966666667e-09 3.75e-09 2e-09) +(4.25e-09 3.75e-09 2e-09) +(0 4e-09 2e-09) +(2.833333333e-10 4e-09 2e-09) +(5.666666667e-10 4e-09 2e-09) +(8.5e-10 4e-09 2e-09) +(1.133333333e-09 4e-09 2e-09) +(1.416666667e-09 4e-09 2e-09) +(1.7e-09 4e-09 2e-09) +(1.983333333e-09 4e-09 2e-09) +(2.266666667e-09 4e-09 2e-09) +(2.55e-09 4e-09 2e-09) +(2.833333333e-09 4e-09 2e-09) +(3.116666667e-09 4e-09 2e-09) +(3.4e-09 4e-09 2e-09) +(3.683333333e-09 4e-09 2e-09) +(3.966666667e-09 4e-09 2e-09) +(4.25e-09 4e-09 2e-09) +(0 4.25e-09 2e-09) +(2.833333333e-10 4.25e-09 2e-09) +(5.666666667e-10 4.25e-09 2e-09) +(8.5e-10 4.25e-09 2e-09) +(1.133333333e-09 4.25e-09 2e-09) +(1.416666667e-09 4.25e-09 2e-09) +(1.7e-09 4.25e-09 2e-09) +(1.983333333e-09 4.25e-09 2e-09) +(2.266666667e-09 4.25e-09 2e-09) +(2.55e-09 4.25e-09 2e-09) +(2.833333333e-09 4.25e-09 2e-09) +(3.116666667e-09 4.25e-09 2e-09) +(3.4e-09 4.25e-09 2e-09) +(3.683333333e-09 4.25e-09 2e-09) +(3.966666667e-09 4.25e-09 2e-09) +(4.25e-09 4.25e-09 2e-09) +(0 4.5e-09 2e-09) +(2.833333333e-10 4.5e-09 2e-09) +(5.666666667e-10 4.5e-09 2e-09) +(8.5e-10 4.5e-09 2e-09) +(1.133333333e-09 4.5e-09 2e-09) +(1.416666667e-09 4.5e-09 2e-09) +(1.7e-09 4.5e-09 2e-09) +(1.983333333e-09 4.5e-09 2e-09) +(2.266666667e-09 4.5e-09 2e-09) +(2.55e-09 4.5e-09 2e-09) +(2.833333333e-09 4.5e-09 2e-09) +(3.116666667e-09 4.5e-09 2e-09) +(3.4e-09 4.5e-09 2e-09) +(3.683333333e-09 4.5e-09 2e-09) +(3.966666667e-09 4.5e-09 2e-09) +(4.25e-09 4.5e-09 2e-09) +(0 2.5e-09 2.5e-09) +(2.833333333e-10 2.5e-09 2.5e-09) +(5.666666667e-10 2.5e-09 2.5e-09) +(8.5e-10 2.5e-09 2.5e-09) +(1.133333333e-09 2.5e-09 2.5e-09) +(1.416666667e-09 2.5e-09 2.5e-09) +(1.7e-09 2.5e-09 2.5e-09) +(1.983333333e-09 2.5e-09 2.5e-09) +(2.266666667e-09 2.5e-09 2.5e-09) +(2.55e-09 2.5e-09 2.5e-09) +(2.833333333e-09 2.5e-09 2.5e-09) +(3.116666667e-09 2.5e-09 2.5e-09) +(3.4e-09 2.5e-09 2.5e-09) +(3.683333333e-09 2.5e-09 2.5e-09) +(3.966666667e-09 2.5e-09 2.5e-09) +(4.25e-09 2.5e-09 2.5e-09) +(0 2.75e-09 2.5e-09) +(2.833333333e-10 2.75e-09 2.5e-09) +(5.666666667e-10 2.75e-09 2.5e-09) +(8.5e-10 2.75e-09 2.5e-09) +(1.133333333e-09 2.75e-09 2.5e-09) +(1.416666667e-09 2.75e-09 2.5e-09) +(1.7e-09 2.75e-09 2.5e-09) +(1.983333333e-09 2.75e-09 2.5e-09) +(2.266666667e-09 2.75e-09 2.5e-09) +(2.55e-09 2.75e-09 2.5e-09) +(2.833333333e-09 2.75e-09 2.5e-09) +(3.116666667e-09 2.75e-09 2.5e-09) +(3.4e-09 2.75e-09 2.5e-09) +(3.683333333e-09 2.75e-09 2.5e-09) +(3.966666667e-09 2.75e-09 2.5e-09) +(4.25e-09 2.75e-09 2.5e-09) +(0 3e-09 2.5e-09) +(2.833333333e-10 3e-09 2.5e-09) +(5.666666667e-10 3e-09 2.5e-09) +(8.5e-10 3e-09 2.5e-09) +(1.133333333e-09 3e-09 2.5e-09) +(1.416666667e-09 3e-09 2.5e-09) +(1.7e-09 3e-09 2.5e-09) +(1.983333333e-09 3e-09 2.5e-09) +(2.266666667e-09 3e-09 2.5e-09) +(2.55e-09 3e-09 2.5e-09) +(2.833333333e-09 3e-09 2.5e-09) +(3.116666667e-09 3e-09 2.5e-09) +(3.4e-09 3e-09 2.5e-09) +(3.683333333e-09 3e-09 2.5e-09) +(3.966666667e-09 3e-09 2.5e-09) +(4.25e-09 3e-09 2.5e-09) +(0 3.25e-09 2.5e-09) +(2.833333333e-10 3.25e-09 2.5e-09) +(5.666666667e-10 3.25e-09 2.5e-09) +(8.5e-10 3.25e-09 2.5e-09) +(1.133333333e-09 3.25e-09 2.5e-09) +(1.416666667e-09 3.25e-09 2.5e-09) +(1.7e-09 3.25e-09 2.5e-09) +(1.983333333e-09 3.25e-09 2.5e-09) +(2.266666667e-09 3.25e-09 2.5e-09) +(2.55e-09 3.25e-09 2.5e-09) +(2.833333333e-09 3.25e-09 2.5e-09) +(3.116666667e-09 3.25e-09 2.5e-09) +(3.4e-09 3.25e-09 2.5e-09) +(3.683333333e-09 3.25e-09 2.5e-09) +(3.966666667e-09 3.25e-09 2.5e-09) +(4.25e-09 3.25e-09 2.5e-09) +(0 3.5e-09 2.5e-09) +(2.833333333e-10 3.5e-09 2.5e-09) +(5.666666667e-10 3.5e-09 2.5e-09) +(8.5e-10 3.5e-09 2.5e-09) +(1.133333333e-09 3.5e-09 2.5e-09) +(1.416666667e-09 3.5e-09 2.5e-09) +(1.7e-09 3.5e-09 2.5e-09) +(1.983333333e-09 3.5e-09 2.5e-09) +(2.266666667e-09 3.5e-09 2.5e-09) +(2.55e-09 3.5e-09 2.5e-09) +(2.833333333e-09 3.5e-09 2.5e-09) +(3.116666667e-09 3.5e-09 2.5e-09) +(3.4e-09 3.5e-09 2.5e-09) +(3.683333333e-09 3.5e-09 2.5e-09) +(3.966666667e-09 3.5e-09 2.5e-09) +(4.25e-09 3.5e-09 2.5e-09) +(0 3.75e-09 2.5e-09) +(2.833333333e-10 3.75e-09 2.5e-09) +(5.666666667e-10 3.75e-09 2.5e-09) +(8.5e-10 3.75e-09 2.5e-09) +(1.133333333e-09 3.75e-09 2.5e-09) +(1.416666667e-09 3.75e-09 2.5e-09) +(1.7e-09 3.75e-09 2.5e-09) +(1.983333333e-09 3.75e-09 2.5e-09) +(2.266666667e-09 3.75e-09 2.5e-09) +(2.55e-09 3.75e-09 2.5e-09) +(2.833333333e-09 3.75e-09 2.5e-09) +(3.116666667e-09 3.75e-09 2.5e-09) +(3.4e-09 3.75e-09 2.5e-09) +(3.683333333e-09 3.75e-09 2.5e-09) +(3.966666667e-09 3.75e-09 2.5e-09) +(4.25e-09 3.75e-09 2.5e-09) +(0 4e-09 2.5e-09) +(2.833333333e-10 4e-09 2.5e-09) +(5.666666667e-10 4e-09 2.5e-09) +(8.5e-10 4e-09 2.5e-09) +(1.133333333e-09 4e-09 2.5e-09) +(1.416666667e-09 4e-09 2.5e-09) +(1.7e-09 4e-09 2.5e-09) +(1.983333333e-09 4e-09 2.5e-09) +(2.266666667e-09 4e-09 2.5e-09) +(2.55e-09 4e-09 2.5e-09) +(2.833333333e-09 4e-09 2.5e-09) +(3.116666667e-09 4e-09 2.5e-09) +(3.4e-09 4e-09 2.5e-09) +(3.683333333e-09 4e-09 2.5e-09) +(3.966666667e-09 4e-09 2.5e-09) +(4.25e-09 4e-09 2.5e-09) +(0 4.25e-09 2.5e-09) +(2.833333333e-10 4.25e-09 2.5e-09) +(5.666666667e-10 4.25e-09 2.5e-09) +(8.5e-10 4.25e-09 2.5e-09) +(1.133333333e-09 4.25e-09 2.5e-09) +(1.416666667e-09 4.25e-09 2.5e-09) +(1.7e-09 4.25e-09 2.5e-09) +(1.983333333e-09 4.25e-09 2.5e-09) +(2.266666667e-09 4.25e-09 2.5e-09) +(2.55e-09 4.25e-09 2.5e-09) +(2.833333333e-09 4.25e-09 2.5e-09) +(3.116666667e-09 4.25e-09 2.5e-09) +(3.4e-09 4.25e-09 2.5e-09) +(3.683333333e-09 4.25e-09 2.5e-09) +(3.966666667e-09 4.25e-09 2.5e-09) +(4.25e-09 4.25e-09 2.5e-09) +(0 4.5e-09 2.5e-09) +(2.833333333e-10 4.5e-09 2.5e-09) +(5.666666667e-10 4.5e-09 2.5e-09) +(8.5e-10 4.5e-09 2.5e-09) +(1.133333333e-09 4.5e-09 2.5e-09) +(1.416666667e-09 4.5e-09 2.5e-09) +(1.7e-09 4.5e-09 2.5e-09) +(1.983333333e-09 4.5e-09 2.5e-09) +(2.266666667e-09 4.5e-09 2.5e-09) +(2.55e-09 4.5e-09 2.5e-09) +(2.833333333e-09 4.5e-09 2.5e-09) +(3.116666667e-09 4.5e-09 2.5e-09) +(3.4e-09 4.5e-09 2.5e-09) +(3.683333333e-09 4.5e-09 2.5e-09) +(3.966666667e-09 4.5e-09 2.5e-09) +(4.25e-09 4.5e-09 2.5e-09) +(0 2.5e-09 3e-09) +(2.833333333e-10 2.5e-09 3e-09) +(5.666666667e-10 2.5e-09 3e-09) +(8.5e-10 2.5e-09 3e-09) +(1.133333333e-09 2.5e-09 3e-09) +(1.416666667e-09 2.5e-09 3e-09) +(1.7e-09 2.5e-09 3e-09) +(1.983333333e-09 2.5e-09 3e-09) +(2.266666667e-09 2.5e-09 3e-09) +(2.55e-09 2.5e-09 3e-09) +(2.833333333e-09 2.5e-09 3e-09) +(3.116666667e-09 2.5e-09 3e-09) +(3.4e-09 2.5e-09 3e-09) +(3.683333333e-09 2.5e-09 3e-09) +(3.966666667e-09 2.5e-09 3e-09) +(4.25e-09 2.5e-09 3e-09) +(0 2.75e-09 3e-09) +(2.833333333e-10 2.75e-09 3e-09) +(5.666666667e-10 2.75e-09 3e-09) +(8.5e-10 2.75e-09 3e-09) +(1.133333333e-09 2.75e-09 3e-09) +(1.416666667e-09 2.75e-09 3e-09) +(1.7e-09 2.75e-09 3e-09) +(1.983333333e-09 2.75e-09 3e-09) +(2.266666667e-09 2.75e-09 3e-09) +(2.55e-09 2.75e-09 3e-09) +(2.833333333e-09 2.75e-09 3e-09) +(3.116666667e-09 2.75e-09 3e-09) +(3.4e-09 2.75e-09 3e-09) +(3.683333333e-09 2.75e-09 3e-09) +(3.966666667e-09 2.75e-09 3e-09) +(4.25e-09 2.75e-09 3e-09) +(0 3e-09 3e-09) +(2.833333333e-10 3e-09 3e-09) +(5.666666667e-10 3e-09 3e-09) +(8.5e-10 3e-09 3e-09) +(1.133333333e-09 3e-09 3e-09) +(1.416666667e-09 3e-09 3e-09) +(1.7e-09 3e-09 3e-09) +(1.983333333e-09 3e-09 3e-09) +(2.266666667e-09 3e-09 3e-09) +(2.55e-09 3e-09 3e-09) +(2.833333333e-09 3e-09 3e-09) +(3.116666667e-09 3e-09 3e-09) +(3.4e-09 3e-09 3e-09) +(3.683333333e-09 3e-09 3e-09) +(3.966666667e-09 3e-09 3e-09) +(4.25e-09 3e-09 3e-09) +(0 3.25e-09 3e-09) +(2.833333333e-10 3.25e-09 3e-09) +(5.666666667e-10 3.25e-09 3e-09) +(8.5e-10 3.25e-09 3e-09) +(1.133333333e-09 3.25e-09 3e-09) +(1.416666667e-09 3.25e-09 3e-09) +(1.7e-09 3.25e-09 3e-09) +(1.983333333e-09 3.25e-09 3e-09) +(2.266666667e-09 3.25e-09 3e-09) +(2.55e-09 3.25e-09 3e-09) +(2.833333333e-09 3.25e-09 3e-09) +(3.116666667e-09 3.25e-09 3e-09) +(3.4e-09 3.25e-09 3e-09) +(3.683333333e-09 3.25e-09 3e-09) +(3.966666667e-09 3.25e-09 3e-09) +(4.25e-09 3.25e-09 3e-09) +(0 3.5e-09 3e-09) +(2.833333333e-10 3.5e-09 3e-09) +(5.666666667e-10 3.5e-09 3e-09) +(8.5e-10 3.5e-09 3e-09) +(1.133333333e-09 3.5e-09 3e-09) +(1.416666667e-09 3.5e-09 3e-09) +(1.7e-09 3.5e-09 3e-09) +(1.983333333e-09 3.5e-09 3e-09) +(2.266666667e-09 3.5e-09 3e-09) +(2.55e-09 3.5e-09 3e-09) +(2.833333333e-09 3.5e-09 3e-09) +(3.116666667e-09 3.5e-09 3e-09) +(3.4e-09 3.5e-09 3e-09) +(3.683333333e-09 3.5e-09 3e-09) +(3.966666667e-09 3.5e-09 3e-09) +(4.25e-09 3.5e-09 3e-09) +(0 3.75e-09 3e-09) +(2.833333333e-10 3.75e-09 3e-09) +(5.666666667e-10 3.75e-09 3e-09) +(8.5e-10 3.75e-09 3e-09) +(1.133333333e-09 3.75e-09 3e-09) +(1.416666667e-09 3.75e-09 3e-09) +(1.7e-09 3.75e-09 3e-09) +(1.983333333e-09 3.75e-09 3e-09) +(2.266666667e-09 3.75e-09 3e-09) +(2.55e-09 3.75e-09 3e-09) +(2.833333333e-09 3.75e-09 3e-09) +(3.116666667e-09 3.75e-09 3e-09) +(3.4e-09 3.75e-09 3e-09) +(3.683333333e-09 3.75e-09 3e-09) +(3.966666667e-09 3.75e-09 3e-09) +(4.25e-09 3.75e-09 3e-09) +(0 4e-09 3e-09) +(2.833333333e-10 4e-09 3e-09) +(5.666666667e-10 4e-09 3e-09) +(8.5e-10 4e-09 3e-09) +(1.133333333e-09 4e-09 3e-09) +(1.416666667e-09 4e-09 3e-09) +(1.7e-09 4e-09 3e-09) +(1.983333333e-09 4e-09 3e-09) +(2.266666667e-09 4e-09 3e-09) +(2.55e-09 4e-09 3e-09) +(2.833333333e-09 4e-09 3e-09) +(3.116666667e-09 4e-09 3e-09) +(3.4e-09 4e-09 3e-09) +(3.683333333e-09 4e-09 3e-09) +(3.966666667e-09 4e-09 3e-09) +(4.25e-09 4e-09 3e-09) +(0 4.25e-09 3e-09) +(2.833333333e-10 4.25e-09 3e-09) +(5.666666667e-10 4.25e-09 3e-09) +(8.5e-10 4.25e-09 3e-09) +(1.133333333e-09 4.25e-09 3e-09) +(1.416666667e-09 4.25e-09 3e-09) +(1.7e-09 4.25e-09 3e-09) +(1.983333333e-09 4.25e-09 3e-09) +(2.266666667e-09 4.25e-09 3e-09) +(2.55e-09 4.25e-09 3e-09) +(2.833333333e-09 4.25e-09 3e-09) +(3.116666667e-09 4.25e-09 3e-09) +(3.4e-09 4.25e-09 3e-09) +(3.683333333e-09 4.25e-09 3e-09) +(3.966666667e-09 4.25e-09 3e-09) +(4.25e-09 4.25e-09 3e-09) +(0 4.5e-09 3e-09) +(2.833333333e-10 4.5e-09 3e-09) +(5.666666667e-10 4.5e-09 3e-09) +(8.5e-10 4.5e-09 3e-09) +(1.133333333e-09 4.5e-09 3e-09) +(1.416666667e-09 4.5e-09 3e-09) +(1.7e-09 4.5e-09 3e-09) +(1.983333333e-09 4.5e-09 3e-09) +(2.266666667e-09 4.5e-09 3e-09) +(2.55e-09 4.5e-09 3e-09) +(2.833333333e-09 4.5e-09 3e-09) +(3.116666667e-09 4.5e-09 3e-09) +(3.4e-09 4.5e-09 3e-09) +(3.683333333e-09 4.5e-09 3e-09) +(3.966666667e-09 4.5e-09 3e-09) +(4.25e-09 4.5e-09 3e-09) +(0 4.75e-09 0) +(2.833333333e-10 4.75e-09 0) +(5.666666667e-10 4.75e-09 0) +(8.5e-10 4.75e-09 0) +(1.133333333e-09 4.75e-09 0) +(1.416666667e-09 4.75e-09 0) +(1.7e-09 4.75e-09 0) +(1.983333333e-09 4.75e-09 0) +(2.266666667e-09 4.75e-09 0) +(2.55e-09 4.75e-09 0) +(2.833333333e-09 4.75e-09 0) +(3.116666667e-09 4.75e-09 0) +(3.4e-09 4.75e-09 0) +(3.683333333e-09 4.75e-09 0) +(3.966666667e-09 4.75e-09 0) +(4.25e-09 4.75e-09 0) +(0 5e-09 0) +(2.833333333e-10 5e-09 0) +(5.666666667e-10 5e-09 0) +(8.5e-10 5e-09 0) +(1.133333333e-09 5e-09 0) +(1.416666667e-09 5e-09 0) +(1.7e-09 5e-09 0) +(1.983333333e-09 5e-09 0) +(2.266666667e-09 5e-09 0) +(2.55e-09 5e-09 0) +(2.833333333e-09 5e-09 0) +(3.116666667e-09 5e-09 0) +(3.4e-09 5e-09 0) +(3.683333333e-09 5e-09 0) +(3.966666667e-09 5e-09 0) +(4.25e-09 5e-09 0) +(0 5.25e-09 0) +(2.833333333e-10 5.25e-09 0) +(5.666666667e-10 5.25e-09 0) +(8.5e-10 5.25e-09 0) +(1.133333333e-09 5.25e-09 0) +(1.416666667e-09 5.25e-09 0) +(1.7e-09 5.25e-09 0) +(1.983333333e-09 5.25e-09 0) +(2.266666667e-09 5.25e-09 0) +(2.55e-09 5.25e-09 0) +(2.833333333e-09 5.25e-09 0) +(3.116666667e-09 5.25e-09 0) +(3.4e-09 5.25e-09 0) +(3.683333333e-09 5.25e-09 0) +(3.966666667e-09 5.25e-09 0) +(4.25e-09 5.25e-09 0) +(0 4.75e-09 5e-10) +(2.833333333e-10 4.75e-09 5e-10) +(5.666666667e-10 4.75e-09 5e-10) +(8.5e-10 4.75e-09 5e-10) +(1.133333333e-09 4.75e-09 5e-10) +(1.416666667e-09 4.75e-09 5e-10) +(1.7e-09 4.75e-09 5e-10) +(1.983333333e-09 4.75e-09 5e-10) +(2.266666667e-09 4.75e-09 5e-10) +(2.55e-09 4.75e-09 5e-10) +(2.833333333e-09 4.75e-09 5e-10) +(3.116666667e-09 4.75e-09 5e-10) +(3.4e-09 4.75e-09 5e-10) +(3.683333333e-09 4.75e-09 5e-10) +(3.966666667e-09 4.75e-09 5e-10) +(4.25e-09 4.75e-09 5e-10) +(0 5e-09 5e-10) +(2.833333333e-10 5e-09 5e-10) +(5.666666667e-10 5e-09 5e-10) +(8.5e-10 5e-09 5e-10) +(1.133333333e-09 5e-09 5e-10) +(1.416666667e-09 5e-09 5e-10) +(1.7e-09 5e-09 5e-10) +(1.983333333e-09 5e-09 5e-10) +(2.266666667e-09 5e-09 5e-10) +(2.55e-09 5e-09 5e-10) +(2.833333333e-09 5e-09 5e-10) +(3.116666667e-09 5e-09 5e-10) +(3.4e-09 5e-09 5e-10) +(3.683333333e-09 5e-09 5e-10) +(3.966666667e-09 5e-09 5e-10) +(4.25e-09 5e-09 5e-10) +(0 5.25e-09 5e-10) +(2.833333333e-10 5.25e-09 5e-10) +(5.666666667e-10 5.25e-09 5e-10) +(8.5e-10 5.25e-09 5e-10) +(1.133333333e-09 5.25e-09 5e-10) +(1.416666667e-09 5.25e-09 5e-10) +(1.7e-09 5.25e-09 5e-10) +(1.983333333e-09 5.25e-09 5e-10) +(2.266666667e-09 5.25e-09 5e-10) +(2.55e-09 5.25e-09 5e-10) +(2.833333333e-09 5.25e-09 5e-10) +(3.116666667e-09 5.25e-09 5e-10) +(3.4e-09 5.25e-09 5e-10) +(3.683333333e-09 5.25e-09 5e-10) +(3.966666667e-09 5.25e-09 5e-10) +(4.25e-09 5.25e-09 5e-10) +(0 4.75e-09 1e-09) +(2.833333333e-10 4.75e-09 1e-09) +(5.666666667e-10 4.75e-09 1e-09) +(8.5e-10 4.75e-09 1e-09) +(1.133333333e-09 4.75e-09 1e-09) +(1.416666667e-09 4.75e-09 1e-09) +(1.7e-09 4.75e-09 1e-09) +(1.983333333e-09 4.75e-09 1e-09) +(2.266666667e-09 4.75e-09 1e-09) +(2.55e-09 4.75e-09 1e-09) +(2.833333333e-09 4.75e-09 1e-09) +(3.116666667e-09 4.75e-09 1e-09) +(3.4e-09 4.75e-09 1e-09) +(3.683333333e-09 4.75e-09 1e-09) +(3.966666667e-09 4.75e-09 1e-09) +(4.25e-09 4.75e-09 1e-09) +(0 5e-09 1e-09) +(2.833333333e-10 5e-09 1e-09) +(5.666666667e-10 5e-09 1e-09) +(8.5e-10 5e-09 1e-09) +(1.133333333e-09 5e-09 1e-09) +(1.416666667e-09 5e-09 1e-09) +(1.7e-09 5e-09 1e-09) +(1.983333333e-09 5e-09 1e-09) +(2.266666667e-09 5e-09 1e-09) +(2.55e-09 5e-09 1e-09) +(2.833333333e-09 5e-09 1e-09) +(3.116666667e-09 5e-09 1e-09) +(3.4e-09 5e-09 1e-09) +(3.683333333e-09 5e-09 1e-09) +(3.966666667e-09 5e-09 1e-09) +(4.25e-09 5e-09 1e-09) +(0 5.25e-09 1e-09) +(2.833333333e-10 5.25e-09 1e-09) +(5.666666667e-10 5.25e-09 1e-09) +(8.5e-10 5.25e-09 1e-09) +(1.133333333e-09 5.25e-09 1e-09) +(1.416666667e-09 5.25e-09 1e-09) +(1.7e-09 5.25e-09 1e-09) +(1.983333333e-09 5.25e-09 1e-09) +(2.266666667e-09 5.25e-09 1e-09) +(2.55e-09 5.25e-09 1e-09) +(2.833333333e-09 5.25e-09 1e-09) +(3.116666667e-09 5.25e-09 1e-09) +(3.4e-09 5.25e-09 1e-09) +(3.683333333e-09 5.25e-09 1e-09) +(3.966666667e-09 5.25e-09 1e-09) +(4.25e-09 5.25e-09 1e-09) +(0 4.75e-09 1.5e-09) +(2.833333333e-10 4.75e-09 1.5e-09) +(5.666666667e-10 4.75e-09 1.5e-09) +(8.5e-10 4.75e-09 1.5e-09) +(1.133333333e-09 4.75e-09 1.5e-09) +(1.416666667e-09 4.75e-09 1.5e-09) +(1.7e-09 4.75e-09 1.5e-09) +(1.983333333e-09 4.75e-09 1.5e-09) +(2.266666667e-09 4.75e-09 1.5e-09) +(2.55e-09 4.75e-09 1.5e-09) +(2.833333333e-09 4.75e-09 1.5e-09) +(3.116666667e-09 4.75e-09 1.5e-09) +(3.4e-09 4.75e-09 1.5e-09) +(3.683333333e-09 4.75e-09 1.5e-09) +(3.966666667e-09 4.75e-09 1.5e-09) +(4.25e-09 4.75e-09 1.5e-09) +(0 5e-09 1.5e-09) +(2.833333333e-10 5e-09 1.5e-09) +(5.666666667e-10 5e-09 1.5e-09) +(8.5e-10 5e-09 1.5e-09) +(1.133333333e-09 5e-09 1.5e-09) +(1.416666667e-09 5e-09 1.5e-09) +(1.7e-09 5e-09 1.5e-09) +(1.983333333e-09 5e-09 1.5e-09) +(2.266666667e-09 5e-09 1.5e-09) +(2.55e-09 5e-09 1.5e-09) +(2.833333333e-09 5e-09 1.5e-09) +(3.116666667e-09 5e-09 1.5e-09) +(3.4e-09 5e-09 1.5e-09) +(3.683333333e-09 5e-09 1.5e-09) +(3.966666667e-09 5e-09 1.5e-09) +(4.25e-09 5e-09 1.5e-09) +(0 5.25e-09 1.5e-09) +(2.833333333e-10 5.25e-09 1.5e-09) +(5.666666667e-10 5.25e-09 1.5e-09) +(8.5e-10 5.25e-09 1.5e-09) +(1.133333333e-09 5.25e-09 1.5e-09) +(1.416666667e-09 5.25e-09 1.5e-09) +(1.7e-09 5.25e-09 1.5e-09) +(1.983333333e-09 5.25e-09 1.5e-09) +(2.266666667e-09 5.25e-09 1.5e-09) +(2.55e-09 5.25e-09 1.5e-09) +(2.833333333e-09 5.25e-09 1.5e-09) +(3.116666667e-09 5.25e-09 1.5e-09) +(3.4e-09 5.25e-09 1.5e-09) +(3.683333333e-09 5.25e-09 1.5e-09) +(3.966666667e-09 5.25e-09 1.5e-09) +(4.25e-09 5.25e-09 1.5e-09) +(0 4.75e-09 2e-09) +(2.833333333e-10 4.75e-09 2e-09) +(5.666666667e-10 4.75e-09 2e-09) +(8.5e-10 4.75e-09 2e-09) +(1.133333333e-09 4.75e-09 2e-09) +(1.416666667e-09 4.75e-09 2e-09) +(1.7e-09 4.75e-09 2e-09) +(1.983333333e-09 4.75e-09 2e-09) +(2.266666667e-09 4.75e-09 2e-09) +(2.55e-09 4.75e-09 2e-09) +(2.833333333e-09 4.75e-09 2e-09) +(3.116666667e-09 4.75e-09 2e-09) +(3.4e-09 4.75e-09 2e-09) +(3.683333333e-09 4.75e-09 2e-09) +(3.966666667e-09 4.75e-09 2e-09) +(4.25e-09 4.75e-09 2e-09) +(0 5e-09 2e-09) +(2.833333333e-10 5e-09 2e-09) +(5.666666667e-10 5e-09 2e-09) +(8.5e-10 5e-09 2e-09) +(1.133333333e-09 5e-09 2e-09) +(1.416666667e-09 5e-09 2e-09) +(1.7e-09 5e-09 2e-09) +(1.983333333e-09 5e-09 2e-09) +(2.266666667e-09 5e-09 2e-09) +(2.55e-09 5e-09 2e-09) +(2.833333333e-09 5e-09 2e-09) +(3.116666667e-09 5e-09 2e-09) +(3.4e-09 5e-09 2e-09) +(3.683333333e-09 5e-09 2e-09) +(3.966666667e-09 5e-09 2e-09) +(4.25e-09 5e-09 2e-09) +(0 5.25e-09 2e-09) +(2.833333333e-10 5.25e-09 2e-09) +(5.666666667e-10 5.25e-09 2e-09) +(8.5e-10 5.25e-09 2e-09) +(1.133333333e-09 5.25e-09 2e-09) +(1.416666667e-09 5.25e-09 2e-09) +(1.7e-09 5.25e-09 2e-09) +(1.983333333e-09 5.25e-09 2e-09) +(2.266666667e-09 5.25e-09 2e-09) +(2.55e-09 5.25e-09 2e-09) +(2.833333333e-09 5.25e-09 2e-09) +(3.116666667e-09 5.25e-09 2e-09) +(3.4e-09 5.25e-09 2e-09) +(3.683333333e-09 5.25e-09 2e-09) +(3.966666667e-09 5.25e-09 2e-09) +(4.25e-09 5.25e-09 2e-09) +(0 4.75e-09 2.5e-09) +(2.833333333e-10 4.75e-09 2.5e-09) +(5.666666667e-10 4.75e-09 2.5e-09) +(8.5e-10 4.75e-09 2.5e-09) +(1.133333333e-09 4.75e-09 2.5e-09) +(1.416666667e-09 4.75e-09 2.5e-09) +(1.7e-09 4.75e-09 2.5e-09) +(1.983333333e-09 4.75e-09 2.5e-09) +(2.266666667e-09 4.75e-09 2.5e-09) +(2.55e-09 4.75e-09 2.5e-09) +(2.833333333e-09 4.75e-09 2.5e-09) +(3.116666667e-09 4.75e-09 2.5e-09) +(3.4e-09 4.75e-09 2.5e-09) +(3.683333333e-09 4.75e-09 2.5e-09) +(3.966666667e-09 4.75e-09 2.5e-09) +(4.25e-09 4.75e-09 2.5e-09) +(0 5e-09 2.5e-09) +(2.833333333e-10 5e-09 2.5e-09) +(5.666666667e-10 5e-09 2.5e-09) +(8.5e-10 5e-09 2.5e-09) +(1.133333333e-09 5e-09 2.5e-09) +(1.416666667e-09 5e-09 2.5e-09) +(1.7e-09 5e-09 2.5e-09) +(1.983333333e-09 5e-09 2.5e-09) +(2.266666667e-09 5e-09 2.5e-09) +(2.55e-09 5e-09 2.5e-09) +(2.833333333e-09 5e-09 2.5e-09) +(3.116666667e-09 5e-09 2.5e-09) +(3.4e-09 5e-09 2.5e-09) +(3.683333333e-09 5e-09 2.5e-09) +(3.966666667e-09 5e-09 2.5e-09) +(4.25e-09 5e-09 2.5e-09) +(0 5.25e-09 2.5e-09) +(2.833333333e-10 5.25e-09 2.5e-09) +(5.666666667e-10 5.25e-09 2.5e-09) +(8.5e-10 5.25e-09 2.5e-09) +(1.133333333e-09 5.25e-09 2.5e-09) +(1.416666667e-09 5.25e-09 2.5e-09) +(1.7e-09 5.25e-09 2.5e-09) +(1.983333333e-09 5.25e-09 2.5e-09) +(2.266666667e-09 5.25e-09 2.5e-09) +(2.55e-09 5.25e-09 2.5e-09) +(2.833333333e-09 5.25e-09 2.5e-09) +(3.116666667e-09 5.25e-09 2.5e-09) +(3.4e-09 5.25e-09 2.5e-09) +(3.683333333e-09 5.25e-09 2.5e-09) +(3.966666667e-09 5.25e-09 2.5e-09) +(4.25e-09 5.25e-09 2.5e-09) +(0 4.75e-09 3e-09) +(2.833333333e-10 4.75e-09 3e-09) +(5.666666667e-10 4.75e-09 3e-09) +(8.5e-10 4.75e-09 3e-09) +(1.133333333e-09 4.75e-09 3e-09) +(1.416666667e-09 4.75e-09 3e-09) +(1.7e-09 4.75e-09 3e-09) +(1.983333333e-09 4.75e-09 3e-09) +(2.266666667e-09 4.75e-09 3e-09) +(2.55e-09 4.75e-09 3e-09) +(2.833333333e-09 4.75e-09 3e-09) +(3.116666667e-09 4.75e-09 3e-09) +(3.4e-09 4.75e-09 3e-09) +(3.683333333e-09 4.75e-09 3e-09) +(3.966666667e-09 4.75e-09 3e-09) +(4.25e-09 4.75e-09 3e-09) +(0 5e-09 3e-09) +(2.833333333e-10 5e-09 3e-09) +(5.666666667e-10 5e-09 3e-09) +(8.5e-10 5e-09 3e-09) +(1.133333333e-09 5e-09 3e-09) +(1.416666667e-09 5e-09 3e-09) +(1.7e-09 5e-09 3e-09) +(1.983333333e-09 5e-09 3e-09) +(2.266666667e-09 5e-09 3e-09) +(2.55e-09 5e-09 3e-09) +(2.833333333e-09 5e-09 3e-09) +(3.116666667e-09 5e-09 3e-09) +(3.4e-09 5e-09 3e-09) +(3.683333333e-09 5e-09 3e-09) +(3.966666667e-09 5e-09 3e-09) +(4.25e-09 5e-09 3e-09) +(0 5.25e-09 3e-09) +(2.833333333e-10 5.25e-09 3e-09) +(5.666666667e-10 5.25e-09 3e-09) +(8.5e-10 5.25e-09 3e-09) +(1.133333333e-09 5.25e-09 3e-09) +(1.416666667e-09 5.25e-09 3e-09) +(1.7e-09 5.25e-09 3e-09) +(1.983333333e-09 5.25e-09 3e-09) +(2.266666667e-09 5.25e-09 3e-09) +(2.55e-09 5.25e-09 3e-09) +(2.833333333e-09 5.25e-09 3e-09) +(3.116666667e-09 5.25e-09 3e-09) +(3.4e-09 5.25e-09 3e-09) +(3.683333333e-09 5.25e-09 3e-09) +(3.966666667e-09 5.25e-09 3e-09) +(4.25e-09 5.25e-09 3e-09) +(4.5e-09 2.5e-09 0) +(4.75e-09 2.5e-09 0) +(5e-09 2.5e-09 0) +(4.5e-09 2.75e-09 0) +(4.75e-09 2.75e-09 0) +(5e-09 2.75e-09 0) +(4.5e-09 3e-09 0) +(4.75e-09 3e-09 0) +(5e-09 3e-09 0) +(4.5e-09 3.25e-09 0) +(4.75e-09 3.25e-09 0) +(5e-09 3.25e-09 0) +(4.5e-09 3.5e-09 0) +(4.75e-09 3.5e-09 0) +(5e-09 3.5e-09 0) +(4.5e-09 3.75e-09 0) +(4.75e-09 3.75e-09 0) +(5e-09 3.75e-09 0) +(4.5e-09 4e-09 0) +(4.75e-09 4e-09 0) +(5e-09 4e-09 0) +(4.5e-09 4.25e-09 0) +(4.75e-09 4.25e-09 0) +(5e-09 4.25e-09 0) +(4.5e-09 4.5e-09 0) +(4.75e-09 4.5e-09 0) +(5e-09 4.5e-09 0) +(4.5e-09 2.5e-09 5e-10) +(4.75e-09 2.5e-09 5e-10) +(5e-09 2.5e-09 5e-10) +(4.5e-09 2.75e-09 5e-10) +(4.75e-09 2.75e-09 5e-10) +(5e-09 2.75e-09 5e-10) +(4.5e-09 3e-09 5e-10) +(4.75e-09 3e-09 5e-10) +(5e-09 3e-09 5e-10) +(4.5e-09 3.25e-09 5e-10) +(4.75e-09 3.25e-09 5e-10) +(5e-09 3.25e-09 5e-10) +(4.5e-09 3.5e-09 5e-10) +(4.75e-09 3.5e-09 5e-10) +(5e-09 3.5e-09 5e-10) +(4.5e-09 3.75e-09 5e-10) +(4.75e-09 3.75e-09 5e-10) +(5e-09 3.75e-09 5e-10) +(4.5e-09 4e-09 5e-10) +(4.75e-09 4e-09 5e-10) +(5e-09 4e-09 5e-10) +(4.5e-09 4.25e-09 5e-10) +(4.75e-09 4.25e-09 5e-10) +(5e-09 4.25e-09 5e-10) +(4.5e-09 4.5e-09 5e-10) +(4.75e-09 4.5e-09 5e-10) +(5e-09 4.5e-09 5e-10) +(4.5e-09 2.5e-09 1e-09) +(4.75e-09 2.5e-09 1e-09) +(5e-09 2.5e-09 1e-09) +(4.5e-09 2.75e-09 1e-09) +(4.75e-09 2.75e-09 1e-09) +(5e-09 2.75e-09 1e-09) +(4.5e-09 3e-09 1e-09) +(4.75e-09 3e-09 1e-09) +(5e-09 3e-09 1e-09) +(4.5e-09 3.25e-09 1e-09) +(4.75e-09 3.25e-09 1e-09) +(5e-09 3.25e-09 1e-09) +(4.5e-09 3.5e-09 1e-09) +(4.75e-09 3.5e-09 1e-09) +(5e-09 3.5e-09 1e-09) +(4.5e-09 3.75e-09 1e-09) +(4.75e-09 3.75e-09 1e-09) +(5e-09 3.75e-09 1e-09) +(4.5e-09 4e-09 1e-09) +(4.75e-09 4e-09 1e-09) +(5e-09 4e-09 1e-09) +(4.5e-09 4.25e-09 1e-09) +(4.75e-09 4.25e-09 1e-09) +(5e-09 4.25e-09 1e-09) +(4.5e-09 4.5e-09 1e-09) +(4.75e-09 4.5e-09 1e-09) +(5e-09 4.5e-09 1e-09) +(4.5e-09 2.5e-09 1.5e-09) +(4.75e-09 2.5e-09 1.5e-09) +(5e-09 2.5e-09 1.5e-09) +(4.5e-09 2.75e-09 1.5e-09) +(4.75e-09 2.75e-09 1.5e-09) +(5e-09 2.75e-09 1.5e-09) +(4.5e-09 3e-09 1.5e-09) +(4.75e-09 3e-09 1.5e-09) +(5e-09 3e-09 1.5e-09) +(4.5e-09 3.25e-09 1.5e-09) +(4.75e-09 3.25e-09 1.5e-09) +(5e-09 3.25e-09 1.5e-09) +(4.5e-09 3.5e-09 1.5e-09) +(4.75e-09 3.5e-09 1.5e-09) +(5e-09 3.5e-09 1.5e-09) +(4.5e-09 3.75e-09 1.5e-09) +(4.75e-09 3.75e-09 1.5e-09) +(5e-09 3.75e-09 1.5e-09) +(4.5e-09 4e-09 1.5e-09) +(4.75e-09 4e-09 1.5e-09) +(5e-09 4e-09 1.5e-09) +(4.5e-09 4.25e-09 1.5e-09) +(4.75e-09 4.25e-09 1.5e-09) +(5e-09 4.25e-09 1.5e-09) +(4.5e-09 4.5e-09 1.5e-09) +(4.75e-09 4.5e-09 1.5e-09) +(5e-09 4.5e-09 1.5e-09) +(4.5e-09 2.5e-09 2e-09) +(4.75e-09 2.5e-09 2e-09) +(5e-09 2.5e-09 2e-09) +(4.5e-09 2.75e-09 2e-09) +(4.75e-09 2.75e-09 2e-09) +(5e-09 2.75e-09 2e-09) +(4.5e-09 3e-09 2e-09) +(4.75e-09 3e-09 2e-09) +(5e-09 3e-09 2e-09) +(4.5e-09 3.25e-09 2e-09) +(4.75e-09 3.25e-09 2e-09) +(5e-09 3.25e-09 2e-09) +(4.5e-09 3.5e-09 2e-09) +(4.75e-09 3.5e-09 2e-09) +(5e-09 3.5e-09 2e-09) +(4.5e-09 3.75e-09 2e-09) +(4.75e-09 3.75e-09 2e-09) +(5e-09 3.75e-09 2e-09) +(4.5e-09 4e-09 2e-09) +(4.75e-09 4e-09 2e-09) +(5e-09 4e-09 2e-09) +(4.5e-09 4.25e-09 2e-09) +(4.75e-09 4.25e-09 2e-09) +(5e-09 4.25e-09 2e-09) +(4.5e-09 4.5e-09 2e-09) +(4.75e-09 4.5e-09 2e-09) +(5e-09 4.5e-09 2e-09) +(4.5e-09 2.5e-09 2.5e-09) +(4.75e-09 2.5e-09 2.5e-09) +(5e-09 2.5e-09 2.5e-09) +(4.5e-09 2.75e-09 2.5e-09) +(4.75e-09 2.75e-09 2.5e-09) +(5e-09 2.75e-09 2.5e-09) +(4.5e-09 3e-09 2.5e-09) +(4.75e-09 3e-09 2.5e-09) +(5e-09 3e-09 2.5e-09) +(4.5e-09 3.25e-09 2.5e-09) +(4.75e-09 3.25e-09 2.5e-09) +(5e-09 3.25e-09 2.5e-09) +(4.5e-09 3.5e-09 2.5e-09) +(4.75e-09 3.5e-09 2.5e-09) +(5e-09 3.5e-09 2.5e-09) +(4.5e-09 3.75e-09 2.5e-09) +(4.75e-09 3.75e-09 2.5e-09) +(5e-09 3.75e-09 2.5e-09) +(4.5e-09 4e-09 2.5e-09) +(4.75e-09 4e-09 2.5e-09) +(5e-09 4e-09 2.5e-09) +(4.5e-09 4.25e-09 2.5e-09) +(4.75e-09 4.25e-09 2.5e-09) +(5e-09 4.25e-09 2.5e-09) +(4.5e-09 4.5e-09 2.5e-09) +(4.75e-09 4.5e-09 2.5e-09) +(5e-09 4.5e-09 2.5e-09) +(4.5e-09 2.5e-09 3e-09) +(4.75e-09 2.5e-09 3e-09) +(5e-09 2.5e-09 3e-09) +(4.5e-09 2.75e-09 3e-09) +(4.75e-09 2.75e-09 3e-09) +(5e-09 2.75e-09 3e-09) +(4.5e-09 3e-09 3e-09) +(4.75e-09 3e-09 3e-09) +(5e-09 3e-09 3e-09) +(4.5e-09 3.25e-09 3e-09) +(4.75e-09 3.25e-09 3e-09) +(5e-09 3.25e-09 3e-09) +(4.5e-09 3.5e-09 3e-09) +(4.75e-09 3.5e-09 3e-09) +(5e-09 3.5e-09 3e-09) +(4.5e-09 3.75e-09 3e-09) +(4.75e-09 3.75e-09 3e-09) +(5e-09 3.75e-09 3e-09) +(4.5e-09 4e-09 3e-09) +(4.75e-09 4e-09 3e-09) +(5e-09 4e-09 3e-09) +(4.5e-09 4.25e-09 3e-09) +(4.75e-09 4.25e-09 3e-09) +(5e-09 4.25e-09 3e-09) +(4.5e-09 4.5e-09 3e-09) +(4.75e-09 4.5e-09 3e-09) +(5e-09 4.5e-09 3e-09) +(5.305555556e-09 2.25e-09 0) +(5.611111111e-09 2.25e-09 0) +(5.916666667e-09 2.25e-09 0) +(6.222222222e-09 2.25e-09 0) +(6.527777778e-09 2.25e-09 0) +(6.833333333e-09 2.25e-09 0) +(7.138888889e-09 2.25e-09 0) +(7.444444444e-09 2.25e-09 0) +(7.75e-09 2.25e-09 0) +(5.305555556e-09 2.5e-09 0) +(5.611111111e-09 2.5e-09 0) +(5.916666667e-09 2.5e-09 0) +(6.222222222e-09 2.5e-09 0) +(6.527777778e-09 2.5e-09 0) +(6.833333333e-09 2.5e-09 0) +(7.138888889e-09 2.5e-09 0) +(7.444444444e-09 2.5e-09 0) +(7.75e-09 2.5e-09 0) +(5.305555556e-09 2.75e-09 0) +(5.611111111e-09 2.75e-09 0) +(5.916666667e-09 2.75e-09 0) +(6.222222222e-09 2.75e-09 0) +(6.527777778e-09 2.75e-09 0) +(6.833333333e-09 2.75e-09 0) +(7.138888889e-09 2.75e-09 0) +(7.444444444e-09 2.75e-09 0) +(7.75e-09 2.75e-09 0) +(5.305555556e-09 3e-09 0) +(5.611111111e-09 3e-09 0) +(5.916666667e-09 3e-09 0) +(6.222222222e-09 3e-09 0) +(6.527777778e-09 3e-09 0) +(6.833333333e-09 3e-09 0) +(7.138888889e-09 3e-09 0) +(7.444444444e-09 3e-09 0) +(7.75e-09 3e-09 0) +(5.305555556e-09 3.25e-09 0) +(5.611111111e-09 3.25e-09 0) +(5.916666667e-09 3.25e-09 0) +(6.222222222e-09 3.25e-09 0) +(6.527777778e-09 3.25e-09 0) +(6.833333333e-09 3.25e-09 0) +(7.138888889e-09 3.25e-09 0) +(7.444444444e-09 3.25e-09 0) +(7.75e-09 3.25e-09 0) +(5.305555556e-09 3.5e-09 0) +(5.611111111e-09 3.5e-09 0) +(5.916666667e-09 3.5e-09 0) +(6.222222222e-09 3.5e-09 0) +(6.527777778e-09 3.5e-09 0) +(6.833333333e-09 3.5e-09 0) +(7.138888889e-09 3.5e-09 0) +(7.444444444e-09 3.5e-09 0) +(7.75e-09 3.5e-09 0) +(5.305555556e-09 3.75e-09 0) +(5.611111111e-09 3.75e-09 0) +(5.916666667e-09 3.75e-09 0) +(6.222222222e-09 3.75e-09 0) +(6.527777778e-09 3.75e-09 0) +(6.833333333e-09 3.75e-09 0) +(7.138888889e-09 3.75e-09 0) +(7.444444444e-09 3.75e-09 0) +(7.75e-09 3.75e-09 0) +(5.305555556e-09 4e-09 0) +(5.611111111e-09 4e-09 0) +(5.916666667e-09 4e-09 0) +(6.222222222e-09 4e-09 0) +(6.527777778e-09 4e-09 0) +(6.833333333e-09 4e-09 0) +(7.138888889e-09 4e-09 0) +(7.444444444e-09 4e-09 0) +(7.75e-09 4e-09 0) +(5.305555556e-09 4.25e-09 0) +(5.611111111e-09 4.25e-09 0) +(5.916666667e-09 4.25e-09 0) +(6.222222222e-09 4.25e-09 0) +(6.527777778e-09 4.25e-09 0) +(6.833333333e-09 4.25e-09 0) +(7.138888889e-09 4.25e-09 0) +(7.444444444e-09 4.25e-09 0) +(7.75e-09 4.25e-09 0) +(5.305555556e-09 4.5e-09 0) +(5.611111111e-09 4.5e-09 0) +(5.916666667e-09 4.5e-09 0) +(6.222222222e-09 4.5e-09 0) +(6.527777778e-09 4.5e-09 0) +(6.833333333e-09 4.5e-09 0) +(7.138888889e-09 4.5e-09 0) +(7.444444444e-09 4.5e-09 0) +(7.75e-09 4.5e-09 0) +(5.305555556e-09 2.25e-09 5e-10) +(5.611111111e-09 2.25e-09 5e-10) +(5.916666667e-09 2.25e-09 5e-10) +(6.222222222e-09 2.25e-09 5e-10) +(6.527777778e-09 2.25e-09 5e-10) +(6.833333333e-09 2.25e-09 5e-10) +(7.138888889e-09 2.25e-09 5e-10) +(7.444444444e-09 2.25e-09 5e-10) +(7.75e-09 2.25e-09 5e-10) +(5.305555556e-09 2.5e-09 5e-10) +(5.611111111e-09 2.5e-09 5e-10) +(5.916666667e-09 2.5e-09 5e-10) +(6.222222222e-09 2.5e-09 5e-10) +(6.527777778e-09 2.5e-09 5e-10) +(6.833333333e-09 2.5e-09 5e-10) +(7.138888889e-09 2.5e-09 5e-10) +(7.444444444e-09 2.5e-09 5e-10) +(7.75e-09 2.5e-09 5e-10) +(5.305555556e-09 2.75e-09 5e-10) +(5.611111111e-09 2.75e-09 5e-10) +(5.916666667e-09 2.75e-09 5e-10) +(6.222222222e-09 2.75e-09 5e-10) +(6.527777778e-09 2.75e-09 5e-10) +(6.833333333e-09 2.75e-09 5e-10) +(7.138888889e-09 2.75e-09 5e-10) +(7.444444444e-09 2.75e-09 5e-10) +(7.75e-09 2.75e-09 5e-10) +(5.305555556e-09 3e-09 5e-10) +(5.611111111e-09 3e-09 5e-10) +(5.916666667e-09 3e-09 5e-10) +(6.222222222e-09 3e-09 5e-10) +(6.527777778e-09 3e-09 5e-10) +(6.833333333e-09 3e-09 5e-10) +(7.138888889e-09 3e-09 5e-10) +(7.444444444e-09 3e-09 5e-10) +(7.75e-09 3e-09 5e-10) +(5.305555556e-09 3.25e-09 5e-10) +(5.611111111e-09 3.25e-09 5e-10) +(5.916666667e-09 3.25e-09 5e-10) +(6.222222222e-09 3.25e-09 5e-10) +(6.527777778e-09 3.25e-09 5e-10) +(6.833333333e-09 3.25e-09 5e-10) +(7.138888889e-09 3.25e-09 5e-10) +(7.444444444e-09 3.25e-09 5e-10) +(7.75e-09 3.25e-09 5e-10) +(5.305555556e-09 3.5e-09 5e-10) +(5.611111111e-09 3.5e-09 5e-10) +(5.916666667e-09 3.5e-09 5e-10) +(6.222222222e-09 3.5e-09 5e-10) +(6.527777778e-09 3.5e-09 5e-10) +(6.833333333e-09 3.5e-09 5e-10) +(7.138888889e-09 3.5e-09 5e-10) +(7.444444444e-09 3.5e-09 5e-10) +(7.75e-09 3.5e-09 5e-10) +(5.305555556e-09 3.75e-09 5e-10) +(5.611111111e-09 3.75e-09 5e-10) +(5.916666667e-09 3.75e-09 5e-10) +(6.222222222e-09 3.75e-09 5e-10) +(6.527777778e-09 3.75e-09 5e-10) +(6.833333333e-09 3.75e-09 5e-10) +(7.138888889e-09 3.75e-09 5e-10) +(7.444444444e-09 3.75e-09 5e-10) +(7.75e-09 3.75e-09 5e-10) +(5.305555556e-09 4e-09 5e-10) +(5.611111111e-09 4e-09 5e-10) +(5.916666667e-09 4e-09 5e-10) +(6.222222222e-09 4e-09 5e-10) +(6.527777778e-09 4e-09 5e-10) +(6.833333333e-09 4e-09 5e-10) +(7.138888889e-09 4e-09 5e-10) +(7.444444444e-09 4e-09 5e-10) +(7.75e-09 4e-09 5e-10) +(5.305555556e-09 4.25e-09 5e-10) +(5.611111111e-09 4.25e-09 5e-10) +(5.916666667e-09 4.25e-09 5e-10) +(6.222222222e-09 4.25e-09 5e-10) +(6.527777778e-09 4.25e-09 5e-10) +(6.833333333e-09 4.25e-09 5e-10) +(7.138888889e-09 4.25e-09 5e-10) +(7.444444444e-09 4.25e-09 5e-10) +(7.75e-09 4.25e-09 5e-10) +(5.305555556e-09 4.5e-09 5e-10) +(5.611111111e-09 4.5e-09 5e-10) +(5.916666667e-09 4.5e-09 5e-10) +(6.222222222e-09 4.5e-09 5e-10) +(6.527777778e-09 4.5e-09 5e-10) +(6.833333333e-09 4.5e-09 5e-10) +(7.138888889e-09 4.5e-09 5e-10) +(7.444444444e-09 4.5e-09 5e-10) +(7.75e-09 4.5e-09 5e-10) +(5.305555556e-09 2.25e-09 1e-09) +(5.611111111e-09 2.25e-09 1e-09) +(5.916666667e-09 2.25e-09 1e-09) +(6.222222222e-09 2.25e-09 1e-09) +(6.527777778e-09 2.25e-09 1e-09) +(6.833333333e-09 2.25e-09 1e-09) +(7.138888889e-09 2.25e-09 1e-09) +(7.444444444e-09 2.25e-09 1e-09) +(7.75e-09 2.25e-09 1e-09) +(5.305555556e-09 2.5e-09 1e-09) +(5.611111111e-09 2.5e-09 1e-09) +(5.916666667e-09 2.5e-09 1e-09) +(6.222222222e-09 2.5e-09 1e-09) +(6.527777778e-09 2.5e-09 1e-09) +(6.833333333e-09 2.5e-09 1e-09) +(7.138888889e-09 2.5e-09 1e-09) +(7.444444444e-09 2.5e-09 1e-09) +(7.75e-09 2.5e-09 1e-09) +(5.305555556e-09 2.75e-09 1e-09) +(5.611111111e-09 2.75e-09 1e-09) +(5.916666667e-09 2.75e-09 1e-09) +(6.222222222e-09 2.75e-09 1e-09) +(6.527777778e-09 2.75e-09 1e-09) +(6.833333333e-09 2.75e-09 1e-09) +(7.138888889e-09 2.75e-09 1e-09) +(7.444444444e-09 2.75e-09 1e-09) +(7.75e-09 2.75e-09 1e-09) +(5.305555556e-09 3e-09 1e-09) +(5.611111111e-09 3e-09 1e-09) +(5.916666667e-09 3e-09 1e-09) +(6.222222222e-09 3e-09 1e-09) +(6.527777778e-09 3e-09 1e-09) +(6.833333333e-09 3e-09 1e-09) +(7.138888889e-09 3e-09 1e-09) +(7.444444444e-09 3e-09 1e-09) +(7.75e-09 3e-09 1e-09) +(5.305555556e-09 3.25e-09 1e-09) +(5.611111111e-09 3.25e-09 1e-09) +(5.916666667e-09 3.25e-09 1e-09) +(6.222222222e-09 3.25e-09 1e-09) +(6.527777778e-09 3.25e-09 1e-09) +(6.833333333e-09 3.25e-09 1e-09) +(7.138888889e-09 3.25e-09 1e-09) +(7.444444444e-09 3.25e-09 1e-09) +(7.75e-09 3.25e-09 1e-09) +(5.305555556e-09 3.5e-09 1e-09) +(5.611111111e-09 3.5e-09 1e-09) +(5.916666667e-09 3.5e-09 1e-09) +(6.222222222e-09 3.5e-09 1e-09) +(6.527777778e-09 3.5e-09 1e-09) +(6.833333333e-09 3.5e-09 1e-09) +(7.138888889e-09 3.5e-09 1e-09) +(7.444444444e-09 3.5e-09 1e-09) +(7.75e-09 3.5e-09 1e-09) +(5.305555556e-09 3.75e-09 1e-09) +(5.611111111e-09 3.75e-09 1e-09) +(5.916666667e-09 3.75e-09 1e-09) +(6.222222222e-09 3.75e-09 1e-09) +(6.527777778e-09 3.75e-09 1e-09) +(6.833333333e-09 3.75e-09 1e-09) +(7.138888889e-09 3.75e-09 1e-09) +(7.444444444e-09 3.75e-09 1e-09) +(7.75e-09 3.75e-09 1e-09) +(5.305555556e-09 4e-09 1e-09) +(5.611111111e-09 4e-09 1e-09) +(5.916666667e-09 4e-09 1e-09) +(6.222222222e-09 4e-09 1e-09) +(6.527777778e-09 4e-09 1e-09) +(6.833333333e-09 4e-09 1e-09) +(7.138888889e-09 4e-09 1e-09) +(7.444444444e-09 4e-09 1e-09) +(7.75e-09 4e-09 1e-09) +(5.305555556e-09 4.25e-09 1e-09) +(5.611111111e-09 4.25e-09 1e-09) +(5.916666667e-09 4.25e-09 1e-09) +(6.222222222e-09 4.25e-09 1e-09) +(6.527777778e-09 4.25e-09 1e-09) +(6.833333333e-09 4.25e-09 1e-09) +(7.138888889e-09 4.25e-09 1e-09) +(7.444444444e-09 4.25e-09 1e-09) +(7.75e-09 4.25e-09 1e-09) +(5.305555556e-09 4.5e-09 1e-09) +(5.611111111e-09 4.5e-09 1e-09) +(5.916666667e-09 4.5e-09 1e-09) +(6.222222222e-09 4.5e-09 1e-09) +(6.527777778e-09 4.5e-09 1e-09) +(6.833333333e-09 4.5e-09 1e-09) +(7.138888889e-09 4.5e-09 1e-09) +(7.444444444e-09 4.5e-09 1e-09) +(7.75e-09 4.5e-09 1e-09) +(5.305555556e-09 2.25e-09 1.5e-09) +(5.611111111e-09 2.25e-09 1.5e-09) +(5.916666667e-09 2.25e-09 1.5e-09) +(6.222222222e-09 2.25e-09 1.5e-09) +(6.527777778e-09 2.25e-09 1.5e-09) +(6.833333333e-09 2.25e-09 1.5e-09) +(7.138888889e-09 2.25e-09 1.5e-09) +(7.444444444e-09 2.25e-09 1.5e-09) +(7.75e-09 2.25e-09 1.5e-09) +(5.305555556e-09 2.5e-09 1.5e-09) +(5.611111111e-09 2.5e-09 1.5e-09) +(5.916666667e-09 2.5e-09 1.5e-09) +(6.222222222e-09 2.5e-09 1.5e-09) +(6.527777778e-09 2.5e-09 1.5e-09) +(6.833333333e-09 2.5e-09 1.5e-09) +(7.138888889e-09 2.5e-09 1.5e-09) +(7.444444444e-09 2.5e-09 1.5e-09) +(7.75e-09 2.5e-09 1.5e-09) +(5.305555556e-09 2.75e-09 1.5e-09) +(5.611111111e-09 2.75e-09 1.5e-09) +(5.916666667e-09 2.75e-09 1.5e-09) +(6.222222222e-09 2.75e-09 1.5e-09) +(6.527777778e-09 2.75e-09 1.5e-09) +(6.833333333e-09 2.75e-09 1.5e-09) +(7.138888889e-09 2.75e-09 1.5e-09) +(7.444444444e-09 2.75e-09 1.5e-09) +(7.75e-09 2.75e-09 1.5e-09) +(5.305555556e-09 3e-09 1.5e-09) +(5.611111111e-09 3e-09 1.5e-09) +(5.916666667e-09 3e-09 1.5e-09) +(6.222222222e-09 3e-09 1.5e-09) +(6.527777778e-09 3e-09 1.5e-09) +(6.833333333e-09 3e-09 1.5e-09) +(7.138888889e-09 3e-09 1.5e-09) +(7.444444444e-09 3e-09 1.5e-09) +(7.75e-09 3e-09 1.5e-09) +(5.305555556e-09 3.25e-09 1.5e-09) +(5.611111111e-09 3.25e-09 1.5e-09) +(5.916666667e-09 3.25e-09 1.5e-09) +(6.222222222e-09 3.25e-09 1.5e-09) +(6.527777778e-09 3.25e-09 1.5e-09) +(6.833333333e-09 3.25e-09 1.5e-09) +(7.138888889e-09 3.25e-09 1.5e-09) +(7.444444444e-09 3.25e-09 1.5e-09) +(7.75e-09 3.25e-09 1.5e-09) +(5.305555556e-09 3.5e-09 1.5e-09) +(5.611111111e-09 3.5e-09 1.5e-09) +(5.916666667e-09 3.5e-09 1.5e-09) +(6.222222222e-09 3.5e-09 1.5e-09) +(6.527777778e-09 3.5e-09 1.5e-09) +(6.833333333e-09 3.5e-09 1.5e-09) +(7.138888889e-09 3.5e-09 1.5e-09) +(7.444444444e-09 3.5e-09 1.5e-09) +(7.75e-09 3.5e-09 1.5e-09) +(5.305555556e-09 3.75e-09 1.5e-09) +(5.611111111e-09 3.75e-09 1.5e-09) +(5.916666667e-09 3.75e-09 1.5e-09) +(6.222222222e-09 3.75e-09 1.5e-09) +(6.527777778e-09 3.75e-09 1.5e-09) +(6.833333333e-09 3.75e-09 1.5e-09) +(7.138888889e-09 3.75e-09 1.5e-09) +(7.444444444e-09 3.75e-09 1.5e-09) +(7.75e-09 3.75e-09 1.5e-09) +(5.305555556e-09 4e-09 1.5e-09) +(5.611111111e-09 4e-09 1.5e-09) +(5.916666667e-09 4e-09 1.5e-09) +(6.222222222e-09 4e-09 1.5e-09) +(6.527777778e-09 4e-09 1.5e-09) +(6.833333333e-09 4e-09 1.5e-09) +(7.138888889e-09 4e-09 1.5e-09) +(7.444444444e-09 4e-09 1.5e-09) +(7.75e-09 4e-09 1.5e-09) +(5.305555556e-09 4.25e-09 1.5e-09) +(5.611111111e-09 4.25e-09 1.5e-09) +(5.916666667e-09 4.25e-09 1.5e-09) +(6.222222222e-09 4.25e-09 1.5e-09) +(6.527777778e-09 4.25e-09 1.5e-09) +(6.833333333e-09 4.25e-09 1.5e-09) +(7.138888889e-09 4.25e-09 1.5e-09) +(7.444444444e-09 4.25e-09 1.5e-09) +(7.75e-09 4.25e-09 1.5e-09) +(5.305555556e-09 4.5e-09 1.5e-09) +(5.611111111e-09 4.5e-09 1.5e-09) +(5.916666667e-09 4.5e-09 1.5e-09) +(6.222222222e-09 4.5e-09 1.5e-09) +(6.527777778e-09 4.5e-09 1.5e-09) +(6.833333333e-09 4.5e-09 1.5e-09) +(7.138888889e-09 4.5e-09 1.5e-09) +(7.444444444e-09 4.5e-09 1.5e-09) +(7.75e-09 4.5e-09 1.5e-09) +(5.305555556e-09 2.25e-09 2e-09) +(5.611111111e-09 2.25e-09 2e-09) +(5.916666667e-09 2.25e-09 2e-09) +(6.222222222e-09 2.25e-09 2e-09) +(6.527777778e-09 2.25e-09 2e-09) +(6.833333333e-09 2.25e-09 2e-09) +(7.138888889e-09 2.25e-09 2e-09) +(7.444444444e-09 2.25e-09 2e-09) +(7.75e-09 2.25e-09 2e-09) +(5.305555556e-09 2.5e-09 2e-09) +(5.611111111e-09 2.5e-09 2e-09) +(5.916666667e-09 2.5e-09 2e-09) +(6.222222222e-09 2.5e-09 2e-09) +(6.527777778e-09 2.5e-09 2e-09) +(6.833333333e-09 2.5e-09 2e-09) +(7.138888889e-09 2.5e-09 2e-09) +(7.444444444e-09 2.5e-09 2e-09) +(7.75e-09 2.5e-09 2e-09) +(5.305555556e-09 2.75e-09 2e-09) +(5.611111111e-09 2.75e-09 2e-09) +(5.916666667e-09 2.75e-09 2e-09) +(6.222222222e-09 2.75e-09 2e-09) +(6.527777778e-09 2.75e-09 2e-09) +(6.833333333e-09 2.75e-09 2e-09) +(7.138888889e-09 2.75e-09 2e-09) +(7.444444444e-09 2.75e-09 2e-09) +(7.75e-09 2.75e-09 2e-09) +(5.305555556e-09 3e-09 2e-09) +(5.611111111e-09 3e-09 2e-09) +(5.916666667e-09 3e-09 2e-09) +(6.222222222e-09 3e-09 2e-09) +(6.527777778e-09 3e-09 2e-09) +(6.833333333e-09 3e-09 2e-09) +(7.138888889e-09 3e-09 2e-09) +(7.444444444e-09 3e-09 2e-09) +(7.75e-09 3e-09 2e-09) +(5.305555556e-09 3.25e-09 2e-09) +(5.611111111e-09 3.25e-09 2e-09) +(5.916666667e-09 3.25e-09 2e-09) +(6.222222222e-09 3.25e-09 2e-09) +(6.527777778e-09 3.25e-09 2e-09) +(6.833333333e-09 3.25e-09 2e-09) +(7.138888889e-09 3.25e-09 2e-09) +(7.444444444e-09 3.25e-09 2e-09) +(7.75e-09 3.25e-09 2e-09) +(5.305555556e-09 3.5e-09 2e-09) +(5.611111111e-09 3.5e-09 2e-09) +(5.916666667e-09 3.5e-09 2e-09) +(6.222222222e-09 3.5e-09 2e-09) +(6.527777778e-09 3.5e-09 2e-09) +(6.833333333e-09 3.5e-09 2e-09) +(7.138888889e-09 3.5e-09 2e-09) +(7.444444444e-09 3.5e-09 2e-09) +(7.75e-09 3.5e-09 2e-09) +(5.305555556e-09 3.75e-09 2e-09) +(5.611111111e-09 3.75e-09 2e-09) +(5.916666667e-09 3.75e-09 2e-09) +(6.222222222e-09 3.75e-09 2e-09) +(6.527777778e-09 3.75e-09 2e-09) +(6.833333333e-09 3.75e-09 2e-09) +(7.138888889e-09 3.75e-09 2e-09) +(7.444444444e-09 3.75e-09 2e-09) +(7.75e-09 3.75e-09 2e-09) +(5.305555556e-09 4e-09 2e-09) +(5.611111111e-09 4e-09 2e-09) +(5.916666667e-09 4e-09 2e-09) +(6.222222222e-09 4e-09 2e-09) +(6.527777778e-09 4e-09 2e-09) +(6.833333333e-09 4e-09 2e-09) +(7.138888889e-09 4e-09 2e-09) +(7.444444444e-09 4e-09 2e-09) +(7.75e-09 4e-09 2e-09) +(5.305555556e-09 4.25e-09 2e-09) +(5.611111111e-09 4.25e-09 2e-09) +(5.916666667e-09 4.25e-09 2e-09) +(6.222222222e-09 4.25e-09 2e-09) +(6.527777778e-09 4.25e-09 2e-09) +(6.833333333e-09 4.25e-09 2e-09) +(7.138888889e-09 4.25e-09 2e-09) +(7.444444444e-09 4.25e-09 2e-09) +(7.75e-09 4.25e-09 2e-09) +(5.305555556e-09 4.5e-09 2e-09) +(5.611111111e-09 4.5e-09 2e-09) +(5.916666667e-09 4.5e-09 2e-09) +(6.222222222e-09 4.5e-09 2e-09) +(6.527777778e-09 4.5e-09 2e-09) +(6.833333333e-09 4.5e-09 2e-09) +(7.138888889e-09 4.5e-09 2e-09) +(7.444444444e-09 4.5e-09 2e-09) +(7.75e-09 4.5e-09 2e-09) +(5.305555556e-09 2.25e-09 2.5e-09) +(5.611111111e-09 2.25e-09 2.5e-09) +(5.916666667e-09 2.25e-09 2.5e-09) +(6.222222222e-09 2.25e-09 2.5e-09) +(6.527777778e-09 2.25e-09 2.5e-09) +(6.833333333e-09 2.25e-09 2.5e-09) +(7.138888889e-09 2.25e-09 2.5e-09) +(7.444444444e-09 2.25e-09 2.5e-09) +(7.75e-09 2.25e-09 2.5e-09) +(5.305555556e-09 2.5e-09 2.5e-09) +(5.611111111e-09 2.5e-09 2.5e-09) +(5.916666667e-09 2.5e-09 2.5e-09) +(6.222222222e-09 2.5e-09 2.5e-09) +(6.527777778e-09 2.5e-09 2.5e-09) +(6.833333333e-09 2.5e-09 2.5e-09) +(7.138888889e-09 2.5e-09 2.5e-09) +(7.444444444e-09 2.5e-09 2.5e-09) +(7.75e-09 2.5e-09 2.5e-09) +(5.305555556e-09 2.75e-09 2.5e-09) +(5.611111111e-09 2.75e-09 2.5e-09) +(5.916666667e-09 2.75e-09 2.5e-09) +(6.222222222e-09 2.75e-09 2.5e-09) +(6.527777778e-09 2.75e-09 2.5e-09) +(6.833333333e-09 2.75e-09 2.5e-09) +(7.138888889e-09 2.75e-09 2.5e-09) +(7.444444444e-09 2.75e-09 2.5e-09) +(7.75e-09 2.75e-09 2.5e-09) +(5.305555556e-09 3e-09 2.5e-09) +(5.611111111e-09 3e-09 2.5e-09) +(5.916666667e-09 3e-09 2.5e-09) +(6.222222222e-09 3e-09 2.5e-09) +(6.527777778e-09 3e-09 2.5e-09) +(6.833333333e-09 3e-09 2.5e-09) +(7.138888889e-09 3e-09 2.5e-09) +(7.444444444e-09 3e-09 2.5e-09) +(7.75e-09 3e-09 2.5e-09) +(5.305555556e-09 3.25e-09 2.5e-09) +(5.611111111e-09 3.25e-09 2.5e-09) +(5.916666667e-09 3.25e-09 2.5e-09) +(6.222222222e-09 3.25e-09 2.5e-09) +(6.527777778e-09 3.25e-09 2.5e-09) +(6.833333333e-09 3.25e-09 2.5e-09) +(7.138888889e-09 3.25e-09 2.5e-09) +(7.444444444e-09 3.25e-09 2.5e-09) +(7.75e-09 3.25e-09 2.5e-09) +(5.305555556e-09 3.5e-09 2.5e-09) +(5.611111111e-09 3.5e-09 2.5e-09) +(5.916666667e-09 3.5e-09 2.5e-09) +(6.222222222e-09 3.5e-09 2.5e-09) +(6.527777778e-09 3.5e-09 2.5e-09) +(6.833333333e-09 3.5e-09 2.5e-09) +(7.138888889e-09 3.5e-09 2.5e-09) +(7.444444444e-09 3.5e-09 2.5e-09) +(7.75e-09 3.5e-09 2.5e-09) +(5.305555556e-09 3.75e-09 2.5e-09) +(5.611111111e-09 3.75e-09 2.5e-09) +(5.916666667e-09 3.75e-09 2.5e-09) +(6.222222222e-09 3.75e-09 2.5e-09) +(6.527777778e-09 3.75e-09 2.5e-09) +(6.833333333e-09 3.75e-09 2.5e-09) +(7.138888889e-09 3.75e-09 2.5e-09) +(7.444444444e-09 3.75e-09 2.5e-09) +(7.75e-09 3.75e-09 2.5e-09) +(5.305555556e-09 4e-09 2.5e-09) +(5.611111111e-09 4e-09 2.5e-09) +(5.916666667e-09 4e-09 2.5e-09) +(6.222222222e-09 4e-09 2.5e-09) +(6.527777778e-09 4e-09 2.5e-09) +(6.833333333e-09 4e-09 2.5e-09) +(7.138888889e-09 4e-09 2.5e-09) +(7.444444444e-09 4e-09 2.5e-09) +(7.75e-09 4e-09 2.5e-09) +(5.305555556e-09 4.25e-09 2.5e-09) +(5.611111111e-09 4.25e-09 2.5e-09) +(5.916666667e-09 4.25e-09 2.5e-09) +(6.222222222e-09 4.25e-09 2.5e-09) +(6.527777778e-09 4.25e-09 2.5e-09) +(6.833333333e-09 4.25e-09 2.5e-09) +(7.138888889e-09 4.25e-09 2.5e-09) +(7.444444444e-09 4.25e-09 2.5e-09) +(7.75e-09 4.25e-09 2.5e-09) +(5.305555556e-09 4.5e-09 2.5e-09) +(5.611111111e-09 4.5e-09 2.5e-09) +(5.916666667e-09 4.5e-09 2.5e-09) +(6.222222222e-09 4.5e-09 2.5e-09) +(6.527777778e-09 4.5e-09 2.5e-09) +(6.833333333e-09 4.5e-09 2.5e-09) +(7.138888889e-09 4.5e-09 2.5e-09) +(7.444444444e-09 4.5e-09 2.5e-09) +(7.75e-09 4.5e-09 2.5e-09) +(5.305555556e-09 2.25e-09 3e-09) +(5.611111111e-09 2.25e-09 3e-09) +(5.916666667e-09 2.25e-09 3e-09) +(6.222222222e-09 2.25e-09 3e-09) +(6.527777778e-09 2.25e-09 3e-09) +(6.833333333e-09 2.25e-09 3e-09) +(7.138888889e-09 2.25e-09 3e-09) +(7.444444444e-09 2.25e-09 3e-09) +(7.75e-09 2.25e-09 3e-09) +(5.305555556e-09 2.5e-09 3e-09) +(5.611111111e-09 2.5e-09 3e-09) +(5.916666667e-09 2.5e-09 3e-09) +(6.222222222e-09 2.5e-09 3e-09) +(6.527777778e-09 2.5e-09 3e-09) +(6.833333333e-09 2.5e-09 3e-09) +(7.138888889e-09 2.5e-09 3e-09) +(7.444444444e-09 2.5e-09 3e-09) +(7.75e-09 2.5e-09 3e-09) +(5.305555556e-09 2.75e-09 3e-09) +(5.611111111e-09 2.75e-09 3e-09) +(5.916666667e-09 2.75e-09 3e-09) +(6.222222222e-09 2.75e-09 3e-09) +(6.527777778e-09 2.75e-09 3e-09) +(6.833333333e-09 2.75e-09 3e-09) +(7.138888889e-09 2.75e-09 3e-09) +(7.444444444e-09 2.75e-09 3e-09) +(7.75e-09 2.75e-09 3e-09) +(5.305555556e-09 3e-09 3e-09) +(5.611111111e-09 3e-09 3e-09) +(5.916666667e-09 3e-09 3e-09) +(6.222222222e-09 3e-09 3e-09) +(6.527777778e-09 3e-09 3e-09) +(6.833333333e-09 3e-09 3e-09) +(7.138888889e-09 3e-09 3e-09) +(7.444444444e-09 3e-09 3e-09) +(7.75e-09 3e-09 3e-09) +(5.305555556e-09 3.25e-09 3e-09) +(5.611111111e-09 3.25e-09 3e-09) +(5.916666667e-09 3.25e-09 3e-09) +(6.222222222e-09 3.25e-09 3e-09) +(6.527777778e-09 3.25e-09 3e-09) +(6.833333333e-09 3.25e-09 3e-09) +(7.138888889e-09 3.25e-09 3e-09) +(7.444444444e-09 3.25e-09 3e-09) +(7.75e-09 3.25e-09 3e-09) +(5.305555556e-09 3.5e-09 3e-09) +(5.611111111e-09 3.5e-09 3e-09) +(5.916666667e-09 3.5e-09 3e-09) +(6.222222222e-09 3.5e-09 3e-09) +(6.527777778e-09 3.5e-09 3e-09) +(6.833333333e-09 3.5e-09 3e-09) +(7.138888889e-09 3.5e-09 3e-09) +(7.444444444e-09 3.5e-09 3e-09) +(7.75e-09 3.5e-09 3e-09) +(5.305555556e-09 3.75e-09 3e-09) +(5.611111111e-09 3.75e-09 3e-09) +(5.916666667e-09 3.75e-09 3e-09) +(6.222222222e-09 3.75e-09 3e-09) +(6.527777778e-09 3.75e-09 3e-09) +(6.833333333e-09 3.75e-09 3e-09) +(7.138888889e-09 3.75e-09 3e-09) +(7.444444444e-09 3.75e-09 3e-09) +(7.75e-09 3.75e-09 3e-09) +(5.305555556e-09 4e-09 3e-09) +(5.611111111e-09 4e-09 3e-09) +(5.916666667e-09 4e-09 3e-09) +(6.222222222e-09 4e-09 3e-09) +(6.527777778e-09 4e-09 3e-09) +(6.833333333e-09 4e-09 3e-09) +(7.138888889e-09 4e-09 3e-09) +(7.444444444e-09 4e-09 3e-09) +(7.75e-09 4e-09 3e-09) +(5.305555556e-09 4.25e-09 3e-09) +(5.611111111e-09 4.25e-09 3e-09) +(5.916666667e-09 4.25e-09 3e-09) +(6.222222222e-09 4.25e-09 3e-09) +(6.527777778e-09 4.25e-09 3e-09) +(6.833333333e-09 4.25e-09 3e-09) +(7.138888889e-09 4.25e-09 3e-09) +(7.444444444e-09 4.25e-09 3e-09) +(7.75e-09 4.25e-09 3e-09) +(5.305555556e-09 4.5e-09 3e-09) +(5.611111111e-09 4.5e-09 3e-09) +(5.916666667e-09 4.5e-09 3e-09) +(6.222222222e-09 4.5e-09 3e-09) +(6.527777778e-09 4.5e-09 3e-09) +(6.833333333e-09 4.5e-09 3e-09) +(7.138888889e-09 4.5e-09 3e-09) +(7.444444444e-09 4.5e-09 3e-09) +(7.75e-09 4.5e-09 3e-09) +(5e-09 4.75e-09 0) +(5.305555556e-09 4.75e-09 0) +(5.611111111e-09 4.75e-09 0) +(5.916666667e-09 4.75e-09 0) +(6.222222222e-09 4.75e-09 0) +(6.527777778e-09 4.75e-09 0) +(6.833333333e-09 4.75e-09 0) +(7.138888889e-09 4.75e-09 0) +(7.444444444e-09 4.75e-09 0) +(7.75e-09 4.75e-09 0) +(5e-09 5e-09 0) +(5.305555556e-09 5e-09 0) +(5.611111111e-09 5e-09 0) +(5.916666667e-09 5e-09 0) +(6.222222222e-09 5e-09 0) +(6.527777778e-09 5e-09 0) +(6.833333333e-09 5e-09 0) +(7.138888889e-09 5e-09 0) +(7.444444444e-09 5e-09 0) +(7.75e-09 5e-09 0) +(5e-09 5.25e-09 0) +(5.305555556e-09 5.25e-09 0) +(5.611111111e-09 5.25e-09 0) +(5.916666667e-09 5.25e-09 0) +(6.222222222e-09 5.25e-09 0) +(6.527777778e-09 5.25e-09 0) +(6.833333333e-09 5.25e-09 0) +(7.138888889e-09 5.25e-09 0) +(7.444444444e-09 5.25e-09 0) +(7.75e-09 5.25e-09 0) +(5e-09 4.75e-09 5e-10) +(5.305555556e-09 4.75e-09 5e-10) +(5.611111111e-09 4.75e-09 5e-10) +(5.916666667e-09 4.75e-09 5e-10) +(6.222222222e-09 4.75e-09 5e-10) +(6.527777778e-09 4.75e-09 5e-10) +(6.833333333e-09 4.75e-09 5e-10) +(7.138888889e-09 4.75e-09 5e-10) +(7.444444444e-09 4.75e-09 5e-10) +(7.75e-09 4.75e-09 5e-10) +(5e-09 5e-09 5e-10) +(5.305555556e-09 5e-09 5e-10) +(5.611111111e-09 5e-09 5e-10) +(5.916666667e-09 5e-09 5e-10) +(6.222222222e-09 5e-09 5e-10) +(6.527777778e-09 5e-09 5e-10) +(6.833333333e-09 5e-09 5e-10) +(7.138888889e-09 5e-09 5e-10) +(7.444444444e-09 5e-09 5e-10) +(7.75e-09 5e-09 5e-10) +(5e-09 5.25e-09 5e-10) +(5.305555556e-09 5.25e-09 5e-10) +(5.611111111e-09 5.25e-09 5e-10) +(5.916666667e-09 5.25e-09 5e-10) +(6.222222222e-09 5.25e-09 5e-10) +(6.527777778e-09 5.25e-09 5e-10) +(6.833333333e-09 5.25e-09 5e-10) +(7.138888889e-09 5.25e-09 5e-10) +(7.444444444e-09 5.25e-09 5e-10) +(7.75e-09 5.25e-09 5e-10) +(5e-09 4.75e-09 1e-09) +(5.305555556e-09 4.75e-09 1e-09) +(5.611111111e-09 4.75e-09 1e-09) +(5.916666667e-09 4.75e-09 1e-09) +(6.222222222e-09 4.75e-09 1e-09) +(6.527777778e-09 4.75e-09 1e-09) +(6.833333333e-09 4.75e-09 1e-09) +(7.138888889e-09 4.75e-09 1e-09) +(7.444444444e-09 4.75e-09 1e-09) +(7.75e-09 4.75e-09 1e-09) +(5e-09 5e-09 1e-09) +(5.305555556e-09 5e-09 1e-09) +(5.611111111e-09 5e-09 1e-09) +(5.916666667e-09 5e-09 1e-09) +(6.222222222e-09 5e-09 1e-09) +(6.527777778e-09 5e-09 1e-09) +(6.833333333e-09 5e-09 1e-09) +(7.138888889e-09 5e-09 1e-09) +(7.444444444e-09 5e-09 1e-09) +(7.75e-09 5e-09 1e-09) +(5e-09 5.25e-09 1e-09) +(5.305555556e-09 5.25e-09 1e-09) +(5.611111111e-09 5.25e-09 1e-09) +(5.916666667e-09 5.25e-09 1e-09) +(6.222222222e-09 5.25e-09 1e-09) +(6.527777778e-09 5.25e-09 1e-09) +(6.833333333e-09 5.25e-09 1e-09) +(7.138888889e-09 5.25e-09 1e-09) +(7.444444444e-09 5.25e-09 1e-09) +(7.75e-09 5.25e-09 1e-09) +(5e-09 4.75e-09 1.5e-09) +(5.305555556e-09 4.75e-09 1.5e-09) +(5.611111111e-09 4.75e-09 1.5e-09) +(5.916666667e-09 4.75e-09 1.5e-09) +(6.222222222e-09 4.75e-09 1.5e-09) +(6.527777778e-09 4.75e-09 1.5e-09) +(6.833333333e-09 4.75e-09 1.5e-09) +(7.138888889e-09 4.75e-09 1.5e-09) +(7.444444444e-09 4.75e-09 1.5e-09) +(7.75e-09 4.75e-09 1.5e-09) +(5e-09 5e-09 1.5e-09) +(5.305555556e-09 5e-09 1.5e-09) +(5.611111111e-09 5e-09 1.5e-09) +(5.916666667e-09 5e-09 1.5e-09) +(6.222222222e-09 5e-09 1.5e-09) +(6.527777778e-09 5e-09 1.5e-09) +(6.833333333e-09 5e-09 1.5e-09) +(7.138888889e-09 5e-09 1.5e-09) +(7.444444444e-09 5e-09 1.5e-09) +(7.75e-09 5e-09 1.5e-09) +(5e-09 5.25e-09 1.5e-09) +(5.305555556e-09 5.25e-09 1.5e-09) +(5.611111111e-09 5.25e-09 1.5e-09) +(5.916666667e-09 5.25e-09 1.5e-09) +(6.222222222e-09 5.25e-09 1.5e-09) +(6.527777778e-09 5.25e-09 1.5e-09) +(6.833333333e-09 5.25e-09 1.5e-09) +(7.138888889e-09 5.25e-09 1.5e-09) +(7.444444444e-09 5.25e-09 1.5e-09) +(7.75e-09 5.25e-09 1.5e-09) +(5e-09 4.75e-09 2e-09) +(5.305555556e-09 4.75e-09 2e-09) +(5.611111111e-09 4.75e-09 2e-09) +(5.916666667e-09 4.75e-09 2e-09) +(6.222222222e-09 4.75e-09 2e-09) +(6.527777778e-09 4.75e-09 2e-09) +(6.833333333e-09 4.75e-09 2e-09) +(7.138888889e-09 4.75e-09 2e-09) +(7.444444444e-09 4.75e-09 2e-09) +(7.75e-09 4.75e-09 2e-09) +(5e-09 5e-09 2e-09) +(5.305555556e-09 5e-09 2e-09) +(5.611111111e-09 5e-09 2e-09) +(5.916666667e-09 5e-09 2e-09) +(6.222222222e-09 5e-09 2e-09) +(6.527777778e-09 5e-09 2e-09) +(6.833333333e-09 5e-09 2e-09) +(7.138888889e-09 5e-09 2e-09) +(7.444444444e-09 5e-09 2e-09) +(7.75e-09 5e-09 2e-09) +(5e-09 5.25e-09 2e-09) +(5.305555556e-09 5.25e-09 2e-09) +(5.611111111e-09 5.25e-09 2e-09) +(5.916666667e-09 5.25e-09 2e-09) +(6.222222222e-09 5.25e-09 2e-09) +(6.527777778e-09 5.25e-09 2e-09) +(6.833333333e-09 5.25e-09 2e-09) +(7.138888889e-09 5.25e-09 2e-09) +(7.444444444e-09 5.25e-09 2e-09) +(7.75e-09 5.25e-09 2e-09) +(5e-09 4.75e-09 2.5e-09) +(5.305555556e-09 4.75e-09 2.5e-09) +(5.611111111e-09 4.75e-09 2.5e-09) +(5.916666667e-09 4.75e-09 2.5e-09) +(6.222222222e-09 4.75e-09 2.5e-09) +(6.527777778e-09 4.75e-09 2.5e-09) +(6.833333333e-09 4.75e-09 2.5e-09) +(7.138888889e-09 4.75e-09 2.5e-09) +(7.444444444e-09 4.75e-09 2.5e-09) +(7.75e-09 4.75e-09 2.5e-09) +(5e-09 5e-09 2.5e-09) +(5.305555556e-09 5e-09 2.5e-09) +(5.611111111e-09 5e-09 2.5e-09) +(5.916666667e-09 5e-09 2.5e-09) +(6.222222222e-09 5e-09 2.5e-09) +(6.527777778e-09 5e-09 2.5e-09) +(6.833333333e-09 5e-09 2.5e-09) +(7.138888889e-09 5e-09 2.5e-09) +(7.444444444e-09 5e-09 2.5e-09) +(7.75e-09 5e-09 2.5e-09) +(5e-09 5.25e-09 2.5e-09) +(5.305555556e-09 5.25e-09 2.5e-09) +(5.611111111e-09 5.25e-09 2.5e-09) +(5.916666667e-09 5.25e-09 2.5e-09) +(6.222222222e-09 5.25e-09 2.5e-09) +(6.527777778e-09 5.25e-09 2.5e-09) +(6.833333333e-09 5.25e-09 2.5e-09) +(7.138888889e-09 5.25e-09 2.5e-09) +(7.444444444e-09 5.25e-09 2.5e-09) +(7.75e-09 5.25e-09 2.5e-09) +(5e-09 4.75e-09 3e-09) +(5.305555556e-09 4.75e-09 3e-09) +(5.611111111e-09 4.75e-09 3e-09) +(5.916666667e-09 4.75e-09 3e-09) +(6.222222222e-09 4.75e-09 3e-09) +(6.527777778e-09 4.75e-09 3e-09) +(6.833333333e-09 4.75e-09 3e-09) +(7.138888889e-09 4.75e-09 3e-09) +(7.444444444e-09 4.75e-09 3e-09) +(7.75e-09 4.75e-09 3e-09) +(5e-09 5e-09 3e-09) +(5.305555556e-09 5e-09 3e-09) +(5.611111111e-09 5e-09 3e-09) +(5.916666667e-09 5e-09 3e-09) +(6.222222222e-09 5e-09 3e-09) +(6.527777778e-09 5e-09 3e-09) +(6.833333333e-09 5e-09 3e-09) +(7.138888889e-09 5e-09 3e-09) +(7.444444444e-09 5e-09 3e-09) +(7.75e-09 5e-09 3e-09) +(5e-09 5.25e-09 3e-09) +(5.305555556e-09 5.25e-09 3e-09) +(5.611111111e-09 5.25e-09 3e-09) +(5.916666667e-09 5.25e-09 3e-09) +(6.222222222e-09 5.25e-09 3e-09) +(6.527777778e-09 5.25e-09 3e-09) +(6.833333333e-09 5.25e-09 3e-09) +(7.138888889e-09 5.25e-09 3e-09) +(7.444444444e-09 5.25e-09 3e-09) +(7.75e-09 5.25e-09 3e-09) +(5.675925926e-09 1e-09 0) +(5.935185185e-09 1e-09 0) +(6.194444444e-09 1e-09 0) +(6.453703704e-09 1e-09 0) +(6.712962963e-09 1e-09 0) +(6.972222222e-09 1e-09 0) +(7.231481481e-09 1e-09 0) +(7.490740741e-09 1e-09 0) +(7.75e-09 1e-09 0) +(5.601851852e-09 1.25e-09 0) +(5.87037037e-09 1.25e-09 0) +(6.138888889e-09 1.25e-09 0) +(6.407407407e-09 1.25e-09 0) +(6.675925926e-09 1.25e-09 0) +(6.944444444e-09 1.25e-09 0) +(7.212962963e-09 1.25e-09 0) +(7.481481481e-09 1.25e-09 0) +(7.75e-09 1.25e-09 0) +(5.527777778e-09 1.5e-09 0) +(5.805555556e-09 1.5e-09 0) +(6.083333333e-09 1.5e-09 0) +(6.361111111e-09 1.5e-09 0) +(6.638888889e-09 1.5e-09 0) +(6.916666667e-09 1.5e-09 0) +(7.194444444e-09 1.5e-09 0) +(7.472222222e-09 1.5e-09 0) +(7.75e-09 1.5e-09 0) +(5.453703704e-09 1.75e-09 0) +(5.740740741e-09 1.75e-09 0) +(6.027777778e-09 1.75e-09 0) +(6.314814815e-09 1.75e-09 0) +(6.601851852e-09 1.75e-09 0) +(6.888888889e-09 1.75e-09 0) +(7.175925926e-09 1.75e-09 0) +(7.462962963e-09 1.75e-09 0) +(7.75e-09 1.75e-09 0) +(5.37962963e-09 2e-09 0) +(5.675925926e-09 2e-09 0) +(5.972222222e-09 2e-09 0) +(6.268518519e-09 2e-09 0) +(6.564814815e-09 2e-09 0) +(6.861111111e-09 2e-09 0) +(7.157407407e-09 2e-09 0) +(7.453703704e-09 2e-09 0) +(7.75e-09 2e-09 0) +(5.675925926e-09 1e-09 5e-10) +(5.935185185e-09 1e-09 5e-10) +(6.194444444e-09 1e-09 5e-10) +(6.453703704e-09 1e-09 5e-10) +(6.712962963e-09 1e-09 5e-10) +(6.972222222e-09 1e-09 5e-10) +(7.231481481e-09 1e-09 5e-10) +(7.490740741e-09 1e-09 5e-10) +(7.75e-09 1e-09 5e-10) +(5.601851852e-09 1.25e-09 5e-10) +(5.87037037e-09 1.25e-09 5e-10) +(6.138888889e-09 1.25e-09 5e-10) +(6.407407407e-09 1.25e-09 5e-10) +(6.675925926e-09 1.25e-09 5e-10) +(6.944444444e-09 1.25e-09 5e-10) +(7.212962963e-09 1.25e-09 5e-10) +(7.481481481e-09 1.25e-09 5e-10) +(7.75e-09 1.25e-09 5e-10) +(5.527777778e-09 1.5e-09 5e-10) +(5.805555556e-09 1.5e-09 5e-10) +(6.083333333e-09 1.5e-09 5e-10) +(6.361111111e-09 1.5e-09 5e-10) +(6.638888889e-09 1.5e-09 5e-10) +(6.916666667e-09 1.5e-09 5e-10) +(7.194444444e-09 1.5e-09 5e-10) +(7.472222222e-09 1.5e-09 5e-10) +(7.75e-09 1.5e-09 5e-10) +(5.453703704e-09 1.75e-09 5e-10) +(5.740740741e-09 1.75e-09 5e-10) +(6.027777778e-09 1.75e-09 5e-10) +(6.314814815e-09 1.75e-09 5e-10) +(6.601851852e-09 1.75e-09 5e-10) +(6.888888889e-09 1.75e-09 5e-10) +(7.175925926e-09 1.75e-09 5e-10) +(7.462962963e-09 1.75e-09 5e-10) +(7.75e-09 1.75e-09 5e-10) +(5.37962963e-09 2e-09 5e-10) +(5.675925926e-09 2e-09 5e-10) +(5.972222222e-09 2e-09 5e-10) +(6.268518519e-09 2e-09 5e-10) +(6.564814815e-09 2e-09 5e-10) +(6.861111111e-09 2e-09 5e-10) +(7.157407407e-09 2e-09 5e-10) +(7.453703704e-09 2e-09 5e-10) +(7.75e-09 2e-09 5e-10) +(5.675925926e-09 1e-09 1e-09) +(5.935185185e-09 1e-09 1e-09) +(6.194444444e-09 1e-09 1e-09) +(6.453703704e-09 1e-09 1e-09) +(6.712962963e-09 1e-09 1e-09) +(6.972222222e-09 1e-09 1e-09) +(7.231481481e-09 1e-09 1e-09) +(7.490740741e-09 1e-09 1e-09) +(7.75e-09 1e-09 1e-09) +(5.601851852e-09 1.25e-09 1e-09) +(5.87037037e-09 1.25e-09 1e-09) +(6.138888889e-09 1.25e-09 1e-09) +(6.407407407e-09 1.25e-09 1e-09) +(6.675925926e-09 1.25e-09 1e-09) +(6.944444444e-09 1.25e-09 1e-09) +(7.212962963e-09 1.25e-09 1e-09) +(7.481481481e-09 1.25e-09 1e-09) +(7.75e-09 1.25e-09 1e-09) +(5.527777778e-09 1.5e-09 1e-09) +(5.805555556e-09 1.5e-09 1e-09) +(6.083333333e-09 1.5e-09 1e-09) +(6.361111111e-09 1.5e-09 1e-09) +(6.638888889e-09 1.5e-09 1e-09) +(6.916666667e-09 1.5e-09 1e-09) +(7.194444444e-09 1.5e-09 1e-09) +(7.472222222e-09 1.5e-09 1e-09) +(7.75e-09 1.5e-09 1e-09) +(5.453703704e-09 1.75e-09 1e-09) +(5.740740741e-09 1.75e-09 1e-09) +(6.027777778e-09 1.75e-09 1e-09) +(6.314814815e-09 1.75e-09 1e-09) +(6.601851852e-09 1.75e-09 1e-09) +(6.888888889e-09 1.75e-09 1e-09) +(7.175925926e-09 1.75e-09 1e-09) +(7.462962963e-09 1.75e-09 1e-09) +(7.75e-09 1.75e-09 1e-09) +(5.37962963e-09 2e-09 1e-09) +(5.675925926e-09 2e-09 1e-09) +(5.972222222e-09 2e-09 1e-09) +(6.268518519e-09 2e-09 1e-09) +(6.564814815e-09 2e-09 1e-09) +(6.861111111e-09 2e-09 1e-09) +(7.157407407e-09 2e-09 1e-09) +(7.453703704e-09 2e-09 1e-09) +(7.75e-09 2e-09 1e-09) +(5.675925926e-09 1e-09 1.5e-09) +(5.935185185e-09 1e-09 1.5e-09) +(6.194444444e-09 1e-09 1.5e-09) +(6.453703704e-09 1e-09 1.5e-09) +(6.712962963e-09 1e-09 1.5e-09) +(6.972222222e-09 1e-09 1.5e-09) +(7.231481481e-09 1e-09 1.5e-09) +(7.490740741e-09 1e-09 1.5e-09) +(7.75e-09 1e-09 1.5e-09) +(5.601851852e-09 1.25e-09 1.5e-09) +(5.87037037e-09 1.25e-09 1.5e-09) +(6.138888889e-09 1.25e-09 1.5e-09) +(6.407407407e-09 1.25e-09 1.5e-09) +(6.675925926e-09 1.25e-09 1.5e-09) +(6.944444444e-09 1.25e-09 1.5e-09) +(7.212962963e-09 1.25e-09 1.5e-09) +(7.481481481e-09 1.25e-09 1.5e-09) +(7.75e-09 1.25e-09 1.5e-09) +(5.527777778e-09 1.5e-09 1.5e-09) +(5.805555556e-09 1.5e-09 1.5e-09) +(6.083333333e-09 1.5e-09 1.5e-09) +(6.361111111e-09 1.5e-09 1.5e-09) +(6.638888889e-09 1.5e-09 1.5e-09) +(6.916666667e-09 1.5e-09 1.5e-09) +(7.194444444e-09 1.5e-09 1.5e-09) +(7.472222222e-09 1.5e-09 1.5e-09) +(7.75e-09 1.5e-09 1.5e-09) +(5.453703704e-09 1.75e-09 1.5e-09) +(5.740740741e-09 1.75e-09 1.5e-09) +(6.027777778e-09 1.75e-09 1.5e-09) +(6.314814815e-09 1.75e-09 1.5e-09) +(6.601851852e-09 1.75e-09 1.5e-09) +(6.888888889e-09 1.75e-09 1.5e-09) +(7.175925926e-09 1.75e-09 1.5e-09) +(7.462962963e-09 1.75e-09 1.5e-09) +(7.75e-09 1.75e-09 1.5e-09) +(5.37962963e-09 2e-09 1.5e-09) +(5.675925926e-09 2e-09 1.5e-09) +(5.972222222e-09 2e-09 1.5e-09) +(6.268518519e-09 2e-09 1.5e-09) +(6.564814815e-09 2e-09 1.5e-09) +(6.861111111e-09 2e-09 1.5e-09) +(7.157407407e-09 2e-09 1.5e-09) +(7.453703704e-09 2e-09 1.5e-09) +(7.75e-09 2e-09 1.5e-09) +(5.675925926e-09 1e-09 2e-09) +(5.935185185e-09 1e-09 2e-09) +(6.194444444e-09 1e-09 2e-09) +(6.453703704e-09 1e-09 2e-09) +(6.712962963e-09 1e-09 2e-09) +(6.972222222e-09 1e-09 2e-09) +(7.231481481e-09 1e-09 2e-09) +(7.490740741e-09 1e-09 2e-09) +(7.75e-09 1e-09 2e-09) +(5.601851852e-09 1.25e-09 2e-09) +(5.87037037e-09 1.25e-09 2e-09) +(6.138888889e-09 1.25e-09 2e-09) +(6.407407407e-09 1.25e-09 2e-09) +(6.675925926e-09 1.25e-09 2e-09) +(6.944444444e-09 1.25e-09 2e-09) +(7.212962963e-09 1.25e-09 2e-09) +(7.481481481e-09 1.25e-09 2e-09) +(7.75e-09 1.25e-09 2e-09) +(5.527777778e-09 1.5e-09 2e-09) +(5.805555556e-09 1.5e-09 2e-09) +(6.083333333e-09 1.5e-09 2e-09) +(6.361111111e-09 1.5e-09 2e-09) +(6.638888889e-09 1.5e-09 2e-09) +(6.916666667e-09 1.5e-09 2e-09) +(7.194444444e-09 1.5e-09 2e-09) +(7.472222222e-09 1.5e-09 2e-09) +(7.75e-09 1.5e-09 2e-09) +(5.453703704e-09 1.75e-09 2e-09) +(5.740740741e-09 1.75e-09 2e-09) +(6.027777778e-09 1.75e-09 2e-09) +(6.314814815e-09 1.75e-09 2e-09) +(6.601851852e-09 1.75e-09 2e-09) +(6.888888889e-09 1.75e-09 2e-09) +(7.175925926e-09 1.75e-09 2e-09) +(7.462962963e-09 1.75e-09 2e-09) +(7.75e-09 1.75e-09 2e-09) +(5.37962963e-09 2e-09 2e-09) +(5.675925926e-09 2e-09 2e-09) +(5.972222222e-09 2e-09 2e-09) +(6.268518519e-09 2e-09 2e-09) +(6.564814815e-09 2e-09 2e-09) +(6.861111111e-09 2e-09 2e-09) +(7.157407407e-09 2e-09 2e-09) +(7.453703704e-09 2e-09 2e-09) +(7.75e-09 2e-09 2e-09) +(5.675925926e-09 1e-09 2.5e-09) +(5.935185185e-09 1e-09 2.5e-09) +(6.194444444e-09 1e-09 2.5e-09) +(6.453703704e-09 1e-09 2.5e-09) +(6.712962963e-09 1e-09 2.5e-09) +(6.972222222e-09 1e-09 2.5e-09) +(7.231481481e-09 1e-09 2.5e-09) +(7.490740741e-09 1e-09 2.5e-09) +(7.75e-09 1e-09 2.5e-09) +(5.601851852e-09 1.25e-09 2.5e-09) +(5.87037037e-09 1.25e-09 2.5e-09) +(6.138888889e-09 1.25e-09 2.5e-09) +(6.407407407e-09 1.25e-09 2.5e-09) +(6.675925926e-09 1.25e-09 2.5e-09) +(6.944444444e-09 1.25e-09 2.5e-09) +(7.212962963e-09 1.25e-09 2.5e-09) +(7.481481481e-09 1.25e-09 2.5e-09) +(7.75e-09 1.25e-09 2.5e-09) +(5.527777778e-09 1.5e-09 2.5e-09) +(5.805555556e-09 1.5e-09 2.5e-09) +(6.083333333e-09 1.5e-09 2.5e-09) +(6.361111111e-09 1.5e-09 2.5e-09) +(6.638888889e-09 1.5e-09 2.5e-09) +(6.916666667e-09 1.5e-09 2.5e-09) +(7.194444444e-09 1.5e-09 2.5e-09) +(7.472222222e-09 1.5e-09 2.5e-09) +(7.75e-09 1.5e-09 2.5e-09) +(5.453703704e-09 1.75e-09 2.5e-09) +(5.740740741e-09 1.75e-09 2.5e-09) +(6.027777778e-09 1.75e-09 2.5e-09) +(6.314814815e-09 1.75e-09 2.5e-09) +(6.601851852e-09 1.75e-09 2.5e-09) +(6.888888889e-09 1.75e-09 2.5e-09) +(7.175925926e-09 1.75e-09 2.5e-09) +(7.462962963e-09 1.75e-09 2.5e-09) +(7.75e-09 1.75e-09 2.5e-09) +(5.37962963e-09 2e-09 2.5e-09) +(5.675925926e-09 2e-09 2.5e-09) +(5.972222222e-09 2e-09 2.5e-09) +(6.268518519e-09 2e-09 2.5e-09) +(6.564814815e-09 2e-09 2.5e-09) +(6.861111111e-09 2e-09 2.5e-09) +(7.157407407e-09 2e-09 2.5e-09) +(7.453703704e-09 2e-09 2.5e-09) +(7.75e-09 2e-09 2.5e-09) +(5.675925926e-09 1e-09 3e-09) +(5.935185185e-09 1e-09 3e-09) +(6.194444444e-09 1e-09 3e-09) +(6.453703704e-09 1e-09 3e-09) +(6.712962963e-09 1e-09 3e-09) +(6.972222222e-09 1e-09 3e-09) +(7.231481481e-09 1e-09 3e-09) +(7.490740741e-09 1e-09 3e-09) +(7.75e-09 1e-09 3e-09) +(5.601851852e-09 1.25e-09 3e-09) +(5.87037037e-09 1.25e-09 3e-09) +(6.138888889e-09 1.25e-09 3e-09) +(6.407407407e-09 1.25e-09 3e-09) +(6.675925926e-09 1.25e-09 3e-09) +(6.944444444e-09 1.25e-09 3e-09) +(7.212962963e-09 1.25e-09 3e-09) +(7.481481481e-09 1.25e-09 3e-09) +(7.75e-09 1.25e-09 3e-09) +(5.527777778e-09 1.5e-09 3e-09) +(5.805555556e-09 1.5e-09 3e-09) +(6.083333333e-09 1.5e-09 3e-09) +(6.361111111e-09 1.5e-09 3e-09) +(6.638888889e-09 1.5e-09 3e-09) +(6.916666667e-09 1.5e-09 3e-09) +(7.194444444e-09 1.5e-09 3e-09) +(7.472222222e-09 1.5e-09 3e-09) +(7.75e-09 1.5e-09 3e-09) +(5.453703704e-09 1.75e-09 3e-09) +(5.740740741e-09 1.75e-09 3e-09) +(6.027777778e-09 1.75e-09 3e-09) +(6.314814815e-09 1.75e-09 3e-09) +(6.601851852e-09 1.75e-09 3e-09) +(6.888888889e-09 1.75e-09 3e-09) +(7.175925926e-09 1.75e-09 3e-09) +(7.462962963e-09 1.75e-09 3e-09) +(7.75e-09 1.75e-09 3e-09) +(5.37962963e-09 2e-09 3e-09) +(5.675925926e-09 2e-09 3e-09) +(5.972222222e-09 2e-09 3e-09) +(6.268518519e-09 2e-09 3e-09) +(6.564814815e-09 2e-09 3e-09) +(6.861111111e-09 2e-09 3e-09) +(7.157407407e-09 2e-09 3e-09) +(7.453703704e-09 2e-09 3e-09) +(7.75e-09 2e-09 3e-09) +(0 5.583333333e-09 0) +(2.833333333e-10 5.583333333e-09 0) +(5.666666667e-10 5.583333333e-09 0) +(8.5e-10 5.583333333e-09 0) +(1.133333333e-09 5.583333333e-09 0) +(1.416666667e-09 5.583333333e-09 0) +(1.7e-09 5.583333333e-09 0) +(1.983333333e-09 5.583333333e-09 0) +(2.266666667e-09 5.583333333e-09 0) +(2.55e-09 5.583333333e-09 0) +(2.833333333e-09 5.583333333e-09 0) +(3.116666667e-09 5.583333333e-09 0) +(3.4e-09 5.583333333e-09 0) +(3.683333333e-09 5.583333333e-09 0) +(3.966666667e-09 5.583333333e-09 0) +(4.25e-09 5.583333333e-09 0) +(0 5.916666667e-09 0) +(2.833333333e-10 5.916666667e-09 0) +(5.666666667e-10 5.916666667e-09 0) +(8.5e-10 5.916666667e-09 0) +(1.133333333e-09 5.916666667e-09 0) +(1.416666667e-09 5.916666667e-09 0) +(1.7e-09 5.916666667e-09 0) +(1.983333333e-09 5.916666667e-09 0) +(2.266666667e-09 5.916666667e-09 0) +(2.55e-09 5.916666667e-09 0) +(2.833333333e-09 5.916666667e-09 0) +(3.116666667e-09 5.916666667e-09 0) +(3.4e-09 5.916666667e-09 0) +(3.683333333e-09 5.916666667e-09 0) +(3.966666667e-09 5.916666667e-09 0) +(4.25e-09 5.916666667e-09 0) +(0 6.25e-09 0) +(2.833333333e-10 6.25e-09 0) +(5.666666667e-10 6.25e-09 0) +(8.5e-10 6.25e-09 0) +(1.133333333e-09 6.25e-09 0) +(1.416666667e-09 6.25e-09 0) +(1.7e-09 6.25e-09 0) +(1.983333333e-09 6.25e-09 0) +(2.266666667e-09 6.25e-09 0) +(2.55e-09 6.25e-09 0) +(2.833333333e-09 6.25e-09 0) +(3.116666667e-09 6.25e-09 0) +(3.4e-09 6.25e-09 0) +(3.683333333e-09 6.25e-09 0) +(3.966666667e-09 6.25e-09 0) +(4.25e-09 6.25e-09 0) +(0 5.583333333e-09 5e-10) +(2.833333333e-10 5.583333333e-09 5e-10) +(5.666666667e-10 5.583333333e-09 5e-10) +(8.5e-10 5.583333333e-09 5e-10) +(1.133333333e-09 5.583333333e-09 5e-10) +(1.416666667e-09 5.583333333e-09 5e-10) +(1.7e-09 5.583333333e-09 5e-10) +(1.983333333e-09 5.583333333e-09 5e-10) +(2.266666667e-09 5.583333333e-09 5e-10) +(2.55e-09 5.583333333e-09 5e-10) +(2.833333333e-09 5.583333333e-09 5e-10) +(3.116666667e-09 5.583333333e-09 5e-10) +(3.4e-09 5.583333333e-09 5e-10) +(3.683333333e-09 5.583333333e-09 5e-10) +(3.966666667e-09 5.583333333e-09 5e-10) +(4.25e-09 5.583333333e-09 5e-10) +(0 5.916666667e-09 5e-10) +(2.833333333e-10 5.916666667e-09 5e-10) +(5.666666667e-10 5.916666667e-09 5e-10) +(8.5e-10 5.916666667e-09 5e-10) +(1.133333333e-09 5.916666667e-09 5e-10) +(1.416666667e-09 5.916666667e-09 5e-10) +(1.7e-09 5.916666667e-09 5e-10) +(1.983333333e-09 5.916666667e-09 5e-10) +(2.266666667e-09 5.916666667e-09 5e-10) +(2.55e-09 5.916666667e-09 5e-10) +(2.833333333e-09 5.916666667e-09 5e-10) +(3.116666667e-09 5.916666667e-09 5e-10) +(3.4e-09 5.916666667e-09 5e-10) +(3.683333333e-09 5.916666667e-09 5e-10) +(3.966666667e-09 5.916666667e-09 5e-10) +(4.25e-09 5.916666667e-09 5e-10) +(0 6.25e-09 5e-10) +(2.833333333e-10 6.25e-09 5e-10) +(5.666666667e-10 6.25e-09 5e-10) +(8.5e-10 6.25e-09 5e-10) +(1.133333333e-09 6.25e-09 5e-10) +(1.416666667e-09 6.25e-09 5e-10) +(1.7e-09 6.25e-09 5e-10) +(1.983333333e-09 6.25e-09 5e-10) +(2.266666667e-09 6.25e-09 5e-10) +(2.55e-09 6.25e-09 5e-10) +(2.833333333e-09 6.25e-09 5e-10) +(3.116666667e-09 6.25e-09 5e-10) +(3.4e-09 6.25e-09 5e-10) +(3.683333333e-09 6.25e-09 5e-10) +(3.966666667e-09 6.25e-09 5e-10) +(4.25e-09 6.25e-09 5e-10) +(0 5.583333333e-09 1e-09) +(2.833333333e-10 5.583333333e-09 1e-09) +(5.666666667e-10 5.583333333e-09 1e-09) +(8.5e-10 5.583333333e-09 1e-09) +(1.133333333e-09 5.583333333e-09 1e-09) +(1.416666667e-09 5.583333333e-09 1e-09) +(1.7e-09 5.583333333e-09 1e-09) +(1.983333333e-09 5.583333333e-09 1e-09) +(2.266666667e-09 5.583333333e-09 1e-09) +(2.55e-09 5.583333333e-09 1e-09) +(2.833333333e-09 5.583333333e-09 1e-09) +(3.116666667e-09 5.583333333e-09 1e-09) +(3.4e-09 5.583333333e-09 1e-09) +(3.683333333e-09 5.583333333e-09 1e-09) +(3.966666667e-09 5.583333333e-09 1e-09) +(4.25e-09 5.583333333e-09 1e-09) +(0 5.916666667e-09 1e-09) +(2.833333333e-10 5.916666667e-09 1e-09) +(5.666666667e-10 5.916666667e-09 1e-09) +(8.5e-10 5.916666667e-09 1e-09) +(1.133333333e-09 5.916666667e-09 1e-09) +(1.416666667e-09 5.916666667e-09 1e-09) +(1.7e-09 5.916666667e-09 1e-09) +(1.983333333e-09 5.916666667e-09 1e-09) +(2.266666667e-09 5.916666667e-09 1e-09) +(2.55e-09 5.916666667e-09 1e-09) +(2.833333333e-09 5.916666667e-09 1e-09) +(3.116666667e-09 5.916666667e-09 1e-09) +(3.4e-09 5.916666667e-09 1e-09) +(3.683333333e-09 5.916666667e-09 1e-09) +(3.966666667e-09 5.916666667e-09 1e-09) +(4.25e-09 5.916666667e-09 1e-09) +(0 6.25e-09 1e-09) +(2.833333333e-10 6.25e-09 1e-09) +(5.666666667e-10 6.25e-09 1e-09) +(8.5e-10 6.25e-09 1e-09) +(1.133333333e-09 6.25e-09 1e-09) +(1.416666667e-09 6.25e-09 1e-09) +(1.7e-09 6.25e-09 1e-09) +(1.983333333e-09 6.25e-09 1e-09) +(2.266666667e-09 6.25e-09 1e-09) +(2.55e-09 6.25e-09 1e-09) +(2.833333333e-09 6.25e-09 1e-09) +(3.116666667e-09 6.25e-09 1e-09) +(3.4e-09 6.25e-09 1e-09) +(3.683333333e-09 6.25e-09 1e-09) +(3.966666667e-09 6.25e-09 1e-09) +(4.25e-09 6.25e-09 1e-09) +(0 5.583333333e-09 1.5e-09) +(2.833333333e-10 5.583333333e-09 1.5e-09) +(5.666666667e-10 5.583333333e-09 1.5e-09) +(8.5e-10 5.583333333e-09 1.5e-09) +(1.133333333e-09 5.583333333e-09 1.5e-09) +(1.416666667e-09 5.583333333e-09 1.5e-09) +(1.7e-09 5.583333333e-09 1.5e-09) +(1.983333333e-09 5.583333333e-09 1.5e-09) +(2.266666667e-09 5.583333333e-09 1.5e-09) +(2.55e-09 5.583333333e-09 1.5e-09) +(2.833333333e-09 5.583333333e-09 1.5e-09) +(3.116666667e-09 5.583333333e-09 1.5e-09) +(3.4e-09 5.583333333e-09 1.5e-09) +(3.683333333e-09 5.583333333e-09 1.5e-09) +(3.966666667e-09 5.583333333e-09 1.5e-09) +(4.25e-09 5.583333333e-09 1.5e-09) +(0 5.916666667e-09 1.5e-09) +(2.833333333e-10 5.916666667e-09 1.5e-09) +(5.666666667e-10 5.916666667e-09 1.5e-09) +(8.5e-10 5.916666667e-09 1.5e-09) +(1.133333333e-09 5.916666667e-09 1.5e-09) +(1.416666667e-09 5.916666667e-09 1.5e-09) +(1.7e-09 5.916666667e-09 1.5e-09) +(1.983333333e-09 5.916666667e-09 1.5e-09) +(2.266666667e-09 5.916666667e-09 1.5e-09) +(2.55e-09 5.916666667e-09 1.5e-09) +(2.833333333e-09 5.916666667e-09 1.5e-09) +(3.116666667e-09 5.916666667e-09 1.5e-09) +(3.4e-09 5.916666667e-09 1.5e-09) +(3.683333333e-09 5.916666667e-09 1.5e-09) +(3.966666667e-09 5.916666667e-09 1.5e-09) +(4.25e-09 5.916666667e-09 1.5e-09) +(0 6.25e-09 1.5e-09) +(2.833333333e-10 6.25e-09 1.5e-09) +(5.666666667e-10 6.25e-09 1.5e-09) +(8.5e-10 6.25e-09 1.5e-09) +(1.133333333e-09 6.25e-09 1.5e-09) +(1.416666667e-09 6.25e-09 1.5e-09) +(1.7e-09 6.25e-09 1.5e-09) +(1.983333333e-09 6.25e-09 1.5e-09) +(2.266666667e-09 6.25e-09 1.5e-09) +(2.55e-09 6.25e-09 1.5e-09) +(2.833333333e-09 6.25e-09 1.5e-09) +(3.116666667e-09 6.25e-09 1.5e-09) +(3.4e-09 6.25e-09 1.5e-09) +(3.683333333e-09 6.25e-09 1.5e-09) +(3.966666667e-09 6.25e-09 1.5e-09) +(4.25e-09 6.25e-09 1.5e-09) +(0 5.583333333e-09 2e-09) +(2.833333333e-10 5.583333333e-09 2e-09) +(5.666666667e-10 5.583333333e-09 2e-09) +(8.5e-10 5.583333333e-09 2e-09) +(1.133333333e-09 5.583333333e-09 2e-09) +(1.416666667e-09 5.583333333e-09 2e-09) +(1.7e-09 5.583333333e-09 2e-09) +(1.983333333e-09 5.583333333e-09 2e-09) +(2.266666667e-09 5.583333333e-09 2e-09) +(2.55e-09 5.583333333e-09 2e-09) +(2.833333333e-09 5.583333333e-09 2e-09) +(3.116666667e-09 5.583333333e-09 2e-09) +(3.4e-09 5.583333333e-09 2e-09) +(3.683333333e-09 5.583333333e-09 2e-09) +(3.966666667e-09 5.583333333e-09 2e-09) +(4.25e-09 5.583333333e-09 2e-09) +(0 5.916666667e-09 2e-09) +(2.833333333e-10 5.916666667e-09 2e-09) +(5.666666667e-10 5.916666667e-09 2e-09) +(8.5e-10 5.916666667e-09 2e-09) +(1.133333333e-09 5.916666667e-09 2e-09) +(1.416666667e-09 5.916666667e-09 2e-09) +(1.7e-09 5.916666667e-09 2e-09) +(1.983333333e-09 5.916666667e-09 2e-09) +(2.266666667e-09 5.916666667e-09 2e-09) +(2.55e-09 5.916666667e-09 2e-09) +(2.833333333e-09 5.916666667e-09 2e-09) +(3.116666667e-09 5.916666667e-09 2e-09) +(3.4e-09 5.916666667e-09 2e-09) +(3.683333333e-09 5.916666667e-09 2e-09) +(3.966666667e-09 5.916666667e-09 2e-09) +(4.25e-09 5.916666667e-09 2e-09) +(0 6.25e-09 2e-09) +(2.833333333e-10 6.25e-09 2e-09) +(5.666666667e-10 6.25e-09 2e-09) +(8.5e-10 6.25e-09 2e-09) +(1.133333333e-09 6.25e-09 2e-09) +(1.416666667e-09 6.25e-09 2e-09) +(1.7e-09 6.25e-09 2e-09) +(1.983333333e-09 6.25e-09 2e-09) +(2.266666667e-09 6.25e-09 2e-09) +(2.55e-09 6.25e-09 2e-09) +(2.833333333e-09 6.25e-09 2e-09) +(3.116666667e-09 6.25e-09 2e-09) +(3.4e-09 6.25e-09 2e-09) +(3.683333333e-09 6.25e-09 2e-09) +(3.966666667e-09 6.25e-09 2e-09) +(4.25e-09 6.25e-09 2e-09) +(0 5.583333333e-09 2.5e-09) +(2.833333333e-10 5.583333333e-09 2.5e-09) +(5.666666667e-10 5.583333333e-09 2.5e-09) +(8.5e-10 5.583333333e-09 2.5e-09) +(1.133333333e-09 5.583333333e-09 2.5e-09) +(1.416666667e-09 5.583333333e-09 2.5e-09) +(1.7e-09 5.583333333e-09 2.5e-09) +(1.983333333e-09 5.583333333e-09 2.5e-09) +(2.266666667e-09 5.583333333e-09 2.5e-09) +(2.55e-09 5.583333333e-09 2.5e-09) +(2.833333333e-09 5.583333333e-09 2.5e-09) +(3.116666667e-09 5.583333333e-09 2.5e-09) +(3.4e-09 5.583333333e-09 2.5e-09) +(3.683333333e-09 5.583333333e-09 2.5e-09) +(3.966666667e-09 5.583333333e-09 2.5e-09) +(4.25e-09 5.583333333e-09 2.5e-09) +(0 5.916666667e-09 2.5e-09) +(2.833333333e-10 5.916666667e-09 2.5e-09) +(5.666666667e-10 5.916666667e-09 2.5e-09) +(8.5e-10 5.916666667e-09 2.5e-09) +(1.133333333e-09 5.916666667e-09 2.5e-09) +(1.416666667e-09 5.916666667e-09 2.5e-09) +(1.7e-09 5.916666667e-09 2.5e-09) +(1.983333333e-09 5.916666667e-09 2.5e-09) +(2.266666667e-09 5.916666667e-09 2.5e-09) +(2.55e-09 5.916666667e-09 2.5e-09) +(2.833333333e-09 5.916666667e-09 2.5e-09) +(3.116666667e-09 5.916666667e-09 2.5e-09) +(3.4e-09 5.916666667e-09 2.5e-09) +(3.683333333e-09 5.916666667e-09 2.5e-09) +(3.966666667e-09 5.916666667e-09 2.5e-09) +(4.25e-09 5.916666667e-09 2.5e-09) +(0 6.25e-09 2.5e-09) +(2.833333333e-10 6.25e-09 2.5e-09) +(5.666666667e-10 6.25e-09 2.5e-09) +(8.5e-10 6.25e-09 2.5e-09) +(1.133333333e-09 6.25e-09 2.5e-09) +(1.416666667e-09 6.25e-09 2.5e-09) +(1.7e-09 6.25e-09 2.5e-09) +(1.983333333e-09 6.25e-09 2.5e-09) +(2.266666667e-09 6.25e-09 2.5e-09) +(2.55e-09 6.25e-09 2.5e-09) +(2.833333333e-09 6.25e-09 2.5e-09) +(3.116666667e-09 6.25e-09 2.5e-09) +(3.4e-09 6.25e-09 2.5e-09) +(3.683333333e-09 6.25e-09 2.5e-09) +(3.966666667e-09 6.25e-09 2.5e-09) +(4.25e-09 6.25e-09 2.5e-09) +(0 5.583333333e-09 3e-09) +(2.833333333e-10 5.583333333e-09 3e-09) +(5.666666667e-10 5.583333333e-09 3e-09) +(8.5e-10 5.583333333e-09 3e-09) +(1.133333333e-09 5.583333333e-09 3e-09) +(1.416666667e-09 5.583333333e-09 3e-09) +(1.7e-09 5.583333333e-09 3e-09) +(1.983333333e-09 5.583333333e-09 3e-09) +(2.266666667e-09 5.583333333e-09 3e-09) +(2.55e-09 5.583333333e-09 3e-09) +(2.833333333e-09 5.583333333e-09 3e-09) +(3.116666667e-09 5.583333333e-09 3e-09) +(3.4e-09 5.583333333e-09 3e-09) +(3.683333333e-09 5.583333333e-09 3e-09) +(3.966666667e-09 5.583333333e-09 3e-09) +(4.25e-09 5.583333333e-09 3e-09) +(0 5.916666667e-09 3e-09) +(2.833333333e-10 5.916666667e-09 3e-09) +(5.666666667e-10 5.916666667e-09 3e-09) +(8.5e-10 5.916666667e-09 3e-09) +(1.133333333e-09 5.916666667e-09 3e-09) +(1.416666667e-09 5.916666667e-09 3e-09) +(1.7e-09 5.916666667e-09 3e-09) +(1.983333333e-09 5.916666667e-09 3e-09) +(2.266666667e-09 5.916666667e-09 3e-09) +(2.55e-09 5.916666667e-09 3e-09) +(2.833333333e-09 5.916666667e-09 3e-09) +(3.116666667e-09 5.916666667e-09 3e-09) +(3.4e-09 5.916666667e-09 3e-09) +(3.683333333e-09 5.916666667e-09 3e-09) +(3.966666667e-09 5.916666667e-09 3e-09) +(4.25e-09 5.916666667e-09 3e-09) +(0 6.25e-09 3e-09) +(2.833333333e-10 6.25e-09 3e-09) +(5.666666667e-10 6.25e-09 3e-09) +(8.5e-10 6.25e-09 3e-09) +(1.133333333e-09 6.25e-09 3e-09) +(1.416666667e-09 6.25e-09 3e-09) +(1.7e-09 6.25e-09 3e-09) +(1.983333333e-09 6.25e-09 3e-09) +(2.266666667e-09 6.25e-09 3e-09) +(2.55e-09 6.25e-09 3e-09) +(2.833333333e-09 6.25e-09 3e-09) +(3.116666667e-09 6.25e-09 3e-09) +(3.4e-09 6.25e-09 3e-09) +(3.683333333e-09 6.25e-09 3e-09) +(3.966666667e-09 6.25e-09 3e-09) +(4.25e-09 6.25e-09 3e-09) +(4.5e-09 5.25e-09 0) +(4.75e-09 5.25e-09 0) +(4.5e-09 5.583333333e-09 0) +(4.75e-09 5.583333333e-09 0) +(5e-09 5.583333333e-09 0) +(4.5e-09 5.916666667e-09 0) +(4.75e-09 5.916666667e-09 0) +(5e-09 5.916666667e-09 0) +(4.5e-09 6.25e-09 0) +(4.75e-09 6.25e-09 0) +(5e-09 6.25e-09 0) +(4.5e-09 5.25e-09 5e-10) +(4.75e-09 5.25e-09 5e-10) +(4.5e-09 5.583333333e-09 5e-10) +(4.75e-09 5.583333333e-09 5e-10) +(5e-09 5.583333333e-09 5e-10) +(4.5e-09 5.916666667e-09 5e-10) +(4.75e-09 5.916666667e-09 5e-10) +(5e-09 5.916666667e-09 5e-10) +(4.5e-09 6.25e-09 5e-10) +(4.75e-09 6.25e-09 5e-10) +(5e-09 6.25e-09 5e-10) +(4.5e-09 5.25e-09 1e-09) +(4.75e-09 5.25e-09 1e-09) +(4.5e-09 5.583333333e-09 1e-09) +(4.75e-09 5.583333333e-09 1e-09) +(5e-09 5.583333333e-09 1e-09) +(4.5e-09 5.916666667e-09 1e-09) +(4.75e-09 5.916666667e-09 1e-09) +(5e-09 5.916666667e-09 1e-09) +(4.5e-09 6.25e-09 1e-09) +(4.75e-09 6.25e-09 1e-09) +(5e-09 6.25e-09 1e-09) +(4.5e-09 5.25e-09 1.5e-09) +(4.75e-09 5.25e-09 1.5e-09) +(4.5e-09 5.583333333e-09 1.5e-09) +(4.75e-09 5.583333333e-09 1.5e-09) +(5e-09 5.583333333e-09 1.5e-09) +(4.5e-09 5.916666667e-09 1.5e-09) +(4.75e-09 5.916666667e-09 1.5e-09) +(5e-09 5.916666667e-09 1.5e-09) +(4.5e-09 6.25e-09 1.5e-09) +(4.75e-09 6.25e-09 1.5e-09) +(5e-09 6.25e-09 1.5e-09) +(4.5e-09 5.25e-09 2e-09) +(4.75e-09 5.25e-09 2e-09) +(4.5e-09 5.583333333e-09 2e-09) +(4.75e-09 5.583333333e-09 2e-09) +(5e-09 5.583333333e-09 2e-09) +(4.5e-09 5.916666667e-09 2e-09) +(4.75e-09 5.916666667e-09 2e-09) +(5e-09 5.916666667e-09 2e-09) +(4.5e-09 6.25e-09 2e-09) +(4.75e-09 6.25e-09 2e-09) +(5e-09 6.25e-09 2e-09) +(4.5e-09 5.25e-09 2.5e-09) +(4.75e-09 5.25e-09 2.5e-09) +(4.5e-09 5.583333333e-09 2.5e-09) +(4.75e-09 5.583333333e-09 2.5e-09) +(5e-09 5.583333333e-09 2.5e-09) +(4.5e-09 5.916666667e-09 2.5e-09) +(4.75e-09 5.916666667e-09 2.5e-09) +(5e-09 5.916666667e-09 2.5e-09) +(4.5e-09 6.25e-09 2.5e-09) +(4.75e-09 6.25e-09 2.5e-09) +(5e-09 6.25e-09 2.5e-09) +(4.5e-09 5.25e-09 3e-09) +(4.75e-09 5.25e-09 3e-09) +(4.5e-09 5.583333333e-09 3e-09) +(4.75e-09 5.583333333e-09 3e-09) +(5e-09 5.583333333e-09 3e-09) +(4.5e-09 5.916666667e-09 3e-09) +(4.75e-09 5.916666667e-09 3e-09) +(5e-09 5.916666667e-09 3e-09) +(4.5e-09 6.25e-09 3e-09) +(4.75e-09 6.25e-09 3e-09) +(5e-09 6.25e-09 3e-09) +(4.5e-09 4.75e-09 0) +(4.75e-09 4.75e-09 0) +(4.5e-09 5e-09 0) +(4.75e-09 5e-09 0) +(4.5e-09 4.75e-09 5e-10) +(4.75e-09 4.75e-09 5e-10) +(4.5e-09 5e-09 5e-10) +(4.75e-09 5e-09 5e-10) +(4.5e-09 4.75e-09 1e-09) +(4.75e-09 4.75e-09 1e-09) +(4.5e-09 5e-09 1e-09) +(4.75e-09 5e-09 1e-09) +(4.5e-09 4.75e-09 1.5e-09) +(4.75e-09 4.75e-09 1.5e-09) +(4.5e-09 5e-09 1.5e-09) +(4.75e-09 5e-09 1.5e-09) +(4.5e-09 4.75e-09 2e-09) +(4.75e-09 4.75e-09 2e-09) +(4.5e-09 5e-09 2e-09) +(4.75e-09 5e-09 2e-09) +(4.5e-09 4.75e-09 2.5e-09) +(4.75e-09 4.75e-09 2.5e-09) +(4.5e-09 5e-09 2.5e-09) +(4.75e-09 5e-09 2.5e-09) +(4.5e-09 4.75e-09 3e-09) +(4.75e-09 4.75e-09 3e-09) +(4.5e-09 5e-09 3e-09) +(4.75e-09 5e-09 3e-09) +(5.305555556e-09 5.583333333e-09 0) +(5.611111111e-09 5.583333333e-09 0) +(5.916666667e-09 5.583333333e-09 0) +(6.222222222e-09 5.583333333e-09 0) +(6.527777778e-09 5.583333333e-09 0) +(6.833333333e-09 5.583333333e-09 0) +(7.138888889e-09 5.583333333e-09 0) +(7.444444444e-09 5.583333333e-09 0) +(7.75e-09 5.583333333e-09 0) +(5.305555556e-09 5.916666667e-09 0) +(5.611111111e-09 5.916666667e-09 0) +(5.916666667e-09 5.916666667e-09 0) +(6.222222222e-09 5.916666667e-09 0) +(6.527777778e-09 5.916666667e-09 0) +(6.833333333e-09 5.916666667e-09 0) +(7.138888889e-09 5.916666667e-09 0) +(7.444444444e-09 5.916666667e-09 0) +(7.75e-09 5.916666667e-09 0) +(5.305555556e-09 6.25e-09 0) +(5.611111111e-09 6.25e-09 0) +(5.916666667e-09 6.25e-09 0) +(6.222222222e-09 6.25e-09 0) +(6.527777778e-09 6.25e-09 0) +(6.833333333e-09 6.25e-09 0) +(7.138888889e-09 6.25e-09 0) +(7.444444444e-09 6.25e-09 0) +(7.75e-09 6.25e-09 0) +(5.305555556e-09 5.583333333e-09 5e-10) +(5.611111111e-09 5.583333333e-09 5e-10) +(5.916666667e-09 5.583333333e-09 5e-10) +(6.222222222e-09 5.583333333e-09 5e-10) +(6.527777778e-09 5.583333333e-09 5e-10) +(6.833333333e-09 5.583333333e-09 5e-10) +(7.138888889e-09 5.583333333e-09 5e-10) +(7.444444444e-09 5.583333333e-09 5e-10) +(7.75e-09 5.583333333e-09 5e-10) +(5.305555556e-09 5.916666667e-09 5e-10) +(5.611111111e-09 5.916666667e-09 5e-10) +(5.916666667e-09 5.916666667e-09 5e-10) +(6.222222222e-09 5.916666667e-09 5e-10) +(6.527777778e-09 5.916666667e-09 5e-10) +(6.833333333e-09 5.916666667e-09 5e-10) +(7.138888889e-09 5.916666667e-09 5e-10) +(7.444444444e-09 5.916666667e-09 5e-10) +(7.75e-09 5.916666667e-09 5e-10) +(5.305555556e-09 6.25e-09 5e-10) +(5.611111111e-09 6.25e-09 5e-10) +(5.916666667e-09 6.25e-09 5e-10) +(6.222222222e-09 6.25e-09 5e-10) +(6.527777778e-09 6.25e-09 5e-10) +(6.833333333e-09 6.25e-09 5e-10) +(7.138888889e-09 6.25e-09 5e-10) +(7.444444444e-09 6.25e-09 5e-10) +(7.75e-09 6.25e-09 5e-10) +(5.305555556e-09 5.583333333e-09 1e-09) +(5.611111111e-09 5.583333333e-09 1e-09) +(5.916666667e-09 5.583333333e-09 1e-09) +(6.222222222e-09 5.583333333e-09 1e-09) +(6.527777778e-09 5.583333333e-09 1e-09) +(6.833333333e-09 5.583333333e-09 1e-09) +(7.138888889e-09 5.583333333e-09 1e-09) +(7.444444444e-09 5.583333333e-09 1e-09) +(7.75e-09 5.583333333e-09 1e-09) +(5.305555556e-09 5.916666667e-09 1e-09) +(5.611111111e-09 5.916666667e-09 1e-09) +(5.916666667e-09 5.916666667e-09 1e-09) +(6.222222222e-09 5.916666667e-09 1e-09) +(6.527777778e-09 5.916666667e-09 1e-09) +(6.833333333e-09 5.916666667e-09 1e-09) +(7.138888889e-09 5.916666667e-09 1e-09) +(7.444444444e-09 5.916666667e-09 1e-09) +(7.75e-09 5.916666667e-09 1e-09) +(5.305555556e-09 6.25e-09 1e-09) +(5.611111111e-09 6.25e-09 1e-09) +(5.916666667e-09 6.25e-09 1e-09) +(6.222222222e-09 6.25e-09 1e-09) +(6.527777778e-09 6.25e-09 1e-09) +(6.833333333e-09 6.25e-09 1e-09) +(7.138888889e-09 6.25e-09 1e-09) +(7.444444444e-09 6.25e-09 1e-09) +(7.75e-09 6.25e-09 1e-09) +(5.305555556e-09 5.583333333e-09 1.5e-09) +(5.611111111e-09 5.583333333e-09 1.5e-09) +(5.916666667e-09 5.583333333e-09 1.5e-09) +(6.222222222e-09 5.583333333e-09 1.5e-09) +(6.527777778e-09 5.583333333e-09 1.5e-09) +(6.833333333e-09 5.583333333e-09 1.5e-09) +(7.138888889e-09 5.583333333e-09 1.5e-09) +(7.444444444e-09 5.583333333e-09 1.5e-09) +(7.75e-09 5.583333333e-09 1.5e-09) +(5.305555556e-09 5.916666667e-09 1.5e-09) +(5.611111111e-09 5.916666667e-09 1.5e-09) +(5.916666667e-09 5.916666667e-09 1.5e-09) +(6.222222222e-09 5.916666667e-09 1.5e-09) +(6.527777778e-09 5.916666667e-09 1.5e-09) +(6.833333333e-09 5.916666667e-09 1.5e-09) +(7.138888889e-09 5.916666667e-09 1.5e-09) +(7.444444444e-09 5.916666667e-09 1.5e-09) +(7.75e-09 5.916666667e-09 1.5e-09) +(5.305555556e-09 6.25e-09 1.5e-09) +(5.611111111e-09 6.25e-09 1.5e-09) +(5.916666667e-09 6.25e-09 1.5e-09) +(6.222222222e-09 6.25e-09 1.5e-09) +(6.527777778e-09 6.25e-09 1.5e-09) +(6.833333333e-09 6.25e-09 1.5e-09) +(7.138888889e-09 6.25e-09 1.5e-09) +(7.444444444e-09 6.25e-09 1.5e-09) +(7.75e-09 6.25e-09 1.5e-09) +(5.305555556e-09 5.583333333e-09 2e-09) +(5.611111111e-09 5.583333333e-09 2e-09) +(5.916666667e-09 5.583333333e-09 2e-09) +(6.222222222e-09 5.583333333e-09 2e-09) +(6.527777778e-09 5.583333333e-09 2e-09) +(6.833333333e-09 5.583333333e-09 2e-09) +(7.138888889e-09 5.583333333e-09 2e-09) +(7.444444444e-09 5.583333333e-09 2e-09) +(7.75e-09 5.583333333e-09 2e-09) +(5.305555556e-09 5.916666667e-09 2e-09) +(5.611111111e-09 5.916666667e-09 2e-09) +(5.916666667e-09 5.916666667e-09 2e-09) +(6.222222222e-09 5.916666667e-09 2e-09) +(6.527777778e-09 5.916666667e-09 2e-09) +(6.833333333e-09 5.916666667e-09 2e-09) +(7.138888889e-09 5.916666667e-09 2e-09) +(7.444444444e-09 5.916666667e-09 2e-09) +(7.75e-09 5.916666667e-09 2e-09) +(5.305555556e-09 6.25e-09 2e-09) +(5.611111111e-09 6.25e-09 2e-09) +(5.916666667e-09 6.25e-09 2e-09) +(6.222222222e-09 6.25e-09 2e-09) +(6.527777778e-09 6.25e-09 2e-09) +(6.833333333e-09 6.25e-09 2e-09) +(7.138888889e-09 6.25e-09 2e-09) +(7.444444444e-09 6.25e-09 2e-09) +(7.75e-09 6.25e-09 2e-09) +(5.305555556e-09 5.583333333e-09 2.5e-09) +(5.611111111e-09 5.583333333e-09 2.5e-09) +(5.916666667e-09 5.583333333e-09 2.5e-09) +(6.222222222e-09 5.583333333e-09 2.5e-09) +(6.527777778e-09 5.583333333e-09 2.5e-09) +(6.833333333e-09 5.583333333e-09 2.5e-09) +(7.138888889e-09 5.583333333e-09 2.5e-09) +(7.444444444e-09 5.583333333e-09 2.5e-09) +(7.75e-09 5.583333333e-09 2.5e-09) +(5.305555556e-09 5.916666667e-09 2.5e-09) +(5.611111111e-09 5.916666667e-09 2.5e-09) +(5.916666667e-09 5.916666667e-09 2.5e-09) +(6.222222222e-09 5.916666667e-09 2.5e-09) +(6.527777778e-09 5.916666667e-09 2.5e-09) +(6.833333333e-09 5.916666667e-09 2.5e-09) +(7.138888889e-09 5.916666667e-09 2.5e-09) +(7.444444444e-09 5.916666667e-09 2.5e-09) +(7.75e-09 5.916666667e-09 2.5e-09) +(5.305555556e-09 6.25e-09 2.5e-09) +(5.611111111e-09 6.25e-09 2.5e-09) +(5.916666667e-09 6.25e-09 2.5e-09) +(6.222222222e-09 6.25e-09 2.5e-09) +(6.527777778e-09 6.25e-09 2.5e-09) +(6.833333333e-09 6.25e-09 2.5e-09) +(7.138888889e-09 6.25e-09 2.5e-09) +(7.444444444e-09 6.25e-09 2.5e-09) +(7.75e-09 6.25e-09 2.5e-09) +(5.305555556e-09 5.583333333e-09 3e-09) +(5.611111111e-09 5.583333333e-09 3e-09) +(5.916666667e-09 5.583333333e-09 3e-09) +(6.222222222e-09 5.583333333e-09 3e-09) +(6.527777778e-09 5.583333333e-09 3e-09) +(6.833333333e-09 5.583333333e-09 3e-09) +(7.138888889e-09 5.583333333e-09 3e-09) +(7.444444444e-09 5.583333333e-09 3e-09) +(7.75e-09 5.583333333e-09 3e-09) +(5.305555556e-09 5.916666667e-09 3e-09) +(5.611111111e-09 5.916666667e-09 3e-09) +(5.916666667e-09 5.916666667e-09 3e-09) +(6.222222222e-09 5.916666667e-09 3e-09) +(6.527777778e-09 5.916666667e-09 3e-09) +(6.833333333e-09 5.916666667e-09 3e-09) +(7.138888889e-09 5.916666667e-09 3e-09) +(7.444444444e-09 5.916666667e-09 3e-09) +(7.75e-09 5.916666667e-09 3e-09) +(5.305555556e-09 6.25e-09 3e-09) +(5.611111111e-09 6.25e-09 3e-09) +(5.916666667e-09 6.25e-09 3e-09) +(6.222222222e-09 6.25e-09 3e-09) +(6.527777778e-09 6.25e-09 3e-09) +(6.833333333e-09 6.25e-09 3e-09) +(7.138888889e-09 6.25e-09 3e-09) +(7.444444444e-09 6.25e-09 3e-09) +(7.75e-09 6.25e-09 3e-09) +) + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/system/controlDict b/tutorials/gnemdFoam/constrictedChannel/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..e503755148169b8713564a4abf5fdbf7ee790a4e --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/controlDict @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object controlDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 8e-11; + +deltaT 1e-14; + +writeControl runTime; + +writeInterval 2e-12; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 12; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/system/fvSchemes b/tutorials/gnemdFoam/constrictedChannel/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..8504e0fd45187a8698a014b6428e758d6b408424 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/fvSchemes @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSchemes; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nu,U) Gauss linear corrected; + laplacian(1|A(U),p) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; + interpolate(HbyA) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p; +} + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/system/fvSolution b/tutorials/gnemdFoam/constrictedChannel/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..c85c7b791bf5766697f1b4c93699a69792329295 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/fvSolution @@ -0,0 +1,40 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p ICCG 1e-06 0; + U BICCG 1e-05 0; +} + +PISO +{ + nCorrectors 2; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/system/mdSolution b/tutorials/gnemdFoam/constrictedChannel/system/mdSolution new file mode 100644 index 0000000000000000000000000000000000000000..c72bb260facf92c9cacb0cc02e4f7679d0e35926 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/mdSolution @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object mdSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +integrationMethod verletLeapfrog; + +potentialEnergyLimit 5.256e-20; + +// ************************************************************************* // \ No newline at end of file diff --git a/tutorials/gnemdFoam/constrictedChannel/system/molConfigDict b/tutorials/gnemdFoam/constrictedChannel/system/molConfigDict new file mode 100644 index 0000000000000000000000000000000000000000..440ce73b29ffac8b6f394df78caf110834cc1769 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/molConfigDict @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object molConfigDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Subdictionaries specifying the contents of zones + +// Euler angles, expressed in degrees as phi, theta, psi, see http://mathworld.wolfram.com/EulerAngles.html + +bottomWall +{ + massDensity 1220.0; + temperature 300.0; + velocityDistribution maxwellian; + bulkVelocity (0.0 0.0 0.0); + id Ar; + mass 6.63352033e-26; + latticeStructure FCC; + anchor (1.05e-9 3.18e-9 2.87e-9); + anchorSpecifies molecule; + tethered yes; + orientationAngles (30 0 0); +} + +liquid +{ + massDensity 1100.0; + temperature 250.0; + velocityDistribution maxwellian; + bulkVelocity (245.0 0.0 0.0); + id Ne; + mass 3.350996347e-26; + latticeStructure SC; + anchor (1.05e-9 3.18e-9 2.87e-9); + anchorSpecifies molecule; + tethered no; + orientationAngles (45 0 0); +} + +topWall +{ + massDensity 1220.0; + temperature 200.0; + velocityDistribution maxwellian; + bulkVelocity (0.0 0.0 0.0); + id Ar; + mass 6.63352033e-26; + latticeStructure BCC; + anchor (1.05e-9 3.18e-9 2.87e-9); + anchorSpecifies corner; + tethered yes; + orientationAngles (0 0 0); +} + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/constrictedChannel/system/potentialDict b/tutorials/gnemdFoam/constrictedChannel/system/potentialDict new file mode 100644 index 0000000000000000000000000000000000000000..f50e952c9c9481538347e939d90e71a13d484889 --- /dev/null +++ b/tutorials/gnemdFoam/constrictedChannel/system/potentialDict @@ -0,0 +1,148 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object potentials; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Subdictionaries specifying types of intermolecular potential. +// Sub-sub dictionaries specify the potentials themselves. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Removal order + +// This is the order in which to remove overlapping pairs if more than one +// type of molecule is present. The most valuable molecule type is at the +// right hand end, the molecule that will be removed 1st is 1st on the list. +// Not all types need to be present, a molecule that is not present is +// automatically less valuable than any on the list. For molecules of the +// same type there is no control over which is removed. + +removalOrder 1 (Ar); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Pair potentials + +// If there are r different type of molecules, and a pair force is required +// between all combinations, then there are C = r(r+1)/2 combinations, +// i.e. for r = {1,2,3,4}, C = {1,3,6,10} (sum of triangular numbers). + +// Pair potentials are specified by the combinaition of their ids, +// for MOLA and MOLB, "MOLA-MOLB" OR "MOLB-MOLA" is acceptable +// (strictly OR, both or neither will thrown an error) + +pair +{ + Ar-Ar + { + pairPotential maitlandSmith; + rCut 1.0e-9; + rMin 0.15e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 7.5; + rm 0.3756e-9; + epsilon 1.990108438e-21; + } + energyScalingFunction doubleSigmoid; + doubleSigmoidCoeffs + { + shift1 0.9e-9; + scale1 0.3e11; + shift2 0.97e-9; + scale2 1.2e11; + } + writeTables yes; + } + + Ar-Ne + { + pairPotential maitlandSmith; + rCut 0.9e-9; + rMin 0.1e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 4; + rm 0.348e-9; + epsilon 8.765026657e-22; + } + energyScalingFunction shiftedForce; + writeTables yes; + } + + Ne-Ne + { + pairPotential maitlandSmith; + rCut 0.8e-9; + rMin 0.1e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 5; + rm 0.30739e-9; + epsilon 5.813260729e-22; + } + energyScalingFunction shiftedForce; + writeTables yes; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Tethering Potentials + +tether +{ + Ar + { + tetherPotential restrainedHarmonicSpring; + restrainedHarmonicSpringCoeffs + { + springConstant 0.0277; + rR 1.2e-9; + } + } + + Ne + { + tetherPotential harmonicSpring; + harmonicSpringCoeffs + { + springConstant 0.0277; + } + } +} + +// ************************************************************************* // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// External Forces + +// Bulk external forces (namely gravity) will be specified as forces rather +// than potentials to allow their direction to be controlled. + +external +{ + gravity (0 0 0); +} diff --git a/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict b/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..22808bd6ad59b93935e133f4b23cf17062510fa3 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict @@ -0,0 +1,155 @@ + /*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object blockMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 3e-9; + +vertices +( + (0 0 0) + (3.5 0 0) + (3.5 3 0) + (0 3 0) + (0 0 3) + (3.5 0 3) + (3.5 3 3) + (0 3 3) + (7.5 1 0.5) + (7.5 2 0.5) + (7.5 1 2.5) + (7.5 2 2.5) + (10 1 0.5) + (10 2 0.5) + (10 1 2.5) + (10 2 2.5) + (11.5 0.5 -0.5) + (11.5 2.5 -0.5) + (11.5 0.5 3.5) + (11.5 2.5 3.5) + (16 0.5 -0.5) + (16 2.5 -0.5) + (16 0.5 3.5) + (16 2.5 3.5) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) sectionA (16 15 15) simpleGrading (1 1 1) + hex (1 8 9 2 5 10 11 6) sectionA (16 15 15) simpleGrading (0.4 1 1) + hex (8 12 13 9 10 14 15 11) sectionB (16 15 15) simpleGrading (1 1 1) + hex (12 16 17 13 14 18 19 15) sectionC (11 15 15) simpleGrading (2.8 1 1) + hex (16 20 21 17 18 22 23 19) sectionC (16 15 15) simpleGrading (1 1 1) +); + +edges +( + simpleSpline 12 16 + ( + (10.375 0.875 0.4) + (10.75 0.75 0) + (11.125 0.625 -0.4) + ) + + simpleSpline 14 18 + ( + (10.375 0.875 2.6) + (10.75 0.75 3) + (11.125 0.625 3.4) + ) + + simpleSpline 15 19 + ( + (10.375 2.125 2.6) + (10.75 2.25 3) + (11.125 2.375 3.4) + ) + + simpleSpline 13 17 + ( + (10.375 2.125 0.4) + (10.75 2.25 0) + (11.125 2.375 -0.4) + ) +); + +patches +( + patch + sectionAEnd + ( + (0 4 7 3) + ) + + patch + sectionCEnd + ( + (20 21 23 22) + ) + + wall + front + ( + (0 1 5 4) + (1 8 10 5) + (8 12 14 10) + (12 16 18 14) + (16 20 22 18) + ) + + wall + back + ( + (2 3 7 6) + (2 6 11 9) + (9 11 15 13) + (13 15 19 17) + (17 19 23 21) + ) + + wall + top + ( + (4 5 6 7) + (5 10 11 6) + (10 14 15 11) + (14 18 19 15) + (18 22 23 19) + ) + + wall + bottom + ( + (0 3 2 1) + (1 2 9 8) + (8 9 13 12) + (12 13 17 16) + (16 17 21 20) + ) +); + +mergePatchPairs +( +); + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/nanoNozzle/system/controlDict b/tutorials/gnemdFoam/nanoNozzle/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..9149e8779f7fef93eed052443f147a9a5f89fc45 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/controlDict @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object controlDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 3e-11; + +deltaT 1e-14; + +writeControl runTime; + +writeInterval 1e-12; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 12; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +// ************************************************************************* // diff --git a/tutorials/mdEquilibrationFoam/periodicCube/system/decomposeParDict b/tutorials/gnemdFoam/nanoNozzle/system/decomposeParDict similarity index 91% rename from tutorials/mdEquilibrationFoam/periodicCube/system/decomposeParDict rename to tutorials/gnemdFoam/nanoNozzle/system/decomposeParDict index 1678f7f1b22a8fa0690862420bcb8668cb274c98..d99d81ea7ee08ddef9b5602c196622fb3c84b525 100644 --- a/tutorials/mdEquilibrationFoam/periodicCube/system/decomposeParDict +++ b/tutorials/gnemdFoam/nanoNozzle/system/decomposeParDict @@ -23,13 +23,13 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -numberOfSubdomains 2; +numberOfSubdomains 4; -method simple; +method metis; simpleCoeffs { - n (2 1 1); + n (4 1 1); delta 0.001; } @@ -47,11 +47,7 @@ metisCoeffs 1 1 1 - 4 1 - 5 - 1 - 2 ); } diff --git a/tutorials/gnemdFoam/nanoNozzle/system/fvSchemes b/tutorials/gnemdFoam/nanoNozzle/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..8504e0fd45187a8698a014b6428e758d6b408424 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/fvSchemes @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSchemes; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nu,U) Gauss linear corrected; + laplacian(1|A(U),p) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; + interpolate(HbyA) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p; +} + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/nanoNozzle/system/fvSolution b/tutorials/gnemdFoam/nanoNozzle/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..c85c7b791bf5766697f1b4c93699a69792329295 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/fvSolution @@ -0,0 +1,40 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object fvSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p ICCG 1e-06 0; + U BICCG 1e-05 0; +} + +PISO +{ + nCorrectors 2; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/tutorials/gnemdFoam/nanoNozzle/system/mdSolution b/tutorials/gnemdFoam/nanoNozzle/system/mdSolution new file mode 100644 index 0000000000000000000000000000000000000000..c72bb260facf92c9cacb0cc02e4f7679d0e35926 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/mdSolution @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object mdSolution; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +integrationMethod verletLeapfrog; + +potentialEnergyLimit 5.256e-20; + +// ************************************************************************* // \ No newline at end of file diff --git a/tutorials/gnemdFoam/nanoNozzle/system/molConfigDict b/tutorials/gnemdFoam/nanoNozzle/system/molConfigDict new file mode 100644 index 0000000000000000000000000000000000000000..5649765dda3d59ef30ff2f9ef0998dbe1bad6fa0 --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/molConfigDict @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object molConfigDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Subdictionaries specifying the contents of zones - for the moment have a single species in each block - move to mixed + +// Euler angles, expressed in degrees as phi, theta, psi, see http://mathworld.wolfram.com/EulerAngles.html + +sectionA +{ + massDensity 1220.0; + temperature 300.0; + velocityDistribution maxwellian; + bulkVelocity (-250.0 0.0 0.0); + id Ar; + mass 6.63352033e-26; + latticeStructure SC; + anchor (0.0 0.0 0.0); + anchorSpecifies molecule; + tethered no; + orientationAngles (0 0 0); +} + +sectionB +{ + massDensity 1220.0; + temperature 300.0; + velocityDistribution maxwellian; + bulkVelocity (-250.0 0.0 0.0); + id Ne; + mass 3.350917e-26; + latticeStructure SC; + anchor (0.0 0.0 0.0); + anchorSpecifies molecule; + tethered no; + orientationAngles (0 0 0); +} + +sectionC +{ + massDensity 1220.0; + temperature 300.0; + velocityDistribution maxwellian; + bulkVelocity (-250.0 0.0 0.0); + id Ar; + mass 6.63352033e-26; + latticeStructure SC; + anchor (0.0 0.0 0.0); + anchorSpecifies molecule; + tethered no; + orientationAngles (0 0 0); +} + +// ************************************************************************* // + \ No newline at end of file diff --git a/tutorials/gnemdFoam/nanoNozzle/system/potentialDict b/tutorials/gnemdFoam/nanoNozzle/system/potentialDict new file mode 100644 index 0000000000000000000000000000000000000000..3de4c5985896d6f86776e2157a6420af31e5c97a --- /dev/null +++ b/tutorials/gnemdFoam/nanoNozzle/system/potentialDict @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + + root ""; + case ""; + instance ""; + local ""; + + class dictionary; + object potentials; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Subdictionaries specifying types of intermolecular potential. +// Sub-sub dictionaries specify the potentials themselves. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Removal order + +// This is the order in which to remove overlapping pairs if more than one +// type of molecule is present. The most valuable molecule type is at the +// right hand end, the molecule that will be removed 1st is 1st on the list. +// Not all types need to be present, a molecule that is not present is +// automatically less valuable than any on the list. For molecules of the +// same type there is no control over which is removed. + +removalOrder 1 (Ar); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Pair potentials + +// If there are r different type of molecules, and a pair force is required +// between all combinations, then there are C = r(r+1)/2 combinations, +// i.e. for r = {1,2,3,4}, C = {1,3,6,10} (sum of triangular numbers). + +// Pair potentials are specified by the combinaition of their ids, +// for MOLA and MOLB, "MOLA-MOLB" OR "MOLB-MOLA" is acceptable +// (strictly OR, both or neither will thrown an error) + +pair +{ + Ar-Ar + { + pairPotential maitlandSmith; + rCut 1.0e-9; + rMin 0.15e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 7.5; + rm 0.3756e-9; + epsilon 1.990108438e-21; + } + energyScalingFunction doubleSigmoid; + doubleSigmoidCoeffs + { + shift1 0.9e-9; + scale1 0.3e11; + shift2 0.97e-9; + scale2 1.2e11; + } + writeTables yes; + } + + Ar-Ne + { + pairPotential maitlandSmith; + rCut 0.9e-9; + rMin 0.1e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 4; + rm 0.348e-9; + epsilon 8.765026657e-22; + } + energyScalingFunction shiftedForce; + writeTables yes; + } + + Ne-Ne + { + pairPotential maitlandSmith; + rCut 0.8e-9; + rMin 0.1e-9; + dr 5e-14; + maitlandSmithCoeffs + { + m 13.0; + gamma 5; + rm 0.30739e-9; + epsilon 5.813260729e-22; + } + energyScalingFunction shiftedForce; + writeTables yes; + } +} + + +// ************************************************************************* // diff --git a/tutorials/mdEquilibrationFoam/periodicCube/Allrun b/tutorials/mdEquilibrationFoam/periodicCube/Allrun deleted file mode 100755 index 1960716ea2235f8507db8493beeeb85c24684aa6..0000000000000000000000000000000000000000 --- a/tutorials/mdEquilibrationFoam/periodicCube/Allrun +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Source tutorial run functions -. $WM_PROJECT_DIR/bin/tools/RunFunctions - -# Get application name from directory -application="mdEquilibrationFoam" - -runApplication blockMesh -runApplication molConfig -runApplication $application diff --git a/tutorials/mdEquilibrationFoam/periodicCube/system/controlDict b/tutorials/mdEquilibrationFoam/periodicCube/system/controlDict index c3205b3ad1467e74f631cddba96f1537124cf22b..d46f5cef1ed0a157e8d8a64dadc29b89dfcb5018 100644 --- a/tutorials/mdEquilibrationFoam/periodicCube/system/controlDict +++ b/tutorials/mdEquilibrationFoam/periodicCube/system/controlDict @@ -34,7 +34,7 @@ deltaT 1e-14; writeControl runTime; -writeInterval 5e-11; +writeInterval 5e-12; purgeWrite 0; diff --git a/tutorials/mdEquilibrationFoam/periodicCube/system/mdSolution b/tutorials/mdEquilibrationFoam/periodicCube/system/mdSolution index 681963175de629fcb9ebab3a3a3ebd0b5893e716..c72bb260facf92c9cacb0cc02e4f7679d0e35926 100644 --- a/tutorials/mdEquilibrationFoam/periodicCube/system/mdSolution +++ b/tutorials/mdEquilibrationFoam/periodicCube/system/mdSolution @@ -26,6 +26,4 @@ integrationMethod verletLeapfrog; potentialEnergyLimit 5.256e-20; -guardRadius 0; - // ************************************************************************* // \ No newline at end of file diff --git a/tutorials/mdEquilibrationFoam/periodicCube/system/potentialDict b/tutorials/mdEquilibrationFoam/periodicCube/system/potentialDict index 78fa1c77465f435999e8df2b11c6388c64fa3b6b..f4d27d298b0f82c26d5dd86fc1be3a153f1fa708 100644 --- a/tutorials/mdEquilibrationFoam/periodicCube/system/potentialDict +++ b/tutorials/mdEquilibrationFoam/periodicCube/system/potentialDict @@ -22,7 +22,7 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Subdictionaries specifying types of intermoleular potential. +// Subdictionaries specifying types of intermolecular potential. // Sub-sub dictionaries specify the potentials themselves. // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,14 +52,24 @@ pair { Ar-Ar { - potentialType maitlandSmithTabulated; - m 13.0; - gamma 7.5; - rm 0.3756e-9; - epsilon 1.990108438e-21; - rCut 1.0e-9; + pairPotential azizChen; + rCut 1.2e-9; rMin 0.15e-9; dr 2e-14; + azizChenCoeffs + { + epsilon 1.97742255e-21; + rm 3.759e-10; + A 0.9502720e7; + alpha 16.345655; + C6 1.0914254; + C8 0.6002595; + C10 0.3700113; + D 1.4; + gamma 2.0; + } + energyScalingFunction noScaling; + writeTables yes; } } @@ -70,8 +80,12 @@ tether { Ar { - potentialType harmonicSpring; - springConstant 0.0277; + tetherPotential restrainedHarmonicSpring; + restrainedHarmonicSpringCoeffs + { + springConstant 0.0277; + rR 1.2e-9; + } } } diff --git a/tutorials/rhoSonicFoam/shockTube/system/sampleDict b/tutorials/rhoSonicFoam/shockTube/system/sampleDict index 7c59b17bef976ce75dd5332ad5864b66ad030c28..95b819ee7496589ac0237a71a1c7bad9789fe3fd 100644 --- a/tutorials/rhoSonicFoam/shockTube/system/sampleDict +++ b/tutorials/rhoSonicFoam/shockTube/system/sampleDict @@ -25,13 +25,14 @@ FoamFile interpolationScheme cellPoint; -writeFormat raw; +setFormat raw; -sampleSets +sets ( - uniform + data { - name data; + type uniform; + axis x; start (-4.995 0 0); end (4.995 0 0); @@ -39,6 +40,9 @@ sampleSets } ); +surfaces +(); + fields ( T diff --git a/tutorials/solidDisplacementFoam/plateHole/system/sampleDict b/tutorials/solidDisplacementFoam/plateHole/system/sampleDict index adf21bd6cf68ae63e3563628f966aaf7cf248610..056f0894fff493ce56989f8246ef780cc677197e 100644 --- a/tutorials/solidDisplacementFoam/plateHole/system/sampleDict +++ b/tutorials/solidDisplacementFoam/plateHole/system/sampleDict @@ -25,13 +25,13 @@ FoamFile interpolationScheme cellPoint; -writeFormat raw; +setFormat raw; -sampleSets +sets ( - uniform + leftPatch { - name leftPatch; + type uniform; axis y; start (0 0.5 0.25); end (0 2 0.25); @@ -39,10 +39,12 @@ sampleSets } ); -fields +surfaces +(); + +fields ( sigmaxx ); - // ************************************************************************* //